Changeset 56429 in webkit
- Timestamp:
- Mar 23, 2010 5:27:12 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r56428 r56429 1 2010-03-23 Dan Bernstein <mitz@apple.com> 2 3 Reviewed by John Sullivan. 4 5 WebCore part of 6 <rdar://problem/7197736> Plug-in clip rect does not update when overflow 7 clip changes 8 https://bugs.webkit.org/show_bug.cgi?id=36479. 9 10 * manual-tests/plugin-visible-rect-change.html: Added. 11 * platform/mac/WidgetMac.mm: 12 (WebCore::WidgetPrivate::WidgetPrivate): Added previousVisibleRect. 13 (WebCore::Widget::setFrameRect): If the visible rect changed but the 14 frame rect did not, send a -visibleRectDidChange message to the view, 15 if it responds to it. 16 (WebCore::Widget::releasePlatformWidget): Reset previousVisibleRect. 17 * rendering/RenderWidget.cpp: 18 (WebCore::RenderWidget::setWidgetGeometry): Track changes to the clip rect 19 imposed by the enclosing layer. Call Widget::setFrameRect when it changes, 20 even if the frame rect did not. 21 * rendering/RenderWidget.h: 22 (WebCore::RenderWidget::windowClipRect): Added this accessor. 23 1 24 2010-03-23 Simon Fraser <simon.fraser@apple.com> 2 25 -
trunk/WebCore/platform/mac/WidgetMac.mm
r53637 r56429 57 57 @end 58 58 59 @interface NSView (Widget) 60 - (void)visibleRectDidChange; 61 @end 62 59 63 namespace WebCore { 60 64 61 65 class WidgetPrivate { 62 66 public: 67 WidgetPrivate() 68 : previousVisibleRect(NSZeroRect) 69 { 70 } 71 63 72 bool mustStayInWindow; 64 73 bool removeFromSuperviewSoon; 74 NSRect previousVisibleRect; 65 75 }; 66 76 … … 163 173 return; 164 174 175 NSRect visibleRect = [v visibleRect]; 165 176 NSRect f = rect; 166 177 if (!NSEqualRects(f, [v frame])) { 167 178 [v setFrame:f]; 168 [v setNeedsDisplay: NO]; 169 } 179 [v setNeedsDisplay:NO]; 180 } else if (!NSEqualRects(visibleRect, m_data->previousVisibleRect) && [v respondsToSelector:@selector(visibleRectDidChange)]) 181 [v visibleRectDidChange]; 182 183 m_data->previousVisibleRect = visibleRect; 170 184 END_BLOCK_OBJC_EXCEPTIONS; 171 185 } … … 340 354 { 341 355 HardRelease(m_widget); 356 m_data->previousVisibleRect = NSZeroRect; 342 357 } 343 358 -
trunk/WebCore/rendering/RenderWidget.cpp
r55381 r56429 152 152 { 153 153 ASSERT(!widgetHierarchyUpdateSuspendCount); 154 if (!node() || m_widget->frameRect() == frame)154 if (!node()) 155 155 return false; 156 157 IntRect windowClipRect = m_frameView ? m_frameView->windowClipRectForLayer(enclosingLayer(), true) : IntRect(); 158 bool clipChanged = m_windowClipRect != windowClipRect; 159 bool boundsChanged = m_widget->frameRect() != frame; 160 161 if (!boundsChanged && !clipChanged) 162 return false; 163 164 m_windowClipRect = windowClipRect; 156 165 157 166 RenderWidgetProtector protector(this); 158 167 RefPtr<Node> protectedNode(node()); 159 168 m_widget->setFrameRect(frame); 160 return true;169 return boundsChanged; 161 170 } 162 171 -
trunk/WebCore/rendering/RenderWidget.h
r56352 r56429 41 41 void updateWidgetPosition(); 42 42 void widgetPositionsUpdated(); 43 IntRect windowClipRect() const { return m_windowClipRect; } 43 44 44 45 void showSubstituteImage(PassRefPtr<Image>); … … 75 76 RefPtr<Image> m_substituteImage; 76 77 FrameView* m_frameView; 78 IntRect m_windowClipRect; 77 79 int m_refCount; 78 80 }; -
trunk/WebKit/mac/ChangeLog
r56362 r56429 1 2010-03-23 Dan Bernstein <mitz@apple.com> 2 3 Reviewed by John Sullivan. 4 5 WebKit part of 6 <rdar://problem/7197736> Plug-in clip rect does not update when overflow 7 clip changes 8 https://bugs.webkit.org/show_bug.cgi?id=36479. 9 10 * Plugins/Hosted/WebHostedNetscapePluginView.mm: 11 (-[WebHostedNetscapePluginView visibleRectDidChange]): Added. Calls 12 WKSyncSurfaceToView(). 13 * Plugins/WebBaseNetscapePluginView.h: 14 * Plugins/WebBaseNetscapePluginView.mm: 15 (-[WebBaseNetscapePluginView _windowClipRect]): Changed to use Widget::windowClipRect(). 16 (-[WebBaseNetscapePluginView visibleRectDidChange]): Added. Invokes -renewGState. 17 1 18 2010-03-22 Kevin Decker <kdecker@apple.com> 2 19 -
trunk/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
r56079 r56429 367 367 } 368 368 369 - (void)visibleRectDidChange 370 { 371 [super visibleRectDidChange]; 372 WKSyncSurfaceToView(self); 373 } 369 374 370 375 - (void)drawRect:(NSRect)rect -
trunk/WebKit/mac/Plugins/WebBaseNetscapePluginView.h
r55824 r56429 48 48 49 49 class WebHaltablePlugin; 50 51 // Also declared in WebCore/WidgetMac.mm 52 @interface NSView (Widget) 53 - (void)visibleRectDidChange; 54 @end 50 55 51 56 @interface WebBaseNetscapePluginView : NSView -
trunk/WebKit/mac/Plugins/WebBaseNetscapePluginView.mm
r55824 r56429 338 338 { 339 339 RenderObject* renderer = _element->renderer(); 340 341 if (renderer && renderer->view()) { 342 if (FrameView* frameView = renderer->view()->frameView()) 343 return frameView->windowClipRectForLayer(renderer->enclosingLayer(), true); 344 } 345 346 return NSZeroRect; 340 if (!renderer || !renderer->view()) 341 return NSZeroRect; 342 343 return toRenderWidget(renderer)->windowClipRect(); 347 344 } 348 345 … … 352 349 // that clip now. 353 350 return NSIntersectionRect([self convertRect:[self _windowClipRect] fromView:nil], [super visibleRect]); 351 } 352 353 - (void)visibleRectDidChange 354 { 355 [self renewGState]; 354 356 } 355 357 -
trunk/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm
r49884 r56429 271 271 NSMutableArray* WebContextMenuClient::getCustomMenuFromDefaultItems(ContextMenu* defaultMenu) 272 272 { 273 id delegate = [m_webView UIDelegate];273 // id delegate = [m_webView UIDelegate]; 274 274 SEL selector = @selector(webView:contextMenuItemsForElement:defaultMenuItems:); 275 if (![delegate respondsToSelector:selector])275 // if (![delegate respondsToSelector:selector]) 276 276 return defaultMenu->platformDescription(); 277 277 -
trunk/WebKitLibraries/ChangeLog
r56095 r56429 1 2010-03-23 Dan Bernstein <mitz@apple.com> 2 3 Reviewed by John Sullivan. 4 5 WebKitSystemInterface part of 6 <rdar://problem/7197736> Plug-in clip rect does not update when overflow 7 clip changes 8 https://bugs.webkit.org/show_bug.cgi?id=36479. 9 10 * WebKitSystemInterface.h: Added WKSyncSurfaceToView(). 11 * libWebKitSystemInterfaceSnowLeopard.a: Updated 12 1 13 2010-03-16 Dan Bernstein <mitz@apple.com> 2 14 -
trunk/WebKitLibraries/WebKitSystemInterface.h
r56012 r56429 295 295 #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) 296 296 NSMutableArray *WKNoteOpenPanelFiles(NSArray *paths); 297 void WKSyncSurfaceToView(NSView *view); 297 298 #endif 298 299
Note: See TracChangeset
for help on using the changeset viewer.