Changeset 95673 in webkit
- Timestamp:
- Sep 21, 2011 3:20:04 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r95671 r95673 1 2011-09-21 Anders Carlsson <andersca@apple.com> 2 3 Remove Widget::beforeMouseDown and Widget::afterMouseDown 4 https://bugs.webkit.org/show_bug.cgi?id=68570 5 6 Reviewed by Sam Weinig. 7 8 These two member functions were originally added to avoid crashes due to removing NSViews while they were 9 being tracked by AppKit. Since they were added, we've moved away from NSViews for form controls, and the bugs in 10 AppKit that lead to crashes have been fixed. 11 12 * page/mac/EventHandlerMac.mm: 13 (WebCore::EventHandler::passMouseDownEventToWidget): 14 * platform/Widget.h: 15 * platform/mac/WidgetMac.mm: 16 (WebCore::Widget::Widget): 17 (WebCore::Widget::removeFromSuperview): 18 19 * rendering/RenderWidget.cpp: 20 Change widgetHierarchyUpdateSuspendCount to be an unsigned integer instead of a size_t. 21 1 22 2011-09-21 Abhishek Arya <inferno@chromium.org> 2 23 -
trunk/Source/WebCore/page/mac/EventHandlerMac.mm
r95226 r95673 237 237 ASSERT(!m_sendingEventToSubview); 238 238 m_sendingEventToSubview = true; 239 NSView *outerView = widget->getOuterView(); 240 widget->beforeMouseDown(outerView, widget.get()); 239 241 240 [view mouseDown:currentNSEvent()]; 242 widget->afterMouseDown(outerView, widget.get());243 m_sendingEventToSubview = false;244 241 245 242 if (!wasDeferringLoading) -
trunk/Source/WebCore/platform/Widget.h
r95555 r95673 210 210 NSView* getOuterView() const; 211 211 212 static void beforeMouseDown(NSView*, Widget*);213 static void afterMouseDown(NSView*, Widget*);214 215 212 void removeFromSuperview(); 216 213 #endif -
trunk/Source/WebCore/platform/mac/WidgetMac.mm
r87989 r95673 67 67 } 68 68 69 bool mustStayInWindow;70 bool removeFromSuperviewSoon;71 69 NSRect previousVisibleRect; 72 70 }; … … 92 90 { 93 91 init(view); 94 m_data->mustStayInWindow = false;95 m_data->removeFromSuperviewSoon = false;96 92 } 97 93 … … 325 321 void Widget::removeFromSuperview() 326 322 { 327 if (m_data->mustStayInWindow) 328 m_data->removeFromSuperviewSoon = true; 329 else { 330 m_data->removeFromSuperviewSoon = false; 331 BEGIN_BLOCK_OBJC_EXCEPTIONS; 332 safeRemoveFromSuperview(getOuterView()); 333 END_BLOCK_OBJC_EXCEPTIONS; 334 } 335 } 336 337 void Widget::beforeMouseDown(NSView *unusedView, Widget* widget) 338 { 339 if (widget) { 340 ASSERT_UNUSED(unusedView, unusedView == widget->getOuterView()); 341 ASSERT(!widget->m_data->mustStayInWindow); 342 widget->m_data->mustStayInWindow = true; 343 } 344 } 345 346 void Widget::afterMouseDown(NSView *view, Widget* widget) 347 { 348 if (!widget) { 349 BEGIN_BLOCK_OBJC_EXCEPTIONS; 350 safeRemoveFromSuperview(view); 351 END_BLOCK_OBJC_EXCEPTIONS; 352 } else { 353 ASSERT(widget->m_data->mustStayInWindow); 354 widget->m_data->mustStayInWindow = false; 355 if (widget->m_data->removeFromSuperviewSoon) 356 widget->removeFromSuperview(); 357 } 323 BEGIN_BLOCK_OBJC_EXCEPTIONS; 324 safeRemoveFromSuperview(getOuterView()); 325 END_BLOCK_OBJC_EXCEPTIONS; 358 326 } 359 327 -
trunk/Source/WebCore/rendering/RenderWidget.cpp
r93287 r95673 48 48 } 49 49 50 static size_twidgetHierarchyUpdateSuspendCount;50 static unsigned widgetHierarchyUpdateSuspendCount; 51 51 52 52 typedef HashMap<RefPtr<Widget>, FrameView*> WidgetToParentMap;
Note: See TracChangeset
for help on using the changeset viewer.