Changeset 262137 in webkit


Ignore:
Timestamp:
May 26, 2020 12:59:30 AM (4 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK4] Fix context menu
https://bugs.webkit.org/show_bug.cgi?id=212344

Reviewed by Adrian Perez de Castro.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSizeAllocate): Call gtk_native_check_resize() on the popover to make it appear.

  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:

(WebKit::destroyMenuWidget): There's no gtk_widget_destroy() in GTK4 so we can just unparent it.
(WebKit::bindModelToMenuWidget): Do not set the action namespace because that's not possible in GTK4.
(WebKit::WebContextMenuProxyGtk::append): Use group.name again for the action name passed to
g_menu_item_set_action_and_target_value().
(WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Use destroyMenuWidget().

Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r262131 r262137  
     12020-05-26  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK4] Fix context menu
     4        https://bugs.webkit.org/show_bug.cgi?id=212344
     5
     6        Reviewed by Adrian Perez de Castro.
     7
     8        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
     9        (webkitWebViewBaseSizeAllocate): Call gtk_native_check_resize() on the popover to make it appear.
     10        * UIProcess/gtk/WebContextMenuProxyGtk.cpp:
     11        (WebKit::destroyMenuWidget): There's no gtk_widget_destroy() in GTK4 so we can just unparent it.
     12        (WebKit::bindModelToMenuWidget): Do not set the action namespace because that's not possible in GTK4.
     13        (WebKit::WebContextMenuProxyGtk::append): Use group.name again for the action name passed to
     14        g_menu_item_set_action_and_target_value().
     15        (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Use destroyMenuWidget().
     16
    1172020-05-25  Alex Christensen  <achristensen@webkit.org>
    218
  • trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp

    r261912 r262137  
    779779    }
    780780
     781#if USE(GTK4)
     782    if (priv->activeContextMenuProxy)
     783        gtk_native_check_resize(GTK_NATIVE(priv->activeContextMenuProxy->gtkWidget()));
     784#endif
     785
    781786    if (auto* drawingArea = static_cast<DrawingAreaProxyCoordinatedGraphics*>(priv->pageProxy->drawingArea()))
    782787        drawingArea->setSize(viewRect.size());
  • trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp

    r261912 r262137  
    8080    gtk_popover_menu_set_menu_model(GTK_POPOVER_MENU(widget), model);
    8181}
     82
     83static inline void destroyMenuWidget(GtkWidget* widget)
     84{
     85    gtk_widget_unparent(widget);
     86}
    8287#else
    8388const char* WebContextMenuProxyGtk::widgetDismissedSignal = "deactivate";
     
    122127static inline void bindModelToMenuWidget(GtkWidget* widget, GMenuModel* model)
    123128{
    124     gtk_menu_shell_bind_model(GTK_MENU_SHELL(widget), model, gContextMenuItemGroup, TRUE);
     129    gtk_menu_shell_bind_model(GTK_MENU_SHELL(widget), model, nullptr, TRUE);
     130}
     131
     132static inline void destroyMenuWidget(GtkWidget* widget)
     133{
     134    gtk_widget_destroy(widget);
    125135}
    126136#endif // USE(GTK4)
     
    152162    case CheckableActionType: {
    153163        gMenuItem = adoptGRef(g_menu_item_new(menuItem.title().utf8().data(), nullptr));
    154         g_menu_item_set_action_and_target_value(gMenuItem.get(), g_action_get_name(action), menuItem.gActionTarget());
     164        GUniquePtr<char> actionName(g_strdup_printf("%s.%s", gContextMenuItemGroup, g_action_get_name(action)));
     165        g_menu_item_set_action_and_target_value(gMenuItem.get(), actionName.get(), menuItem.gActionTarget());
    155166
    156167        if (menuItem.action() < ContextMenuItemBaseApplicationTag) {
     
    281292
    282293    gtk_widget_insert_action_group(GTK_WIDGET(m_menu), gContextMenuItemGroup, nullptr);
    283 #if !USE(GTK4)
    284     gtk_widget_destroy(m_menu);
    285 #endif
     294    destroyMenuWidget(m_menu);
    286295}
    287296
Note: See TracChangeset for help on using the changeset viewer.