+2012-02-22 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [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 <vsevik@chromium.org>
Web Inspector: retrieving content for some XHR requests crashes inspected page renderer
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) {
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*);
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);
ScrollDirection pressedPartScrollDirection();
ScrollGranularity pressedPartScrollGranularity();
- void moveThumb(int pos, bool draggingDocument = false);
-
ScrollableArea* m_scrollableArea;
ScrollbarOrientation m_orientation;
ScrollbarControlSize m_controlSize;
+++ /dev/null
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Staikos Computing Services Inc. <info@staikos.net>
- * 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
#include "RenderThemeQt.h"
#include "SchemeRegistry.h"
#include "Scrollbar.h"
+#include "ScrollbarTheme.h"
#include "SecurityOrigin.h"
#include "Settings.h"
#if defined Q_OS_WIN32
}
#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;
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
+2012-02-22 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [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 <kenneth@webkit.org>
Merge setVisibleRectTrajectoryVector and adjustVisibleRect to