Remove Widget::beforeMouseDown and Widget::afterMouseDown
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Sep 2011 20:37:34 +0000 (20:37 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 22 Sep 2011 20:37:34 +0000 (20:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=68570

Reviewed by Darin Adler.

These two member functions were originally added to avoid crashes due to removing NSViews while they were
being tracked by AppKit. Since they were added, we've moved away from NSViews for form controls, and the bugs in
AppKit that lead to crashes have been fixed.

This patch was rolled out in r95743 because it broke a bunch of tests. The patch accidentally removed setting back
m_sendingEventToSubview to false.

* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::passMouseDownEventToWidget):
* platform/Widget.h:
* platform/mac/WidgetMac.mm:
(WebCore::Widget::Widget):
(WebCore::Widget::removeFromSuperview):

* rendering/RenderWidget.cpp:
Change widgetHierarchyUpdateSuspendCount to be an unsigned integer instead of a size_t.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95749 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/page/mac/EventHandlerMac.mm
Source/WebCore/platform/Widget.h
Source/WebCore/platform/mac/WidgetMac.mm
Source/WebCore/rendering/RenderWidget.cpp

index e5526f1..4925361 100644 (file)
@@ -1,3 +1,27 @@
+2011-09-21  Anders Carlsson  <andersca@apple.com>
+
+        Remove Widget::beforeMouseDown and Widget::afterMouseDown
+        https://bugs.webkit.org/show_bug.cgi?id=68570
+
+        Reviewed by Darin Adler.
+
+        These two member functions were originally added to avoid crashes due to removing NSViews while they were
+        being tracked by AppKit. Since they were added, we've moved away from NSViews for form controls, and the bugs in
+        AppKit that lead to crashes have been fixed.
+
+        This patch was rolled out in r95743 because it broke a bunch of tests. The patch accidentally removed setting back
+        m_sendingEventToSubview to false.
+
+        * page/mac/EventHandlerMac.mm:
+        (WebCore::EventHandler::passMouseDownEventToWidget):
+        * platform/Widget.h:
+        * platform/mac/WidgetMac.mm:
+        (WebCore::Widget::Widget):
+        (WebCore::Widget::removeFromSuperview):
+
+        * rendering/RenderWidget.cpp:
+        Change widgetHierarchyUpdateSuspendCount to be an unsigned integer instead of a size_t.
+
 2011-09-22  Sheriff Bot  <webkit.review.bot@gmail.com>
 
         Unreviewed, rolling out r95335 and r95645.
index 94c8769..8dba56f 100644 (file)
@@ -227,14 +227,11 @@ bool EventHandler::passMouseDownEventToWidget(Widget* pWidget)
 
     ASSERT(!m_sendingEventToSubview);
     m_sendingEventToSubview = true;
-    NSView *outerView = widget->getOuterView();
-    widget->beforeMouseDown(outerView, widget.get());
 
     RenderWidget::suspendWidgetHierarchyUpdates();
     [view mouseDown:currentNSEvent()];
     RenderWidget::resumeWidgetHierarchyUpdates();
 
-    widget->afterMouseDown(outerView, widget.get());
     m_sendingEventToSubview = false;
     
     if (!wasDeferringLoading)
index 24a0d09..46bc3d5 100644 (file)
@@ -208,9 +208,6 @@ public:
 #if PLATFORM(MAC)
     NSView* getOuterView() const;
 
-    static void beforeMouseDown(NSView*, Widget*);
-    static void afterMouseDown(NSView*, Widget*);
-
     void removeFromSuperview();
 #endif
 
index 68ff797..1c08bef 100644 (file)
@@ -65,8 +65,6 @@ public:
     {
     }
 
-    bool mustStayInWindow;
-    bool removeFromSuperviewSoon;
     NSRect previousVisibleRect;
 };
 
@@ -90,8 +88,6 @@ Widget::Widget(NSView *view)
     : m_data(new WidgetPrivate)
 {
     init(view);
-    m_data->mustStayInWindow = false;
-    m_data->removeFromSuperviewSoon = false;
 }
 
 Widget::~Widget()
@@ -276,37 +272,9 @@ void Widget::setIsSelected(bool isSelected)
 
 void Widget::removeFromSuperview()
 {
-    if (m_data->mustStayInWindow)
-        m_data->removeFromSuperviewSoon = true;
-    else {
-        m_data->removeFromSuperviewSoon = false;
-        BEGIN_BLOCK_OBJC_EXCEPTIONS;
-        safeRemoveFromSuperview(getOuterView());
-        END_BLOCK_OBJC_EXCEPTIONS;
-    }
-}
-
-void Widget::beforeMouseDown(NSView *unusedView, Widget* widget)
-{
-    if (widget) {
-        ASSERT_UNUSED(unusedView, unusedView == widget->getOuterView());
-        ASSERT(!widget->m_data->mustStayInWindow);
-        widget->m_data->mustStayInWindow = true;
-    }
-}
-
-void Widget::afterMouseDown(NSView *view, Widget* widget)
-{
-    if (!widget) {
-        BEGIN_BLOCK_OBJC_EXCEPTIONS;
-        safeRemoveFromSuperview(view);
-        END_BLOCK_OBJC_EXCEPTIONS;
-    } else {
-        ASSERT(widget->m_data->mustStayInWindow);
-        widget->m_data->mustStayInWindow = false;
-        if (widget->m_data->removeFromSuperviewSoon)
-            widget->removeFromSuperview();
-    }
+    BEGIN_BLOCK_OBJC_EXCEPTIONS;
+    safeRemoveFromSuperview(getOuterView());
+    END_BLOCK_OBJC_EXCEPTIONS;
 }
 
 // These are here to deal with flipped coords on Mac.
index 5cb7983..7295fe7 100644 (file)
@@ -47,7 +47,7 @@ static HashMap<const Widget*, RenderWidget*>& widgetRendererMap()
     return *staticWidgetRendererMap;
 }
 
-static size_t widgetHierarchyUpdateSuspendCount;
+static unsigned widgetHierarchyUpdateSuspendCount;
 
 typedef HashMap<RefPtr<Widget>, FrameView*> WidgetToParentMap;