Skip to content

Commit d83fc8f

Browse files
committed
Handle CEF context menus
1 parent 18ee2cc commit d83fc8f

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Client/core/Webbrowser/CWebView.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,3 +980,15 @@ bool CWebView::OnConsoleMessage ( CefRefPtr<CefBrowser> browser, const CefString
980980

981981
return true;
982982
}
983+
984+
////////////////////////////////////////////////////////////////////
985+
// //
986+
// Implementation: CefContextMenuHandler::OnBeforeContextMenu //
987+
// http://magpcss.org/ceforum/apidocs3/projects/(default)/CefContextMenuHandler.html#OnBeforeContextMenu(CefRefPtr%3CCefBrowser%3E,CefRefPtr%3CCefFrame%3E,CefRefPtr%3CCefContextMenuParams%3E,CefRefPtr%3CCefMenuModel%3E) //
988+
// //
989+
////////////////////////////////////////////////////////////////////
990+
void CWebView::OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model)
991+
{
992+
// Show no context menu
993+
model->Clear();
994+
}

Client/core/Webbrowser/CWebView.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <cef3/include/cef_client.h>
2121
#include <cef3/include/cef_render_handler.h>
2222
#include <cef3/include/cef_life_span_handler.h>
23+
#include <cef3/include/cef_context_menu_handler.h>
2324
#include <SString.h>
2425
#include <mmdeviceapi.h>
2526
#include <audiopolicy.h>
@@ -29,7 +30,9 @@
2930

3031
#define MTA_CEF_USERAGENT "Multi Theft Auto: San Andreas Client " MTA_DM_BUILDTAG_LONG
3132

32-
class CWebView : public CWebViewInterface, private CefClient, private CefRenderHandler, private CefLoadHandler, private CefRequestHandler, private CefLifeSpanHandler, private CefJSDialogHandler, private CefDialogHandler, private CefDisplayHandler
33+
class CWebView : public CWebViewInterface, private CefClient,
34+
private CefRenderHandler, private CefLoadHandler, private CefRequestHandler, private CefLifeSpanHandler,
35+
private CefJSDialogHandler, private CefDialogHandler, private CefDisplayHandler, private CefContextMenuHandler
3336
{
3437
public:
3538
CWebView (bool bIsLocal, CWebBrowserItem* pWebBrowserRenderItem, bool bTransparent = false);
@@ -101,6 +104,7 @@ class CWebView : public CWebViewInterface, private CefClient, private CefRenderH
101104
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() override { return this; };
102105
virtual CefRefPtr<CefDialogHandler> GetDialogHandler() override { return this; };
103106
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() override { return this; };
107+
virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() override { return this; };
104108
virtual bool OnProcessMessageReceived ( CefRefPtr<CefBrowser> browser, CefProcessId source_process, CefRefPtr<CefProcessMessage> message ) override;
105109

106110
// CefRenderHandler methods
@@ -135,6 +139,9 @@ class CWebView : public CWebViewInterface, private CefClient, private CefRenderH
135139
virtual bool OnTooltip ( CefRefPtr<CefBrowser> browser, CefString& text ) override;
136140
virtual bool OnConsoleMessage ( CefRefPtr<CefBrowser> browser, const CefString& message, const CefString& source, int line ) override;
137141

142+
// CefContextMenuHandler methods
143+
virtual void OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) override;
144+
138145
private:
139146
CefRefPtr<CefBrowser> m_pWebView;
140147
CWebBrowserItem* m_pWebBrowserRenderItem;

0 commit comments

Comments
 (0)