WebContextMenuProxyGtk.h [plain text]
#ifndef WebContextMenuProxyGtk_h
#define WebContextMenuProxyGtk_h
#if ENABLE(CONTEXT_MENUS)
#include "WebContextMenuProxy.h"
#include <WebCore/ContextMenu.h>
#include <WebCore/IntPoint.h>
#include <wtf/HashMap.h>
namespace WebKit {
class WebContextMenuItem;
class WebContextMenuItemData;
class WebPageProxy;
class WebContextMenuProxyGtk : public WebContextMenuProxy {
public:
static Ref<WebContextMenuProxyGtk> create(GtkWidget* webView, WebPageProxy* page)
{
return adoptRef(*new WebContextMenuProxyGtk(webView, page));
}
~WebContextMenuProxyGtk();
virtual void showContextMenu(const WebCore::IntPoint&, const Vector<RefPtr<WebContextMenuItem>>&, const ContextMenuContextData&);
virtual void hideContextMenu();
void populate(Vector<WebCore::ContextMenuItem>&);
GtkMenu* gtkMenu() const { return m_menu.platformDescription(); }
private:
WebContextMenuProxyGtk(GtkWidget*, WebPageProxy*);
void append(WebCore::ContextMenuItem&);
void populate(const Vector<RefPtr<WebContextMenuItem>>&);
static void menuPositionFunction(GtkMenu*, gint*, gint*, gboolean*, WebContextMenuProxyGtk*);
GtkWidget* m_webView;
WebPageProxy* m_page;
WebCore::ContextMenu m_menu;
WebCore::IntPoint m_popupPosition;
HashMap<unsigned long, GtkAction*> m_signalHandlers;
};
}
#endif // ENABLE(CONTEXT_MENUS)
#endif // WebContextMenuProxyGtk_h