summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/haiku/ContextMenuHaiku.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/haiku/ContextMenuHaiku.cpp')
-rw-r--r--WebCore/platform/haiku/ContextMenuHaiku.cpp40
1 files changed, 28 insertions, 12 deletions
diff --git a/WebCore/platform/haiku/ContextMenuHaiku.cpp b/WebCore/platform/haiku/ContextMenuHaiku.cpp
index b978433..03b8978 100644
--- a/WebCore/platform/haiku/ContextMenuHaiku.cpp
+++ b/WebCore/platform/haiku/ContextMenuHaiku.cpp
@@ -27,27 +27,30 @@
#include "config.h"
#include "ContextMenu.h"
-#include "ContextMenuController.h"
#include "ContextMenuItem.h"
-#include "Document.h"
+#include "ContextMenuController.h"
#include "Frame.h"
#include "FrameView.h"
+#include "Document.h"
+
+#include <wtf/Assertions.h>
+
#include <Looper.h>
#include <Menu.h>
#include <Message.h>
-#include <wtf/Assertions.h>
namespace WebCore {
// FIXME: This class isn't used yet
-class ContextMenuReceiver : public BLooper {
+class ContextMenuReceiver : public BLooper
+{
public:
ContextMenuReceiver(ContextMenu* menu)
: BLooper("context_menu_receiver")
, m_menu(menu)
- , m_result(-1)
{
+ m_result = -1;
}
void HandleMessage(BMessage* msg)
@@ -77,8 +80,21 @@ private:
ContextMenu::ContextMenu(const HitTestResult& result)
: m_hitTestResult(result)
- , m_platformDescription(new BMenu("context_menu"))
+ , m_platformDescription(NULL)
{
+ /* Get position */
+ if (result.innerNode() && result.innerNode()->document()) {
+ BView* view = result.innerNode()->document()->frame()->view()->platformWidget();
+ int child = 0;
+ while (view->ChildAt(child)) {
+ if (view->ChildAt(child)->Name() == "scroll_view_canvas") {
+ m_point = view->ChildAt(child)->ConvertToScreen(BPoint(result.point().x(), result.point().y()));
+ break;
+ }
+ child++;
+ }
+ }
+ m_platformDescription = new BMenu("context_menu");
}
ContextMenu::~ContextMenu()
@@ -90,9 +106,9 @@ void ContextMenu::appendItem(ContextMenuItem& item)
{
checkOrEnableIfNeeded(item);
- BMenuItem* menuItem = item.releasePlatformDescription();
- if (menuItem)
- m_platformDescription->AddItem(menuItem);
+ BMenuItem* bItem = item.releasePlatformDescription();
+ if (bItem)
+ m_platformDescription->AddItem(bItem);
}
unsigned ContextMenu::itemCount() const
@@ -104,9 +120,9 @@ void ContextMenu::insertItem(unsigned position, ContextMenuItem& item)
{
checkOrEnableIfNeeded(item);
- BMenuItem* menuItem = item.releasePlatformDescription();
- if (menuItem)
- m_platformDescription->AddItem(menuItem, position);
+ BMenuItem* bItem = item.releasePlatformDescription();
+ if (bItem)
+ m_platformDescription->AddItem(bItem, position);
}
PlatformMenuDescription ContextMenu::platformDescription() const