diff options
Diffstat (limited to 'Source/WebKit/qt/WebCoreSupport')
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp | 4 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp | 15 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h | 4 |
3 files changed, 19 insertions, 4 deletions
diff --git a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index 37658861f..1ba5a8aa1 100644 --- a/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -688,8 +688,10 @@ void FrameLoaderClientQt::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld &w if (&world != &mainThreadNormalWorld()) return; - if (m_webFrame) + if (m_webFrame) { m_webFrame->didClearWindowObject(); + m_webFrame->pageAdapter->clearCustomActions(); + } } void FrameLoaderClientQt::registerForIconNotification(bool shouldRegister) diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp index e1789f9e2..ee3339594 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp +++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp @@ -876,8 +876,11 @@ void QWebPageAdapter::dynamicPropertyChangeEvent(QObject* obj, QDynamicPropertyC #define MAP_ACTION_FROM_VALUE(Name, Value) \ case Value: return QWebPageAdapter::Name -static QWebPageAdapter::MenuAction adapterActionForContextMenuAction(WebCore::ContextMenuAction action) +static int adapterActionForContextMenuAction(WebCore::ContextMenuAction action) { + if (action >= ContextMenuItemBaseCustomTag && action <= ContextMenuItemLastCustomTag) + return action; + switch (action) { FOR_EACH_MAPPED_MENU_ACTION(MAP_ACTION_FROM_VALUE, SEMICOLON_SEPARATOR); case WebCore::ContextMenuItemTagInspectElement: @@ -899,7 +902,7 @@ QList<MenuItem> descriptionForPlatformMenu(const Vector<ContextMenuItem>& items, switch (item.type()) { case WebCore::CheckableActionType: /* fall through */ case WebCore::ActionType: { - QWebPageAdapter::MenuAction action = adapterActionForContextMenuAction(item.action()); + int action = adapterActionForContextMenuAction(item.action()); if (action > QWebPageAdapter::NoAction) { description.type = MenuItem::Action; description.action = action; @@ -1186,6 +1189,14 @@ void QWebPageAdapter::triggerAction(QWebPageAdapter::MenuAction action, QWebHitT } } +void QWebPageAdapter::triggerCustomAction(int action, const QString &title) +{ + if (action >= ContextMenuItemBaseCustomTag && action <= ContextMenuItemLastCustomTag) + page->contextMenuController().contextMenuItemSelected(static_cast<ContextMenuAction>(action), title); + else + ASSERT_NOT_REACHED(); +} + QString QWebPageAdapter::contextMenuItemTagForAction(QWebPageAdapter::MenuAction action, bool* checkable) const { diff --git a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h index 324d0381d..7174d0d96 100644 --- a/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h +++ b/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.h @@ -228,6 +228,7 @@ public: virtual void createUndoStep(QSharedPointer<UndoStepQt>) = 0; virtual void updateNavigationActions() = 0; + virtual void clearCustomActions() = 0; virtual QWebFrameAdapter* mainFrameAdapter() = 0; @@ -273,7 +274,7 @@ public: Separator, SubMenu } type; - MenuAction action; + int action; enum Trait { None = 0, Enabled = 1, @@ -344,6 +345,7 @@ public: QWebHitTestResultPrivate* updatePositionDependentMenuActions(const QPoint&, QBitArray*); void updateActionInternal(MenuAction, const char* commandName, bool* enabled, bool* checked); void triggerAction(MenuAction, QWebHitTestResultPrivate*, const char* commandName, bool endToEndReload); + void triggerCustomAction(int action, const QString &title); QString contextMenuItemTagForAction(MenuAction, bool* checkable) const; QStringList supportedContentTypes() const; |