2011-02-23 Benjamin Poulain <benjamin.poulain@nokia.com>
authorbenjamin.poulain@nokia.com <benjamin.poulain@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Feb 2011 09:11:13 +0000 (09:11 +0000)
committerbenjamin.poulain@nokia.com <benjamin.poulain@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Feb 2011 09:11:13 +0000 (09:11 +0000)
        Reviewed by Andreas Kling.

        [Qt] [WK2] When the context menu is empty, we should still send the signal QWKPage::showContextMenu()
        https://bugs.webkit.org/show_bug.cgi?id=54996

        Send the signal QWKPage::showContextMenu() with an empty menu even if the content menu generated
        is empty/contain only disabled elements.

        * UIProcess/API/qt/qgraphicswkview.cpp:
        (QGraphicsWKView::showContextMenu):
        * UIProcess/qt/WebContextMenuProxyQt.cpp:
        (WebKit::WebContextMenuProxyQt::showContextMenu):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@79421 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/qt/qgraphicswkview.cpp
Source/WebKit2/UIProcess/qt/WebContextMenuProxyQt.cpp

index 365e3b1..454a24d 100644 (file)
@@ -1,3 +1,18 @@
+2011-02-23  Benjamin Poulain  <benjamin.poulain@nokia.com>
+
+        Reviewed by Andreas Kling.
+
+        [Qt] [WK2] When the context menu is empty, we should still send the signal QWKPage::showContextMenu()
+        https://bugs.webkit.org/show_bug.cgi?id=54996
+
+        Send the signal QWKPage::showContextMenu() with an empty menu even if the content menu generated
+        is empty/contain only disabled elements.
+
+        * UIProcess/API/qt/qgraphicswkview.cpp:
+        (QGraphicsWKView::showContextMenu):
+        * UIProcess/qt/WebContextMenuProxyQt.cpp:
+        (WebKit::WebContextMenuProxyQt::showContextMenu):
+
 2011-02-22  Dan Bernstein  <mitz@apple.com>
 
         LLVM Compiler build fix.
index 9497f70..972ecb1 100644 (file)
@@ -333,6 +333,9 @@ void QGraphicsWKView::showContextMenu(QSharedPointer<QMenu> menu)
     if (d->activeMenu)
         d->activeMenu->hide();
 
+    if (menu->isEmpty())
+        return;
+
     d->activeMenu = menu;
 
     QWidget* view = 0;
index 868eaa9..777f98c 100644 (file)
@@ -82,10 +82,15 @@ PassRefPtr<WebContextMenuProxyQt> WebContextMenuProxyQt::create(QWKPage* page)
 
 void WebContextMenuProxyQt::showContextMenu(const IntPoint& position, const Vector<WebContextMenuItemData>& items)
 {
-    if (OwnPtr<QMenu> menu = createContextMenu(items)) {
-        menu->move(position);
-        emit m_page->showContextMenu(QSharedPointer<QMenu>(menu.leakPtr()));
-    }
+    OwnPtr<QMenu> menu = createContextMenu(items);
+
+    // We send the signal, even with no items, because the client should be able to show custom items
+    // even if WebKit has nothing to show.
+    if (!menu)
+        menu = adoptPtr(new QMenu);
+
+    menu->move(position);
+    emit m_page->showContextMenu(QSharedPointer<QMenu>(menu.leakPtr()));
 }
 
 void WebContextMenuProxyQt::hideContextMenu()