WebContextMenuProxyGtk.h [plain text]
#ifndef WebContextMenuProxyGtk_h
#define WebContextMenuProxyGtk_h
#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, const ContextMenuContextData& context, const UserData& userData)
{
return adoptRef(*new WebContextMenuProxyGtk(widget, page, context, userData));
}
~WebContextMenuProxyGtk();
void populate(const Vector<WebContextMenuItemGlib>&);
GtkMenu* gtkMenu() const { return m_menu; }
private:
WebContextMenuProxyGtk(GtkWidget*, WebPageProxy&, const ContextMenuContextData&, const UserData&);
void show() override;
void showContextMenuWithItems(const Vector<WebContextMenuItemData>&) override;
void append(GMenu*, const WebContextMenuItemGlib&);
GRefPtr<GMenu> buildMenu(const Vector<WebContextMenuItemGlib>&);
void populate(const Vector<RefPtr<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)
#endif // WebContextMenuProxyGtk_h