Title: [262137] trunk/Source/WebKit
Revision
262137
Author
[email protected]
Date
2020-05-26 00:59:30 -0700 (Tue, 26 May 2020)

Log 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().

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (262136 => 262137)


--- trunk/Source/WebKit/ChangeLog	2020-05-26 04:48:57 UTC (rev 262136)
+++ trunk/Source/WebKit/ChangeLog	2020-05-26 07:59:30 UTC (rev 262137)
@@ -1,3 +1,19 @@
+2020-05-26  Carlos Garcia Campos  <[email protected]>
+
+        [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().
+
 2020-05-25  Alex Christensen  <[email protected]>
 
         Expose more network metrics to WebCoreNSURLSession

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (262136 => 262137)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2020-05-26 04:48:57 UTC (rev 262136)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2020-05-26 07:59:30 UTC (rev 262137)
@@ -778,6 +778,11 @@
         gtk_widget_size_allocate(priv->dialog, &childAllocation);
     }
 
+#if USE(GTK4)
+    if (priv->activeContextMenuProxy)
+        gtk_native_check_resize(GTK_NATIVE(priv->activeContextMenuProxy->gtkWidget()));
+#endif
+
     if (auto* drawingArea = static_cast<DrawingAreaProxyCoordinatedGraphics*>(priv->pageProxy->drawingArea()))
         drawingArea->setSize(viewRect.size());
 }

Modified: trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp (262136 => 262137)


--- trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp	2020-05-26 04:48:57 UTC (rev 262136)
+++ trunk/Source/WebKit/UIProcess/gtk/WebContextMenuProxyGtk.cpp	2020-05-26 07:59:30 UTC (rev 262137)
@@ -79,6 +79,11 @@
 {
     gtk_popover_menu_set_menu_model(GTK_POPOVER_MENU(widget), model);
 }
+
+static inline void destroyMenuWidget(GtkWidget* widget)
+{
+    gtk_widget_unparent(widget);
+}
 #else
 const char* WebContextMenuProxyGtk::widgetDismissedSignal = "deactivate";
 
@@ -121,8 +126,13 @@
 
 static inline void bindModelToMenuWidget(GtkWidget* widget, GMenuModel* model)
 {
-    gtk_menu_shell_bind_model(GTK_MENU_SHELL(widget), model, gContextMenuItemGroup, TRUE);
+    gtk_menu_shell_bind_model(GTK_MENU_SHELL(widget), model, nullptr, TRUE);
 }
+
+static inline void destroyMenuWidget(GtkWidget* widget)
+{
+    gtk_widget_destroy(widget);
+}
 #endif // USE(GTK4)
 
 static void contextMenuItemActivatedCallback(GAction* action, GVariant*, WebPageProxy* page)
@@ -151,7 +161,8 @@
     case ActionType:
     case CheckableActionType: {
         gMenuItem = adoptGRef(g_menu_item_new(menuItem.title().utf8().data(), nullptr));
-        g_menu_item_set_action_and_target_value(gMenuItem.get(), g_action_get_name(action), menuItem.gActionTarget());
+        GUniquePtr<char> actionName(g_strdup_printf("%s.%s", gContextMenuItemGroup, g_action_get_name(action)));
+        g_menu_item_set_action_and_target_value(gMenuItem.get(), actionName.get(), menuItem.gActionTarget());
 
         if (menuItem.action() < ContextMenuItemBaseApplicationTag) {
             g_object_set_data(G_OBJECT(action), gContextMenuActionId, GINT_TO_POINTER(menuItem.action()));
@@ -280,9 +291,7 @@
     m_signalHandlers.clear();
 
     gtk_widget_insert_action_group(GTK_WIDGET(m_menu), gContextMenuItemGroup, nullptr);
-#if !USE(GTK4)
-    gtk_widget_destroy(m_menu);
-#endif
+    destroyMenuWidget(m_menu);
 }
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to