Title: [262371] trunk/Source
Revision
262371
Author
carlo...@webkit.org
Date
2020-06-01 02:24:05 -0700 (Mon, 01 Jun 2020)

Log Message

[GTK4] Make inspector work
https://bugs.webkit.org/show_bug.cgi?id=212321

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Add gtk_native_dialog_run() for GTK4.

* platform/gtk/GtkVersioning.h:
(gtk_native_dialog_run):

Source/WebKit:

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseRemoveDialog): Added instead of the generic webkitWebViewBaseRemoveChild that has been removed.
(webkitWebViewBaseRemoveWebInspector): Just unparent the inspector view instead of caling webkitWebViewBaseRemoveChild.
(webkitWebViewBaseDispose): Use specific functions to remove the children.
(webkitWebViewBaseSnapshot): Call gtk_widget_snapshot_child() on inspector view if present.
(webkitWebViewBaseRemoveChild): Deleted.
* UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
(WebKit::RemoteWebInspectorProxy::platformSave): Remove GTK4 ifdefs.
* UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformSave): Ditto.
* UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp:
(webkit_inspector_window_init): Show title buttons in inspector window.
* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::snapshot): Use the texture size instead of the view size, since it's
different when the inspector is attached.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (262370 => 262371)


--- trunk/Source/WebCore/ChangeLog	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebCore/ChangeLog	2020-06-01 09:24:05 UTC (rev 262371)
@@ -1,3 +1,15 @@
+2020-06-01  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [GTK4] Make inspector work
+        https://bugs.webkit.org/show_bug.cgi?id=212321
+
+        Reviewed by Adrian Perez de Castro.
+
+        Add gtk_native_dialog_run() for GTK4.
+
+        * platform/gtk/GtkVersioning.h:
+        (gtk_native_dialog_run):
+
 2020-06-01  Rob Buis  <rb...@igalia.com>
 
         Rename ResourceResponseBase::isHTTP to isInHTTPFamily

Modified: trunk/Source/WebCore/platform/gtk/GtkVersioning.h (262370 => 262371)


--- trunk/Source/WebCore/platform/gtk/GtkVersioning.h	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebCore/platform/gtk/GtkVersioning.h	2020-06-01 09:24:05 UTC (rev 262371)
@@ -183,6 +183,25 @@
     return TRUE;
 }
 
+static inline int
+gtk_native_dialog_run(GtkNativeDialog* dialog)
+{
+    struct RunDialogContext {
+        GMainLoop *loop;
+        int response;
+    } context = { g_main_loop_new(nullptr, FALSE), 0 };
+
+    gtk_native_dialog_show(dialog);
+    g_signal_connect(dialog, "response", G_CALLBACK(+[](GtkNativeDialog*, int response, RunDialogContext* context) {
+        context->response = response;
+        g_main_loop_quit(context->loop);
+    }), &context);
+    g_main_loop_run(context.loop);
+    g_main_loop_unref(context.loop);
+
+    return context.response;
+}
+
 #else // USE(GTK4)
 
 static inline void

Modified: trunk/Source/WebKit/ChangeLog (262370 => 262371)


--- trunk/Source/WebKit/ChangeLog	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebKit/ChangeLog	2020-06-01 09:24:05 UTC (rev 262371)
@@ -1,5 +1,28 @@
 2020-06-01  Carlos Garcia Campos  <cgar...@igalia.com>
 
+        [GTK4] Make inspector work
+        https://bugs.webkit.org/show_bug.cgi?id=212321
+
+        Reviewed by Adrian Perez de Castro.
+
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseRemoveDialog): Added instead of the generic webkitWebViewBaseRemoveChild that has been removed.
+        (webkitWebViewBaseRemoveWebInspector): Just unparent the inspector view instead of caling webkitWebViewBaseRemoveChild.
+        (webkitWebViewBaseDispose): Use specific functions to remove the children.
+        (webkitWebViewBaseSnapshot): Call gtk_widget_snapshot_child() on inspector view if present.
+        (webkitWebViewBaseRemoveChild): Deleted.
+        * UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp:
+        (WebKit::RemoteWebInspectorProxy::platformSave): Remove GTK4 ifdefs.
+        * UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:
+        (WebKit::WebInspectorProxy::platformSave): Ditto.
+        * UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp:
+        (webkit_inspector_window_init): Show title buttons in inspector window.
+        * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
+        (WebKit::AcceleratedBackingStoreWayland::snapshot): Use the texture size instead of the view size, since it's
+        different when the inspector is attached.
+
+2020-06-01  Carlos Garcia Campos  <cgar...@igalia.com>
+
         REGRESSION(r262184): fast/forms/implicit-submission.html is crashing
         https://bugs.webkit.org/show_bug.cgi?id=212520
 

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


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2020-06-01 09:24:05 UTC (rev 262371)
@@ -583,26 +583,18 @@
 }
 
 #if USE(GTK4)
-static void webkitWebViewBaseRemoveChild(WebKitWebViewBase* webViewBase, GtkWidget* widget)
+static void webkitWebViewBaseRemoveDialog(WebKitWebViewBase* webViewBase, GtkWidget* dialog)
 {
-    if (!widget)
+    WebKitWebViewBasePrivate* priv = webViewBase->priv;
+    if (!priv->dialog)
         return;
 
-    WebKitWebViewBasePrivate* priv = webViewBase->priv;
-    if (priv->inspectorView == widget) {
-        priv->inspectorView = nullptr;
-        priv->inspectorViewSize = 0;
-    } else if (priv->dialog == widget) {
-        g_object_remove_weak_pointer(G_OBJECT(widget), reinterpret_cast<void**>(&priv->dialog));
-        priv->dialog = nullptr;
-    } else if (priv->keyBindingTranslator.widget() == widget)
-        priv->keyBindingTranslator.invalidate();
-    else
-        RELEASE_ASSERT_NOT_REACHED();
+    g_object_remove_weak_pointer(G_OBJECT(dialog), reinterpret_cast<void**>(&priv->dialog));
+    g_clear_pointer(&priv->dialog, gtk_widget_unparent);
+}
+#endif
 
-    gtk_widget_unparent(widget);
-}
-#else
+#if !USE(GTK4)
 static void webkitWebViewBaseContainerRemove(GtkContainer* container, GtkWidget* widget)
 {
     WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(container);
@@ -682,7 +674,7 @@
         return;
 
 #if USE(GTK4)
-    webkitWebViewBaseRemoveChild(webViewBase, inspector);
+    g_clear_pointer(&webViewBase->priv->inspectorView, gtk_widget_unparent);
 #else
     gtk_container_remove(GTK_CONTAINER(webViewBase), inspector);
 #endif
@@ -700,9 +692,10 @@
 {
     WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(gobject);
 #if USE(GTK4)
-    webkitWebViewBaseRemoveChild(webView, webView->priv->dialog);
-    webkitWebViewBaseRemoveChild(webView, webView->priv->inspectorView);
-    webkitWebViewBaseRemoveChild(webView, webView->priv->keyBindingTranslator.widget());
+    webkitWebViewBaseRemoveDialog(webView, webView->priv->dialog);
+    webkitWebViewBaseRemoveWebInspector(webView, webView->priv->inspectorView);
+    if (auto* widget = webView->priv->keyBindingTranslator.widget())
+        gtk_widget_unparent(widget);
 #else
     g_clear_pointer(&webView->priv->dialog, gtk_widget_destroy);
 #endif
@@ -741,6 +734,9 @@
     ASSERT(drawingArea->isInAcceleratedCompositingMode());
     webViewBase->priv->acceleratedBackingStore->snapshot(snapshot);
 
+    if (webViewBase->priv->inspectorView)
+        gtk_widget_snapshot_child(widget, webViewBase->priv->inspectorView, snapshot);
+
     if (webViewBase->priv->dialog)
         gtk_widget_snapshot_child(widget, webViewBase->priv->dialog, snapshot);
 }

Modified: trunk/Source/WebKit/UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp (262370 => 262371)


--- trunk/Source/WebKit/UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebKit/UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp	2020-06-01 09:24:05 UTC (rev 262371)
@@ -120,13 +120,14 @@
 void RemoteWebInspectorProxy::platformSave(const String& suggestedURL, const String& content, bool base64Encoded, bool forceSaveDialog)
 {
     UNUSED_PARAM(forceSaveDialog);
-#if !USE(GTK4)
 
     GRefPtr<GtkFileChooserNative> dialog = adoptGRef(gtk_file_chooser_native_new("Save File",
         GTK_WINDOW(m_window), GTK_FILE_CHOOSER_ACTION_SAVE, "Save", "Cancel"));
 
     GtkFileChooser* chooser = GTK_FILE_CHOOSER(dialog.get());
+#if !USE(GTK4)
     gtk_file_chooser_set_do_overwrite_confirmation(chooser, TRUE);
+#endif
 
     // Some inspector views (Audits for instance) use a custom URI scheme, such
     // as web-inspector. So we can't rely on the URL being a valid file:/// URL
@@ -153,7 +154,6 @@
     GUniquePtr<char> path(g_file_get_path(file.get()));
     g_file_replace_contents_async(file.get(), data, dataLength, nullptr, false,
         G_FILE_CREATE_REPLACE_DESTINATION, nullptr, remoteFileReplaceContentsCallback, m_inspectorPage);
-#endif
 }
 
 void RemoteWebInspectorProxy::platformAppend(const String&, const String&)

Modified: trunk/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp (262370 => 262371)


--- trunk/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp	2020-06-01 09:24:05 UTC (rev 262371)
@@ -494,7 +494,7 @@
 void WebInspectorProxy::platformSave(const String& suggestedURL, const String& content, bool base64Encoded, bool forceSaveDialog)
 {
     UNUSED_PARAM(forceSaveDialog);
-#if !USE(GTK4)
+
     GtkWidget* parent = gtk_widget_get_toplevel(m_inspectorView);
     if (!WebCore::widgetIsOnscreenToplevelWindow(parent))
         return;
@@ -503,7 +503,9 @@
         GTK_WINDOW(parent), GTK_FILE_CHOOSER_ACTION_SAVE, "Save", "Cancel"));
 
     GtkFileChooser* chooser = GTK_FILE_CHOOSER(dialog.get());
+#if !USE(GTK4)
     gtk_file_chooser_set_do_overwrite_confirmation(chooser, TRUE);
+#endif
 
     // Some inspector views (Audits for instance) use a custom URI scheme, such
     // as web-inspector. So we can't rely on the URL being a valid file:/// URL
@@ -530,7 +532,6 @@
     GUniquePtr<char> path(g_file_get_path(file.get()));
     g_file_replace_contents_async(file.get(), data, dataLength, nullptr, false,
         G_FILE_CREATE_REPLACE_DESTINATION, nullptr, fileReplaceContentsCallback, m_inspectorPage);
-#endif
 }
 
 void WebInspectorProxy::platformAppend(const String&, const String&)

Modified: trunk/Source/WebKit/UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp (262370 => 262371)


--- trunk/Source/WebKit/UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebKit/UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp	2020-06-01 09:24:05 UTC (rev 262371)
@@ -76,6 +76,7 @@
     gtk_widget_hide(window->subtitleLabel);
 
     gtk_header_bar_set_title_widget(GTK_HEADER_BAR(window->headerBar), box);
+    gtk_header_bar_set_show_title_buttons(GTK_HEADER_BAR(window->headerBar), TRUE);
 #else
     gtk_header_bar_set_title(GTK_HEADER_BAR(window->headerBar), _("Web Inspector"));
     gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(window->headerBar), TRUE);

Modified: trunk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp (262370 => 262371)


--- trunk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp	2020-06-01 09:21:06 UTC (rev 262370)
+++ trunk/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp	2020-06-01 09:24:05 UTC (rev 262371)
@@ -372,18 +372,16 @@
     if (!tryEnsureTexture(texture, textureSize))
         return;
 
-    FloatSize viewSize(gtk_widget_get_width(m_webPage.viewWidget()), gtk_widget_get_height(m_webPage.viewWidget()));
+    graphene_rect_t bounds = GRAPHENE_RECT_INIT(0, 0, static_cast<float>(textureSize.width()), static_cast<float>(textureSize.height()));
     if (m_gdkGLContext) {
         GRefPtr<GdkTexture> gdkTexture = adoptGRef(gdk_gl_texture_new(m_gdkGLContext.get(), texture, textureSize.width(), textureSize.height(), nullptr, nullptr));
-        graphene_rect_t rect = GRAPHENE_RECT_INIT(0, 0, viewSize.width(), viewSize.height());
-        gtk_snapshot_append_texture(gtkSnapshot, gdkTexture.get(), &rect);
+        gtk_snapshot_append_texture(gtkSnapshot, gdkTexture.get(), &bounds);
         return;
     }
 
     downloadTexture(texture, textureSize);
 
-    graphene_rect_t rect = GRAPHENE_RECT_INIT(0, 0, viewSize.width(), viewSize.height());
-    RefPtr<cairo_t> cr = adoptRef(gtk_snapshot_append_cairo(gtkSnapshot, &rect));
+    RefPtr<cairo_t> cr = adoptRef(gtk_snapshot_append_cairo(gtkSnapshot, &bounds));
 
     // The compositor renders the texture flipped for gdk, fix that here.
     cairo_matrix_t transform;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to