diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp | 59 |
1 files changed, 53 insertions, 6 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp index bbbed0ddc..ff0879648 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp @@ -24,6 +24,7 @@ #include "WebContextMenuItem.h" #include "WebKitContextMenuItemPrivate.h" #include "WebKitContextMenuPrivate.h" +#include <wtf/glib/GRefPtr.h> using namespace WebKit; using namespace WebCore; @@ -50,6 +51,7 @@ using namespace WebCore; struct _WebKitContextMenuPrivate { GList* items; WebKitContextMenuItem* parentItem; + GRefPtr<GVariant> userData; }; WEBKIT_DEFINE_TYPE(WebKitContextMenu, webkit_context_menu, G_TYPE_OBJECT) @@ -66,21 +68,27 @@ static void webkit_context_menu_class_init(WebKitContextMenuClass* listClass) gObjectClass->dispose = webkitContextMenuDispose; } -void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<ContextMenuItem>& contextMenuItems) +void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<WebContextMenuItemData>& contextMenuItems) { for (GList* item = menu->priv->items; item; item = g_list_next(item)) { WebKitContextMenuItem* menuItem = WEBKIT_CONTEXT_MENU_ITEM(item->data); - contextMenuItems.append(ContextMenuItem(webkitContextMenuItemRelease(menuItem))); + contextMenuItems.append(webkitContextMenuItemToWebContextMenuItemData(menuItem)); } } -WebKitContextMenu* webkitContextMenuCreate(API::Array* items) +void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<WebContextMenuItemGtk>& contextMenuItems) +{ + for (GList* item = menu->priv->items; item; item = g_list_next(item)) { + WebKitContextMenuItem* menuItem = WEBKIT_CONTEXT_MENU_ITEM(item->data); + contextMenuItems.append(webkitContextMenuItemToWebContextMenuItemGtk(menuItem)); + } +} + +WebKitContextMenu* webkitContextMenuCreate(const Vector<WebContextMenuItemData>& items) { WebKitContextMenu* menu = webkit_context_menu_new(); - for (size_t i = 0; i < items->size(); ++i) { - WebContextMenuItem* item = static_cast<WebContextMenuItem*>(items->at(i)); + for (const auto& item : items) webkit_context_menu_prepend(menu, webkitContextMenuItemCreate(item)); - } menu->priv->items = g_list_reverse(menu->priv->items); return menu; @@ -316,3 +324,42 @@ void webkit_context_menu_remove_all(WebKitContextMenu* menu) g_list_free_full(menu->priv->items, reinterpret_cast<GDestroyNotify>(g_object_unref)); menu->priv->items = 0; } + +/** + * webkit_context_menu_set_user_data: + * @menu: a #WebKitContextMenu + * @user_data: a #GVariant + * + * Sets user data to @menu. + * This function can be used from a Web Process extension to set user data + * that can be retrieved from the UI Process using webkit_context_menu_get_user_data(). + * If the @user_data #GVariant is floating, it is consumed. + * + * Since: 2.8 + */ +void webkit_context_menu_set_user_data(WebKitContextMenu* menu, GVariant* userData) +{ + g_return_if_fail(WEBKIT_IS_CONTEXT_MENU(menu)); + g_return_if_fail(userData); + + menu->priv->userData = userData; +} + +/** + * webkit_context_menu_get_user_data: + * @menu: a #WebKitContextMenu + * + * Gets the user data of @menu. + * This function can be used from the UI Process to get user data previously set + * from the Web Process with webkit_context_menu_set_user_data(). + * + * Returns: (transfer none): the user data of @menu, or %NULL if @menu doesn't have user data + * + * Since: 2.8 + */ +GVariant* webkit_context_menu_get_user_data(WebKitContextMenu* menu) +{ + g_return_val_if_fail(WEBKIT_IS_CONTEXT_MENU(menu), nullptr); + + return menu->priv->userData.get(); +} |