WebContextMenuProxyGtk.h [plain text]
#pragma once
#if ENABLE(CONTEXT_MENUS)
#include "WebContextMenuItemGlib.h"
#include "WebContextMenuProxy.h"
#include <WebCore/IntPoint.h>
#include <wtf/HashMap.h>
#include <wtf/glib/GRefPtr.h>
typedef struct _GMenu GMenu;
namespace WebKit {
class WebContextMenuItem;
class WebContextMenuItemData;
class WebPageProxy;
class WebContextMenuProxyGtk : public WebContextMenuProxy {
public:
static auto create(GtkWidget* widget, WebPageProxy& page, ContextMenuContextData&& context, const UserData& userData)
{
return adoptRef(*new WebContextMenuProxyGtk(widget, page, WTFMove(context), userData));
}
~WebContextMenuProxyGtk();
void populate(const Vector<WebContextMenuItemGlib>&);
GtkMenu* gtkMenu() const { return m_menu; }
private:
WebContextMenuProxyGtk(GtkWidget*, WebPageProxy&, ContextMenuContextData&&, const UserData&);
void show() override;
void showContextMenuWithItems(Vector<WebContextMenuItemData>&&) override;
void append(GMenu*, const WebContextMenuItemGlib&);
GRefPtr<GMenu> buildMenu(const Vector<WebContextMenuItemGlib>&);
void populate(const Vector<Ref<WebContextMenuItem>>&);
static void menuPositionFunction(GtkMenu*, gint*, gint*, gboolean*, WebContextMenuProxyGtk*);
GtkWidget* m_webView;
WebPageProxy* m_page;
GtkMenu* m_menu;
WebCore::IntPoint m_popupPosition;
HashMap<unsigned long, void*> m_signalHandlers;
};
}
#endif // ENABLE(CONTEXT_MENUS)