Changeset 95673 in webkit


Ignore:
Timestamp:
Sep 21, 2011 3:20:04 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 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.

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r95671 r95673  
     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 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
    1222011-09-21  Abhishek Arya  <inferno@chromium.org>
    223
  • trunk/Source/WebCore/page/mac/EventHandlerMac.mm

    r95226 r95673  
    237237    ASSERT(!m_sendingEventToSubview);
    238238    m_sendingEventToSubview = true;
    239     NSView *outerView = widget->getOuterView();
    240     widget->beforeMouseDown(outerView, widget.get());
     239
    241240    [view mouseDown:currentNSEvent()];
    242     widget->afterMouseDown(outerView, widget.get());
    243     m_sendingEventToSubview = false;
    244241   
    245242    if (!wasDeferringLoading)
  • trunk/Source/WebCore/platform/Widget.h

    r95555 r95673  
    210210    NSView* getOuterView() const;
    211211
    212     static void beforeMouseDown(NSView*, Widget*);
    213     static void afterMouseDown(NSView*, Widget*);
    214 
    215212    void removeFromSuperview();
    216213#endif
  • trunk/Source/WebCore/platform/mac/WidgetMac.mm

    r87989 r95673  
    6767    }
    6868
    69     bool mustStayInWindow;
    70     bool removeFromSuperviewSoon;
    7169    NSRect previousVisibleRect;
    7270};
     
    9290{
    9391    init(view);
    94     m_data->mustStayInWindow = false;
    95     m_data->removeFromSuperviewSoon = false;
    9692}
    9793
     
    325321void Widget::removeFromSuperview()
    326322{
    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;
    358326}
    359327
  • trunk/Source/WebCore/rendering/RenderWidget.cpp

    r93287 r95673  
    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.