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;