WebContextMenuItemGlib.h [plain text]
#pragma once
#include "WebContextMenuItemData.h"
#include <wtf/glib/GRefPtr.h>
#include <wtf/glib/GUniquePtr.h>
typedef struct _GtkAction GtkAction;
typedef struct _GAction GAction;
namespace WebKit {
class WebContextMenuItemGlib final : public WebContextMenuItemData {
WTF_MAKE_FAST_ALLOCATED;
public:
WebContextMenuItemGlib(WebCore::ContextMenuItemType, WebCore::ContextMenuAction, const String& title, bool enabled = true, bool checked = false);
WebContextMenuItemGlib(const WebContextMenuItemData&);
WebContextMenuItemGlib(const WebContextMenuItemGlib&, Vector<WebContextMenuItemGlib>&& submenu);
WebContextMenuItemGlib(GAction*, const String& title, GVariant* target = nullptr);
#if PLATFORM(GTK)
WebContextMenuItemGlib(GtkAction*);
#endif
~WebContextMenuItemGlib();
WebCore::ContextMenuItemType type() const { return m_submenuItems.isEmpty() ? WebContextMenuItemData::type() : WebCore::SubmenuType; }
GAction* gAction() const { return m_gAction.get(); }
GVariant* gActionTarget() const { return m_gActionTarget.get(); }
const Vector<WebContextMenuItemGlib>& submenuItems() const { return m_submenuItems; }
#if PLATFORM(GTK)
GtkAction* gtkAction() const { return m_gtkAction; }
#endif
private:
GUniquePtr<char> buildActionName() const;
void createActionIfNeeded();
GRefPtr<GAction> m_gAction;
GRefPtr<GVariant> m_gActionTarget;
Vector<WebContextMenuItemGlib> m_submenuItems;
#if PLATFORM(GTK)
GtkAction* m_gtkAction { nullptr };
#endif
};
}