Title: [95673] trunk/Source/WebCore
Revision
95673
Author
ander...@apple.com
Date
2011-09-21 15:20:04 -0700 (Wed, 21 Sep 2011)

Log Message

Remove Widget::beforeMouseDown and Widget::afterMouseDown
https://bugs.webkit.org/show_bug.cgi?id=68570

Reviewed by Sam Weinig.

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.

* 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.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (95672 => 95673)


--- trunk/Source/WebCore/ChangeLog	2011-09-21 22:17:06 UTC (rev 95672)
+++ trunk/Source/WebCore/ChangeLog	2011-09-21 22:20:04 UTC (rev 95673)
@@ -1,3 +1,24 @@
+2011-09-21  Anders Carlsson  <ander...@apple.com>
+
+        Remove Widget::beforeMouseDown and Widget::afterMouseDown
+        https://bugs.webkit.org/show_bug.cgi?id=68570
+
+        Reviewed by Sam Weinig.
+
+        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.
+
+        * 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-21  Abhishek Arya  <infe...@chromium.org>
 
         Not use anonymousContainer on beforeChild calculation

Modified: trunk/Source/WebCore/page/mac/EventHandlerMac.mm (95672 => 95673)


--- trunk/Source/WebCore/page/mac/EventHandlerMac.mm	2011-09-21 22:17:06 UTC (rev 95672)
+++ trunk/Source/WebCore/page/mac/EventHandlerMac.mm	2011-09-21 22:20:04 UTC (rev 95673)
@@ -236,11 +236,8 @@
 
     ASSERT(!m_sendingEventToSubview);
     m_sendingEventToSubview = true;
-    NSView *outerView = widget->getOuterView();
-    widget->beforeMouseDown(outerView, widget.get());
+
     [view mouseDown:currentNSEvent()];
-    widget->afterMouseDown(outerView, widget.get());
-    m_sendingEventToSubview = false;
     
     if (!wasDeferringLoading)
         page->setDefersLoading(false);

Modified: trunk/Source/WebCore/platform/Widget.h (95672 => 95673)


--- trunk/Source/WebCore/platform/Widget.h	2011-09-21 22:17:06 UTC (rev 95672)
+++ trunk/Source/WebCore/platform/Widget.h	2011-09-21 22:20:04 UTC (rev 95673)
@@ -209,9 +209,6 @@
 #if PLATFORM(MAC)
     NSView* getOuterView() const;
 
-    static void beforeMouseDown(NSView*, Widget*);
-    static void afterMouseDown(NSView*, Widget*);
-
     void removeFromSuperview();
 #endif
 

Modified: trunk/Source/WebCore/platform/mac/WidgetMac.mm (95672 => 95673)


--- trunk/Source/WebCore/platform/mac/WidgetMac.mm	2011-09-21 22:17:06 UTC (rev 95672)
+++ trunk/Source/WebCore/platform/mac/WidgetMac.mm	2011-09-21 22:20:04 UTC (rev 95673)
@@ -66,8 +66,6 @@
     {
     }
 
-    bool mustStayInWindow;
-    bool removeFromSuperviewSoon;
     NSRect previousVisibleRect;
 };
 
@@ -91,8 +89,6 @@
     : m_data(new WidgetPrivate)
 {
     init(view);
-    m_data->mustStayInWindow = false;
-    m_data->removeFromSuperviewSoon = false;
 }
 
 Widget::~Widget()
@@ -324,39 +320,11 @@
 
 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;
-    }
+    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();
-    }
-}
-
 // These are here to deal with flipped coords on Mac.
 IntRect Widget::convertFromRootToContainingWindow(const Widget* rootWidget, const IntRect& rect)
 {

Modified: trunk/Source/WebCore/rendering/RenderWidget.cpp (95672 => 95673)


--- trunk/Source/WebCore/rendering/RenderWidget.cpp	2011-09-21 22:17:06 UTC (rev 95672)
+++ trunk/Source/WebCore/rendering/RenderWidget.cpp	2011-09-21 22:20:04 UTC (rev 95673)
@@ -47,7 +47,7 @@
     return *staticWidgetRendererMap;
 }
 
-static size_t widgetHierarchyUpdateSuspendCount;
+static unsigned widgetHierarchyUpdateSuspendCount;
 
 typedef HashMap<RefPtr<Widget>, FrameView*> WidgetToParentMap;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to