Changeset 95749 in webkit


Ignore:
Timestamp:
Sep 22, 2011 1:37:34 PM (13 years ago)
Author:
andersca@apple.com
Message:

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.

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r95745 r95749  
     12011-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 Darin Adler.
     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        This patch was rolled out in r95743 because it broke a bunch of tests. The patch accidentally removed setting back
     13        m_sendingEventToSubview to false.
     14
     15        * page/mac/EventHandlerMac.mm:
     16        (WebCore::EventHandler::passMouseDownEventToWidget):
     17        * platform/Widget.h:
     18        * platform/mac/WidgetMac.mm:
     19        (WebCore::Widget::Widget):
     20        (WebCore::Widget::removeFromSuperview):
     21
     22        * rendering/RenderWidget.cpp:
     23        Change widgetHierarchyUpdateSuspendCount to be an unsigned integer instead of a size_t.
     24
    1252011-09-22  Sheriff Bot  <webkit.review.bot@gmail.com>
    226
  • trunk/Source/WebCore/page/mac/EventHandlerMac.mm

    r95743 r95749  
    228228    ASSERT(!m_sendingEventToSubview);
    229229    m_sendingEventToSubview = true;
    230     NSView *outerView = widget->getOuterView();
    231     widget->beforeMouseDown(outerView, widget.get());
    232230
    233231    RenderWidget::suspendWidgetHierarchyUpdates();
     
    235233    RenderWidget::resumeWidgetHierarchyUpdates();
    236234
    237     widget->afterMouseDown(outerView, widget.get());
    238235    m_sendingEventToSubview = false;
    239236   
  • trunk/Source/WebCore/platform/Widget.h

    r95743 r95749  
    209209    NSView* getOuterView() const;
    210210
    211     static void beforeMouseDown(NSView*, Widget*);
    212     static void afterMouseDown(NSView*, Widget*);
    213 
    214211    void removeFromSuperview();
    215212#endif
  • trunk/Source/WebCore/platform/mac/WidgetMac.mm

    r95743 r95749  
    6666    }
    6767
    68     bool mustStayInWindow;
    69     bool removeFromSuperviewSoon;
    7068    NSRect previousVisibleRect;
    7169};
     
    9189{
    9290    init(view);
    93     m_data->mustStayInWindow = false;
    94     m_data->removeFromSuperviewSoon = false;
    9591}
    9692
     
    277273void Widget::removeFromSuperview()
    278274{
    279     if (m_data->mustStayInWindow)
    280         m_data->removeFromSuperviewSoon = true;
    281     else {
    282         m_data->removeFromSuperviewSoon = false;
    283         BEGIN_BLOCK_OBJC_EXCEPTIONS;
    284         safeRemoveFromSuperview(getOuterView());
    285         END_BLOCK_OBJC_EXCEPTIONS;
    286     }
    287 }
    288 
    289 void Widget::beforeMouseDown(NSView *unusedView, Widget* widget)
    290 {
    291     if (widget) {
    292         ASSERT_UNUSED(unusedView, unusedView == widget->getOuterView());
    293         ASSERT(!widget->m_data->mustStayInWindow);
    294         widget->m_data->mustStayInWindow = true;
    295     }
    296 }
    297 
    298 void Widget::afterMouseDown(NSView *view, Widget* widget)
    299 {
    300     if (!widget) {
    301         BEGIN_BLOCK_OBJC_EXCEPTIONS;
    302         safeRemoveFromSuperview(view);
    303         END_BLOCK_OBJC_EXCEPTIONS;
    304     } else {
    305         ASSERT(widget->m_data->mustStayInWindow);
    306         widget->m_data->mustStayInWindow = false;
    307         if (widget->m_data->removeFromSuperviewSoon)
    308             widget->removeFromSuperview();
    309     }
     275    BEGIN_BLOCK_OBJC_EXCEPTIONS;
     276    safeRemoveFromSuperview(getOuterView());
     277    END_BLOCK_OBJC_EXCEPTIONS;
    310278}
    311279
  • trunk/Source/WebCore/rendering/RenderWidget.cpp

    r95743 r95749  
    4848}
    4949
    50 static size_t widgetHierarchyUpdateSuspendCount;
     50static unsigned widgetHierarchyUpdateSuspendCount;
    5151
    5252typedef HashMap<RefPtr<Widget>, FrameView*> WidgetToParentMap;
Note: See TracChangeset for help on using the changeset viewer.