Title: [108498] trunk/Source
Revision
108498
Author
[email protected]
Date
2012-02-22 07:10:21 -0800 (Wed, 22 Feb 2012)

Log Message

[Qt] Move QMenu dependant scrollbar context menu handling out of WebCore
https://bugs.webkit.org/show_bug.cgi?id=79233

Reviewed by Kenneth Rohde Christiansen.

Source/WebCore:

Move the code into WebKit/qt/Api/qwebpage.cpp, the only place where it is called from.

* Target.pri: Remove ScrollbarQt.cpp from build.
* platform/Scrollbar.h: Remove Qt-only context menu handling but make moveThum
accessible from the outside.
* platform/qt/ScrollbarQt.cpp: Removed. Not needed anymore.

Source/WebKit/qt:

Move scrollbar context menu handling here, it's the only place where it is
used.

* Api/qwebpage.cpp:
(handleScrollbarContextMenuEvent):
(QWebPage::swallowContextMenuEvent):

Modified Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (108497 => 108498)


--- trunk/Source/WebCore/ChangeLog	2012-02-22 15:07:58 UTC (rev 108497)
+++ trunk/Source/WebCore/ChangeLog	2012-02-22 15:10:21 UTC (rev 108498)
@@ -1,3 +1,17 @@
+2012-02-22  Simon Hausmann  <[email protected]>
+
+        [Qt] Move QMenu dependant scrollbar context menu handling out of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=79233
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Move the code into WebKit/qt/Api/qwebpage.cpp, the only place where it is called from.
+
+        * Target.pri: Remove ScrollbarQt.cpp from build.
+        * platform/Scrollbar.h: Remove Qt-only context menu handling but make moveThum
+        accessible from the outside.
+        * platform/qt/ScrollbarQt.cpp: Removed. Not needed anymore.
+
 2012-02-22  Vsevolod Vlasov  <[email protected]>
 
         Web Inspector: retrieving content for some XHR requests crashes inspected page renderer

Modified: trunk/Source/WebCore/Target.pri (108497 => 108498)


--- trunk/Source/WebCore/Target.pri	2012-02-22 15:07:58 UTC (rev 108497)
+++ trunk/Source/WebCore/Target.pri	2012-02-22 15:10:21 UTC (rev 108498)
@@ -2866,8 +2866,7 @@
     HEADERS += platform/qt/QtStyleOptionWebComboBox.h \
                platform/qt/RenderThemeQStyle.h \
                platform/qt/ScrollbarThemeQt.h
-    SOURCES += platform/qt/RenderThemeQStyle.cpp \
-               platform/qt/ScrollbarQt.cpp
+    SOURCES += platform/qt/RenderThemeQStyle.cpp
 }
 
 contains(DEFINES, ENABLE_SMOOTH_SCROLLING=1) {

Modified: trunk/Source/WebCore/platform/Scrollbar.h (108497 => 108498)


--- trunk/Source/WebCore/platform/Scrollbar.h	2012-02-22 15:07:58 UTC (rev 108497)
+++ trunk/Source/WebCore/platform/Scrollbar.h	2012-02-22 15:10:21 UTC (rev 108498)
@@ -103,13 +103,6 @@
 
     bool mouseDown(const PlatformMouseEvent&);
 
-#if PLATFORM(QT)
-    // For platforms that wish to handle context menu events.
-    // FIXME: This is misplaced.  Normal hit testing should be used to populate a correct
-    // context menu.  There's no reason why the scrollbar should have to do it.
-    bool contextMenu(const PlatformMouseEvent& event);
-#endif
-
     ScrollbarTheme* theme() const { return m_theme; }
 
     virtual void setParent(ScrollView*);
@@ -128,6 +121,8 @@
     virtual IntPoint convertToContainingView(const IntPoint&) const;
     virtual IntPoint convertFromContainingView(const IntPoint&) const;
 
+    void moveThumb(int pos, bool draggingDocument = false);
+
 protected:
     Scrollbar(ScrollableArea*, ScrollbarOrientation, ScrollbarControlSize, ScrollbarTheme* = 0);
 
@@ -142,8 +137,6 @@
     ScrollDirection pressedPartScrollDirection();
     ScrollGranularity pressedPartScrollGranularity();
     
-    void moveThumb(int pos, bool draggingDocument = false);
-
     ScrollableArea* m_scrollableArea;
     ScrollbarOrientation m_orientation;
     ScrollbarControlSize m_controlSize;

Deleted: trunk/Source/WebCore/platform/qt/ScrollbarQt.cpp (108497 => 108498)


--- trunk/Source/WebCore/platform/qt/ScrollbarQt.cpp	2012-02-22 15:07:58 UTC (rev 108497)
+++ trunk/Source/WebCore/platform/qt/ScrollbarQt.cpp	2012-02-22 15:10:21 UTC (rev 108498)
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Staikos Computing Services Inc. <[email protected]>
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "Scrollbar.h"
-
-#include "EventHandler.h"
-#include "Frame.h"
-#include "FrameView.h"
-#include "GraphicsContext.h"
-#include "IntRect.h"
-#include "PlatformMouseEvent.h"
-#include "ScrollableArea.h"
-#include "ScrollbarTheme.h"
-
-#include <QApplication>
-#include <QDebug>
-#include <QMenu>
-#include <QPainter>
-#include <QStyle>
-
-using namespace std;
-
-namespace WebCore {
-
-bool Scrollbar::contextMenu(const PlatformMouseEvent& event)
-{
-#ifndef QT_NO_CONTEXTMENU
-    if (!QApplication::style()->styleHint(QStyle::SH_ScrollBar_ContextMenu))
-        return true;
-
-    bool horizontal = (m_orientation == HorizontalScrollbar);
-
-    QMenu menu;
-    QAction* actScrollHere = menu.addAction(QCoreApplication::translate("QWebPage", "Scroll here"));
-    menu.addSeparator();
-
-    QAction* actScrollTop = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Left edge") : QCoreApplication::translate("QWebPage", "Top"));
-    QAction* actScrollBottom = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Right edge") : QCoreApplication::translate("QWebPage", "Bottom"));
-    menu.addSeparator();
-
-    QAction* actPageUp = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Page left") : QCoreApplication::translate("QWebPage", "Page up"));
-    QAction* actPageDown = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Page right") : QCoreApplication::translate("QWebPage", "Page down"));
-    menu.addSeparator();
-
-    QAction* actScrollUp = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Scroll left") : QCoreApplication::translate("QWebPage", "Scroll up"));
-    QAction* actScrollDown = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Scroll right") : QCoreApplication::translate("QWebPage", "Scroll down"));
-
-    const QPoint globalPos = QPoint(event.globalPosition().x(), event.globalPosition().y());
-    QAction* actionSelected = menu.exec(globalPos);
-
-    if (actionSelected == actScrollHere) {
-        // Set the pressed position to the middle of the thumb so that when we 
-        // do move, the delta will be from the current pixel position of the
-        // thumb to the new position
-        int position = theme()->trackPosition(this) + theme()->thumbPosition(this) + theme()->thumbLength(this) / 2;
-        setPressedPos(position); 
-        const QPoint pos = convertFromContainingWindow(event.position());
-        moveThumb(horizontal ? pos.x() : pos.y());
-    } else if (actionSelected == actScrollTop)
-        scrollableArea()->scroll(horizontal ? ScrollLeft : ScrollUp, ScrollByDocument);
-    else if (actionSelected == actScrollBottom)
-        scrollableArea()->scroll(horizontal ? ScrollRight : ScrollDown, ScrollByDocument);
-    else if (actionSelected == actPageUp)
-        scrollableArea()->scroll(horizontal ? ScrollLeft : ScrollUp, ScrollByPage);
-    else if (actionSelected == actPageDown)
-        scrollableArea()->scroll(horizontal ? ScrollRight : ScrollDown, ScrollByPage);
-    else if (actionSelected == actScrollUp)
-        scrollableArea()->scroll(horizontal ? ScrollLeft : ScrollUp, ScrollByLine);
-    else if (actionSelected == actScrollDown)
-        scrollableArea()->scroll(horizontal ? ScrollRight : ScrollDown, ScrollByLine);
-#endif // QT_NO_CONTEXTMENU
-    return true;
-}
-
-}
-
-// vim: ts=4 sw=4 et

Modified: trunk/Source/WebKit/qt/Api/qwebpage.cpp (108497 => 108498)


--- trunk/Source/WebKit/qt/Api/qwebpage.cpp	2012-02-22 15:07:58 UTC (rev 108497)
+++ trunk/Source/WebKit/qt/Api/qwebpage.cpp	2012-02-22 15:10:21 UTC (rev 108498)
@@ -105,6 +105,7 @@
 #include "RenderThemeQt.h"
 #include "SchemeRegistry.h"
 #include "Scrollbar.h"
+#include "ScrollbarTheme.h"
 #include "SecurityOrigin.h"
 #include "Settings.h"
 #if defined Q_OS_WIN32
@@ -3224,6 +3225,55 @@
 }
 
 #ifndef QT_NO_CONTEXTMENU
+
+static bool handleScrollbarContextMenuEvent(Scrollbar* scrollBar, QContextMenuEvent* event)
+{
+    if (!QApplication::style()->styleHint(QStyle::SH_ScrollBar_ContextMenu))
+        return true;
+
+    bool horizontal = (scrollBar->orientation() == HorizontalScrollbar);
+
+    QMenu menu;
+    QAction* actScrollHere = menu.addAction(QCoreApplication::translate("QWebPage", "Scroll here"));
+    menu.addSeparator();
+
+    QAction* actScrollTop = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Left edge") : QCoreApplication::translate("QWebPage", "Top"));
+    QAction* actScrollBottom = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Right edge") : QCoreApplication::translate("QWebPage", "Bottom"));
+    menu.addSeparator();
+
+    QAction* actPageUp = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Page left") : QCoreApplication::translate("QWebPage", "Page up"));
+    QAction* actPageDown = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Page right") : QCoreApplication::translate("QWebPage", "Page down"));
+    menu.addSeparator();
+
+    QAction* actScrollUp = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Scroll left") : QCoreApplication::translate("QWebPage", "Scroll up"));
+    QAction* actScrollDown = menu.addAction(horizontal ? QCoreApplication::translate("QWebPage", "Scroll right") : QCoreApplication::translate("QWebPage", "Scroll down"));
+
+    QAction* actionSelected = menu.exec(event->globalPos());
+
+    if (actionSelected == actScrollHere) {
+        ScrollbarTheme* theme = scrollBar->theme();
+        // Set the pressed position to the middle of the thumb so that when we
+        // do move, the delta will be from the current pixel position of the
+        // thumb to the new position
+        int position = theme->trackPosition(scrollBar) + theme->thumbPosition(scrollBar) + theme->thumbLength(scrollBar) / 2;
+        scrollBar->setPressedPos(position);
+        const QPoint pos = scrollBar->convertFromContainingWindow(event->pos());
+        scrollBar->moveThumb(horizontal ? pos.x() : pos.y());
+    } else if (actionSelected == actScrollTop)
+        scrollBar->scrollableArea()->scroll(horizontal ? ScrollLeft : ScrollUp, ScrollByDocument);
+    else if (actionSelected == actScrollBottom)
+        scrollBar->scrollableArea()->scroll(horizontal ? ScrollRight : ScrollDown, ScrollByDocument);
+    else if (actionSelected == actPageUp)
+        scrollBar->scrollableArea()->scroll(horizontal ? ScrollLeft : ScrollUp, ScrollByPage);
+    else if (actionSelected == actPageDown)
+        scrollBar->scrollableArea()->scroll(horizontal ? ScrollRight : ScrollDown, ScrollByPage);
+    else if (actionSelected == actScrollUp)
+        scrollBar->scrollableArea()->scroll(horizontal ? ScrollLeft : ScrollUp, ScrollByLine);
+    else if (actionSelected == actScrollDown)
+        scrollBar->scrollableArea()->scroll(horizontal ? ScrollRight : ScrollDown, ScrollByLine);
+    return true;
+}
+
 /*!
     Filters the context menu event, \a event, through handlers for scrollbars and
     custom event handlers in the web page. Returns true if the event was handled;
@@ -3242,7 +3292,7 @@
         if (QWebFrame* webFrame = frameAt(event->pos())) {
             Frame* frame = QWebFramePrivate::core(webFrame);
             if (Scrollbar* scrollbar = frame->view()->scrollbarAtPoint(convertMouseEvent(event, 1).position()))
-                return scrollbar->contextMenu(convertMouseEvent(event, 1));
+                return handleScrollbarContextMenuEvent(scrollbar, event);
         }
     }
 #endif

Modified: trunk/Source/WebKit/qt/ChangeLog (108497 => 108498)


--- trunk/Source/WebKit/qt/ChangeLog	2012-02-22 15:07:58 UTC (rev 108497)
+++ trunk/Source/WebKit/qt/ChangeLog	2012-02-22 15:10:21 UTC (rev 108498)
@@ -1,3 +1,17 @@
+2012-02-22  Simon Hausmann  <[email protected]>
+
+        [Qt] Move QMenu dependant scrollbar context menu handling out of WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=79233
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Move scrollbar context menu handling here, it's the only place where it is
+        used.
+
+        * Api/qwebpage.cpp:
+        (handleScrollbarContextMenuEvent):
+        (QWebPage::swallowContextMenuEvent):
+
 2012-02-22  Kenneth Rohde Christiansen  <[email protected]>
 
         Merge setVisibleRectTrajectoryVector and adjustVisibleRect to
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to