[haiku-webkit-commits] r292 - in webkit/trunk: WebCore/platform/haiku WebKit/haiku/API

  • From: webkit@xxxxxxxxxxxxxxx
  • To: haiku-webkit-commits@xxxxxxxxxxxxx
  • Date: Fri, 05 Mar 2010 20:36:33 +0000

Author: stippi
Date: Fri Mar  5 20:36:33 2010
New Revision: 292
URL: http://mmlr.dyndns.org/changeset/292

Log:
Use BMenu again in ContextMenu, which makes it work better as submenu, and 
convert
to BPopUpMenu at the top-evel (BWebPage).

Modified:
   webkit/trunk/WebCore/platform/haiku/ContextMenuHaiku.cpp
   webkit/trunk/WebKit/haiku/API/WebPage.cpp

Modified: webkit/trunk/WebCore/platform/haiku/ContextMenuHaiku.cpp
==============================================================================
--- webkit/trunk/WebCore/platform/haiku/ContextMenuHaiku.cpp    Fri Mar  5 
18:44:14 2010        (r291)
+++ webkit/trunk/WebCore/platform/haiku/ContextMenuHaiku.cpp    Fri Mar  5 
20:36:33 2010        (r292)
@@ -34,10 +34,10 @@
 #include "FrameView.h"
 #include <Application.h>
 #include <Handler.h>
+#include <Menu.h>
 #include <MenuItem.h>
 #include <Message.h>
 #include <Messenger.h>
-#include <PopUpMenu.h>
 #include <wtf/Assertions.h>
 #include <stdio.h>
 
@@ -72,7 +72,7 @@
 
 ContextMenu::ContextMenu(const HitTestResult& result)
     : m_hitTestResult(result)
-    , m_platformDescription(new BPopUpMenu("context_menu"))
+    , m_platformDescription(new BMenu("context_menu"))
     , m_menuHandler(new ContextMenuHandler(this))
 {
        if (be_app->Lock()) {

Modified: webkit/trunk/WebKit/haiku/API/WebPage.cpp
==============================================================================
--- webkit/trunk/WebKit/haiku/API/WebPage.cpp   Fri Mar  5 18:44:14 2010        
(r291)
+++ webkit/trunk/WebKit/haiku/API/WebPage.cpp   Fri Mar  5 20:36:33 2010        
(r292)
@@ -947,12 +947,17 @@
             // also swallow the event.
             ContextMenu* contextMenu = 
m_page->contextMenuController()->contextMenu();
             if (contextMenu) {
-               // ContextMenuHaiku really creates BPopUpMenu instances.
-               BPopUpMenu* popupMenu = static_cast<BPopUpMenu*>(
-                       contextMenu->platformDescription());
-               if (popupMenu) {
+               BMenu* platformMenu = contextMenu->releasePlatformDescription();
+               if (platformMenu) {
+                       // Need to convert the BMenu into BPopUpMenu.
+                       BPopUpMenu* popupMenu = new BPopUpMenu("context menu");
+                                       for (int32 i = 
platformMenu->CountItems() - 1; i >= 0; i--) {
+                                           BMenuItem* item = 
platformMenu->RemoveItem(i);
+                                           popupMenu->AddItem(item, 0);
+                                       }
                        BPoint screenLocation(event.globalX(), event.globalY());
                    popupMenu->Go(screenLocation, true, true, true);
+                   delete platformMenu;
                }
             }
             break;

Other related posts:

  • » [haiku-webkit-commits] r292 - in webkit/trunk: WebCore/platform/haiku WebKit/haiku/API - webkit