void wxWebView::OnContextMenuEvents(wxContextMenuEvent& event) { Connect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxWebView::OnMenuSelectEvents), NULL, this); m_impl->page->contextMenuController()->clearContextMenu(); wxPoint localEventPoint = ScreenToClient(event.GetPosition()); if (!m_impl->page) return; WebCore::Frame* focusedFrame = m_impl->page->focusController()->focusedOrMainFrame(); if (!focusedFrame->view()) return; //Create WebCore mouse event from the wxContextMenuEvent wxMouseEvent mouseEvent(wxEVT_RIGHT_DOWN); mouseEvent.m_x = localEventPoint.x; mouseEvent.m_y = localEventPoint.y; WebCore::PlatformMouseEvent wkEvent(mouseEvent, event.GetPosition(), 1); bool handledEvent = focusedFrame->eventHandler()->sendContextMenuEvent(wkEvent); if (!handledEvent) return; WebCore::ContextMenu* coreMenu = m_impl->page->contextMenuController()->contextMenu(); if (!coreMenu) return; WebCore::PlatformMenuDescription menuWx = coreMenu->platformDescription(); if (!menuWx) return; PopupMenu(menuWx, localEventPoint); Disconnect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxWebView::OnMenuSelectEvents), NULL, this); }
void wxWebView::OnContextMenuEvents(wxContextMenuEvent& event) { m_impl->page->contextMenuController()->clearContextMenu(); wxPoint localEventPoint = ScreenToClient(event.GetPosition()); if (!m_mainFrame) return; WebCore::Frame* focusedFrame = m_mainFrame->GetFrame(); if (!focusedFrame->view()) return; //Create WebCore mouse event from the wxContextMenuEvent wxMouseEvent mouseEvent(wxEVT_RIGHT_DOWN); mouseEvent.m_x = localEventPoint.x; mouseEvent.m_y = localEventPoint.y; WebCore::PlatformMouseEvent wkEvent(mouseEvent, event.GetPosition()); bool handledEvent = focusedFrame->eventHandler()->sendContextMenuEvent(wkEvent); if (!handledEvent) return; WebCore::ContextMenu* coreMenu = m_impl->page->contextMenuController()->contextMenu(); if (!coreMenu) return; WebCore::PlatformMenuDescription menuWx = coreMenu->platformDescription(); if (!menuWx) return; PopupMenu(menuWx, localEventPoint); }