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
+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.
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)
#if PLATFORM(MAC)
NSView* getOuterView() const;
- static void beforeMouseDown(NSView*, Widget*);
- static void afterMouseDown(NSView*, Widget*);
-
void removeFromSuperview();
#endif
{
}
- bool mustStayInWindow;
- bool removeFromSuperviewSoon;
NSRect previousVisibleRect;
};
: m_data(new WidgetPrivate)
{
init(view);
- m_data->mustStayInWindow = false;
- m_data->removeFromSuperviewSoon = false;
}
Widget::~Widget()
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.
return *staticWidgetRendererMap;
}
-static size_t widgetHierarchyUpdateSuspendCount;
+static unsigned widgetHierarchyUpdateSuspendCount;
typedef HashMap<RefPtr<Widget>, FrameView*> WidgetToParentMap;