diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:08:59 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:09:20 +0100 |
commit | 061d58bc0fa016cfeed744fd3e4663460635d69b (patch) | |
tree | ad9b8b032c803e1c9054c23fa1b7a0f1976bf98f /Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp | |
parent | 470286ecfe79d59df14944e5b5d34630fc739391 (diff) | |
download | qtwebkit-061d58bc0fa016cfeed744fd3e4663460635d69b.tar.gz |
Imported WebKit commit 8eb048315f36fa33731f28694630fe4a3c2cbc99 (http://svn.webkit.org/repository/webkit/trunk@135602)
New snapshot that fixes various bugs
Change-Id: Icb6ce541a26a9f500d087821ce4b83a8d8a5474a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp index 3273bdc09..d21af0301 100644 --- a/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp +++ b/Source/WebKit2/WebProcess/WebPage/WebContextMenu.cpp @@ -66,6 +66,32 @@ void WebContextMenu::show() if (!view) return; + Vector<WebContextMenuItemData> menuItems; + RefPtr<APIObject> userData; + menuItemsWithUserData(menuItems, userData); + WebHitTestResult::Data webHitTestResultData(controller->hitTestResult()); + + // Mark the WebPage has having a shown context menu then notify the UIProcess. + m_page->contextMenuShowing(); + m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, menuItems, InjectedBundleUserMessageEncoder(userData.get()))); +} + +void WebContextMenu::itemSelected(const WebContextMenuItemData& item) +{ + ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title()); + m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem); +} + +void WebContextMenu::menuItemsWithUserData(Vector<WebContextMenuItemData> &menuItems, RefPtr<APIObject>& userData) const +{ + ContextMenuController* controller = m_page->corePage()->contextMenuController(); + if (!controller) + return; + + ContextMenu* menu = controller->contextMenu(); + if (!menu) + return; + // Give the bundle client a chance to process the menu. #if USE(CROSS_PLATFORM_CONTEXT_MENUS) const Vector<ContextMenuItem>& coreItems = menu->items(); @@ -74,22 +100,18 @@ void WebContextMenu::show() #endif Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu); Vector<WebContextMenuItemData> newMenu; - RefPtr<APIObject> userData; RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(controller->hitTestResult()); if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData)) proposedMenu = newMenu; - - WebHitTestResult::Data webHitTestResultData(controller->hitTestResult()); - - // Mark the WebPage has having a shown context menu then notify the UIProcess. - m_page->contextMenuShowing(); - m_page->send(Messages::WebPageProxy::ShowContextMenu(view->contentsToWindow(controller->hitTestResult().roundedPointInInnerNodeFrame()), webHitTestResultData, proposedMenu, InjectedBundleUserMessageEncoder(userData.get()))); + menuItems = proposedMenu; } -void WebContextMenu::itemSelected(const WebContextMenuItemData& item) +Vector<WebContextMenuItemData> WebContextMenu::items() const { - ContextMenuItem coreItem(ActionType, static_cast<ContextMenuAction>(item.action()), item.title()); - m_page->corePage()->contextMenuController()->contextMenuItemSelected(&coreItem); + Vector<WebContextMenuItemData> menuItems; + RefPtr<APIObject> userData; + menuItemsWithUserData(menuItems, userData); + return menuItems; } } // namespace WebKit |