WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-210463-20200414021443.patch (text/plain), 19.68 KB, created by
Adrian Perez
on 2020-04-13 16:14:45 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Adrian Perez
Created:
2020-04-13 16:14:45 PDT
Size:
19.68 KB
patch
obsolete
>Subversion Revision: 260017 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index a8f58353332edfc6b2c1eecb5cedce760208539e..44518d579abd86be995f4b07deb28d20809c58ea 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,26 @@ >+2020-04-13 Adrian Perez de Castro <aperez@igalia.com> >+ >+ [GTK4] Provide an alternative to gtk_widget_{get,is}_toplevel() >+ https://bugs.webkit.org/show_bug.cgi?id=210463 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add utility functions to work with "toplevel" widgets which work on GTK3 and GTK4. >+ >+ No new tests needed. >+ >+ * platform/gtk/GtkUtilities.cpp: >+ (WebCore::gtkIsToplevelWidget): Added. Uses gtk_widget_is_toplevel() on GTK3, and checks >+ whether the widget is a GtkWindow on GTK4, as those are the only widgets which implement >+ GtkRoot and can be shown on screen. >+ (WebCore::gtkGetToplevelWidget): Added. Uses gtk_widget_get_toplevel() on GTK3, and >+ gtk_widget_get_root() on GTK4. >+ (WebCore::convertWidgetPointToScreenPoint): Use gtk{Get,Is}ToplevelWidget(), and account >+ for the fact that under GTK4 it is not possible to obtain the position of a window. >+ (WebCore::widgetIsOnscreenToplevelWindow): >+ * platform/gtk/GtkUtilities.h: Add prototypes for the new gtk{Is,Get}ToplevelWidget() >+ functions. >+ > 2020-04-13 Adrian Perez de Castro <aperez@igalia.com> > > [GTK4] Adapt to cursor API changes >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 6b6615f5fac83f82f445c972396fd8abec0d89a7..bbf47c8741abffb1ff42a954b98f47ff41a4aafb 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,37 @@ >+2020-04-13 Adrian Perez de Castro <aperez@igalia.com> >+ >+ [GTK4] Provide an alternative to gtk_widget_{get,is}_toplevel() >+ https://bugs.webkit.org/show_bug.cgi?id=210463 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Make use of the WebCore::gtk{Is,Get}ToplevelWidget() utility functions. >+ >+ * UIProcess/API/glib/WebKitUIClient.cpp: Make use of WebCore::gtk{Is,Get}ToplevelWidget(). >+ Also account for the fact that GTK4 does not have the GtkWidget.configure-event signal, >+ and that it is not possible to get window positions. >+ * UIProcess/API/gtk/WebKitPrintOperation.cpp: >+ (webkitPrintOperationRunDialogForFrame): Make use of WebCore::gtk{Is,Get}ToplevelWidget(). >+ * UIProcess/API/gtk/WebKitWebViewBase.cpp: >+ (webkitWebViewBaseHierarchyChanged): Ditto. >+ (webkitWebViewBaseEnterFullScreen): Ditto. >+ (webkitWebViewBaseExitFullScreen): Ditto. >+ * UIProcess/API/gtk/WebKitWebViewGtk.cpp: >+ (webkitWebViewRunFileChooser): Ditto. >+ (webkitWebViewMaximizeWindow): Ditto. >+ (webkitWebViewMinimizeWindow): Ditto. >+ (webkitWebViewRestoreWindow): Ditto. >+ * UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp: >+ (WebKit::WebInspectorProxy::platformBringToFront): Ditto. >+ (WebKit::WebInspectorProxy::platformIsFront): Ditto. >+ (WebKit::WebInspectorProxy::platformSave): Ditto. >+ * UIProcess/gtk/WebColorPickerGtk.cpp: >+ (WebKit::WebColorPickerGtk::showColorPicker): Ditto. >+ * UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp: >+ (WebKit::WebDataListSuggestionsDropdownGtk::show): Ditto. >+ * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: >+ (WebKit::WebPopupMenuProxyGtk::showPopupMenu): Ditto. >+ > 2020-04-13 Per Arne Vollan <pvollan@apple.com> > > [iOS] Add message filtering to all iokit open rules >diff --git a/Source/WebCore/platform/gtk/GtkUtilities.cpp b/Source/WebCore/platform/gtk/GtkUtilities.cpp >index 881e3ef9db5808ed1b555c4a60e324168ab23b49..ee86a6d60332891b01464f12179c02747099b29b 100644 >--- a/Source/WebCore/platform/gtk/GtkUtilities.cpp >+++ b/Source/WebCore/platform/gtk/GtkUtilities.cpp >@@ -25,32 +25,62 @@ > > namespace WebCore { > >+bool gtkIsToplevelWidget(GtkWidget* widget) >+{ >+#if USE(GTK4) >+ // In theory anything which implements GtkRoot can be a toplevel widget, >+ // in practice, only the ones which are GtkWindow or derived need to be >+ // considered here. >+ return GTK_IS_WINDOW(widget); >+#else >+ return gtk_widget_is_toplevel(widget); >+#endif // USE(GTK4) >+} >+ >+GtkWidget* gtkGetToplevelWidget(GtkWidget* widget) >+{ >+#if USE(GTK4) >+ return GTK_WIDGET(gtk_widget_get_root(widget)); >+#else >+ return gtk_widget_get_toplevel(widget); >+#endif // USE(GTK4) >+} >+ > IntPoint convertWidgetPointToScreenPoint(GtkWidget* widget, const IntPoint& point) > { > // FIXME: This is actually a very tricky operation and the results of this function should > // only be thought of as a guess. For instance, sometimes it may not correctly take into > // account window decorations. > >- GtkWidget* toplevelWidget = gtk_widget_get_toplevel(widget); >- if (!toplevelWidget || !gtk_widget_is_toplevel(toplevelWidget) || !GTK_IS_WINDOW(toplevelWidget)) >+ GtkWidget* toplevelWidget = gtkGetToplevelWidget(widget); >+ >+ if (!toplevelWidget || !gtkIsToplevelWidget(toplevelWidget) || !GTK_IS_WINDOW(toplevelWidget)) > return point; > >+ int windowOriginX = 0, windowOriginY = 0; >+#if !USE(GTK4) > GdkWindow* gdkWindow = gtk_widget_get_window(toplevelWidget); > if (!gdkWindow) > return point; >+ gdk_window_get_origin(gdkWindow, &windowOriginX, &windowOriginY); >+#endif // !USE(GTK4) > > int xInWindow, yInWindow; > gtk_widget_translate_coordinates(widget, toplevelWidget, point.x(), point.y(), &xInWindow, &yInWindow); > >- int windowOriginX, windowOriginY; >- gdk_window_get_origin(gdkWindow, &windowOriginX, &windowOriginY); >- > return IntPoint(windowOriginX + xInWindow, windowOriginY + yInWindow); > } > > bool widgetIsOnscreenToplevelWindow(GtkWidget* widget) > { >- return widget && gtk_widget_is_toplevel(widget) && GTK_IS_WINDOW(widget) && !GTK_IS_OFFSCREEN_WINDOW(widget); >+ const bool isToplevelWidget = widget && gtkIsToplevelWidget(widget); >+ >+#if USE(GTK4) >+ // A toplevel widget in GTK4 is always a window, there is no need for further checks. >+ return isToplevelWidget; >+#else >+ return isToplevelWidget && GTK_IS_WINDOW(widget) && !GTK_IS_OFFSCREEN_WINDOW(widget); >+#endif // USE(GTK4) > } > > template<> >diff --git a/Source/WebCore/platform/gtk/GtkUtilities.h b/Source/WebCore/platform/gtk/GtkUtilities.h >index fa8967edb7f56ff03cab362c1be4957f18f89bf2..598c3703fbd142de825df7b20a5b5e5b469f318a 100644 >--- a/Source/WebCore/platform/gtk/GtkUtilities.h >+++ b/Source/WebCore/platform/gtk/GtkUtilities.h >@@ -24,10 +24,14 @@ > #include <wtf/text/CString.h> > #include <wtf/text/WTFString.h> > >+typedef struct _GtkWidget GtkWidget; >+ > namespace WebCore { > > class IntPoint; > >+bool gtkIsToplevelWidget(GtkWidget*); >+GtkWidget* gtkGetToplevelWidget(GtkWidget*); > IntPoint convertWidgetPointToScreenPoint(GtkWidget*, const IntPoint&); > bool widgetIsOnscreenToplevelWindow(GtkWidget*); > >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp b/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp >index e7a479bfeb52e49fe7fedd16757beec4c67dce7f..08d46e3f76f3fc61b1b7af7f7f01454501f76c8d 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp >@@ -139,7 +139,7 @@ private: > webkitWindowPropertiesSetResizable(webkit_web_view_get_window_properties(m_webView), resizable); > } > >-#if PLATFORM(GTK) >+#if PLATFORM(GTK) && !USE(GTK4) > static gboolean windowConfigureEventCallback(GtkWindow* window, GdkEventConfigure*, GdkRectangle* targetGeometry) > { > GdkRectangle geometry = { 0, 0, 0, 0 }; >@@ -165,19 +165,21 @@ private: > { > RunLoop::current().stop(); > } >-#endif >+#endif // PLATFORM(GTK) && !USE(GTK4) > > void setWindowFrame(WebPageProxy&, const WebCore::FloatRect& frame) final > { > #if PLATFORM(GTK) > GdkRectangle geometry = WebCore::IntRect(frame); >- GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); >+ GtkWidget* window = WebCore::gtkGetToplevelWidget(GTK_WIDGET(m_webView)); > if (webkit_web_view_is_controlled_by_automation(m_webView) && WebCore::widgetIsOnscreenToplevelWindow(window) && gtk_widget_get_visible(window)) { > bool needsMove = false; >+ // Querying and setting window positions is not supported in GTK4. >+#if !USE(GTK4) > // Position a toplevel window is not supported under wayland. > #if PLATFORM(WAYLAND) > if (WebCore::PlatformDisplay::sharedDisplay().type() != WebCore::PlatformDisplay::Type::Wayland) >-#endif >+#endif // PLATFORM(WAYLAND) > { > if (geometry.x >= 0 && geometry.y >= 0) { > int x, y; >@@ -185,6 +187,7 @@ private: > needsMove = x != geometry.x || y != geometry.y; > } > } >+#endif // !USE(GTK4) > > bool needsResize = false; > if (geometry.width > 0 && geometry.height > 0) { >@@ -196,9 +199,12 @@ private: > if (!needsMove && !needsResize) > return; > >+ // There is no GtkWidget.configure-event in GTK4, move is not supported. >+#if !USE(GTK4) > auto signalID = g_signal_connect(window, "configure-event", G_CALLBACK(windowConfigureEventCallback), &geometry); > if (needsMove) > gtk_window_move(GTK_WINDOW(window), geometry.x, geometry.y); >+#endif // !USE(GTK4) > if (needsResize) > gtk_window_resize(GTK_WINDOW(window), geometry.width, geometry.height); > >@@ -212,16 +218,18 @@ private: > g_signal_handler_disconnect(window, signalID); > } else > webkitWindowPropertiesSetGeometry(webkit_web_view_get_window_properties(m_webView), &geometry); >-#endif >+#endif // PLATFORM(GTK) > } > > void windowFrame(WebPageProxy&, Function<void(WebCore::FloatRect)>&& completionHandler) final > { > #if PLATFORM(GTK) > GdkRectangle geometry = { 0, 0, 0, 0 }; >- GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView)); >+ GtkWidget* window = WebCore::gtkGetToplevelWidget(GTK_WIDGET(m_webView)); > if (WebCore::widgetIsOnscreenToplevelWindow(window) && gtk_widget_get_visible(window)) { >+#if !USE(GTK4) > gtk_window_get_position(GTK_WINDOW(window), &geometry.x, &geometry.y); >+#endif // !USE(GTK4) > gtk_window_get_size(GTK_WINDOW(window), &geometry.width, &geometry.height); > } > completionHandler(WebCore::FloatRect(geometry)); >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp >index 40834a8e0b13673ffa683bca7fb4807f5f3d0aac..b541782980b17acf828dc2d7f9e4b71efbec4443 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitPrintOperation.cpp >@@ -334,7 +334,7 @@ WebKitPrintOperationResponse webkitPrintOperationRunDialogForFrame(WebKitPrintOp > { > WebKitPrintOperationPrivate* priv = printOperation->priv; > if (!parent) { >- GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(priv->webView)); >+ GtkWidget* toplevel = WebCore::gtkGetToplevelWidget(GTK_WIDGET(priv->webView)); > if (WebCore::widgetIsOnscreenToplevelWindow(toplevel)) > parent = GTK_WINDOW(toplevel); > } >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >index be387d1b4732af9bb1af1245be4163fa31b5f7b3..6ab4ceee59cc3743feb351fab2ee49da8620d470 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >@@ -1393,7 +1393,7 @@ static void webkitWebViewBaseHierarchyChanged(GtkWidget* widget, GtkWidget* oldT > } > > if (!oldToplevel) { >- GtkWidget* toplevel = gtk_widget_get_toplevel(widget); >+ GtkWidget* toplevel = WebCore::gtkGetToplevelWidget(widget); > if (widgetIsOnscreenToplevelWindow(toplevel)) > webkitWebViewBaseSetToplevelOnScreenWindow(WEBKIT_WEB_VIEW_BASE(widget), GTK_WINDOW(toplevel)); > } >@@ -1557,8 +1557,8 @@ void webkitWebViewBaseEnterFullScreen(WebKitWebViewBase* webkitWebViewBase) > WebFullScreenManagerProxy* fullScreenManagerProxy = priv->pageProxy->fullScreenManager(); > fullScreenManagerProxy->willEnterFullScreen(); > >- GtkWidget* topLevelWindow = gtk_widget_get_toplevel(GTK_WIDGET(webkitWebViewBase)); >- if (gtk_widget_is_toplevel(topLevelWindow)) >+ GtkWidget* topLevelWindow = WebCore::gtkGetToplevelWidget(GTK_WIDGET(webkitWebViewBase)); >+ if (WebCore::gtkIsToplevelWidget(topLevelWindow)) > gtk_window_fullscreen(GTK_WINDOW(topLevelWindow)); > fullScreenManagerProxy->didEnterFullScreen(); > priv->fullScreenModeActive = true; >@@ -1575,8 +1575,8 @@ void webkitWebViewBaseExitFullScreen(WebKitWebViewBase* webkitWebViewBase) > WebFullScreenManagerProxy* fullScreenManagerProxy = priv->pageProxy->fullScreenManager(); > fullScreenManagerProxy->willExitFullScreen(); > >- GtkWidget* topLevelWindow = gtk_widget_get_toplevel(GTK_WIDGET(webkitWebViewBase)); >- if (gtk_widget_is_toplevel(topLevelWindow)) >+ GtkWidget* topLevelWindow = WebCore::gtkGetToplevelWidget(GTK_WIDGET(webkitWebViewBase)); >+ if (WebCore::gtkIsToplevelWidget(topLevelWindow)) > gtk_window_unfullscreen(GTK_WINDOW(topLevelWindow)); > fullScreenManagerProxy->didExitFullScreen(); > priv->fullScreenModeActive = false; >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp >index af71e3b4d9e33cb134aeb44577081683d240cc08..92bc221ef548f886b7483814b3b784ca5e8d9102 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp >@@ -67,7 +67,7 @@ static void fileChooserDialogResponseCallback(GtkFileChooser* dialog, gint respo > > gboolean webkitWebViewRunFileChooser(WebKitWebView* webView, WebKitFileChooserRequest* request) > { >- GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(webView)); >+ GtkWidget* toplevel = WebCore::gtkGetToplevelWidget(GTK_WIDGET(webView)); > if (!WebCore::widgetIsOnscreenToplevelWindow(toplevel)) > toplevel = 0; > >@@ -156,8 +156,8 @@ static gboolean windowStateEventCallback(GtkWidget* window, GdkEventWindowState* > > void webkitWebViewMaximizeWindow(WebKitWebView* view, CompletionHandler<void()>&& completionHandler) > { >- auto* topLevel = gtk_widget_get_toplevel(GTK_WIDGET(view)); >- if (!gtk_widget_is_toplevel(topLevel)) { >+ auto* topLevel = WebCore::gtkGetToplevelWidget(GTK_WIDGET(view)); >+ if (!WebCore::gtkIsToplevelWidget(topLevel)) { > completionHandler(); > return; > } >@@ -189,8 +189,8 @@ void webkitWebViewMaximizeWindow(WebKitWebView* view, CompletionHandler<void()>& > > void webkitWebViewMinimizeWindow(WebKitWebView* view, CompletionHandler<void()>&& completionHandler) > { >- auto* topLevel = gtk_widget_get_toplevel(GTK_WIDGET(view)); >- if (!gtk_widget_is_toplevel(topLevel)) { >+ auto* topLevel = WebCore::gtkGetToplevelWidget(GTK_WIDGET(view)); >+ if (!WebCore::gtkIsToplevelWidget(topLevel)) { > completionHandler(); > return; > } >@@ -206,8 +206,8 @@ void webkitWebViewMinimizeWindow(WebKitWebView* view, CompletionHandler<void()>& > > void webkitWebViewRestoreWindow(WebKitWebView* view, CompletionHandler<void()>&& completionHandler) > { >- auto* topLevel = gtk_widget_get_toplevel(GTK_WIDGET(view)); >- if (!gtk_widget_is_toplevel(topLevel)) { >+ auto* topLevel = WebCore::gtkGetToplevelWidget(GTK_WIDGET(view)); >+ if (!WebCore::gtkIsToplevelWidget(topLevel)) { > completionHandler(); > return; > } >diff --git a/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp b/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp >index 8ad92ed84c0a838a61e40626c4c209d2c693f1ea..d94eee846574c4986b5cf23d39e600720eb01308 100644 >--- a/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp >+++ b/Source/WebKit/UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp >@@ -314,7 +314,7 @@ void WebInspectorProxy::platformBringToFront() > if (m_client && m_client->bringToFront(*this)) > return; > >- GtkWidget* parent = gtk_widget_get_toplevel(m_inspectorView); >+ GtkWidget* parent = WebCore::gtkGetToplevelWidget(m_inspectorView); > if (WebCore::widgetIsOnscreenToplevelWindow(parent)) > gtk_window_present(GTK_WINDOW(parent)); > } >@@ -326,7 +326,7 @@ void WebInspectorProxy::platformBringInspectedPageToFront() > > bool WebInspectorProxy::platformIsFront() > { >- GtkWidget* parent = gtk_widget_get_toplevel(m_inspectorView); >+ GtkWidget* parent = WebCore::gtkGetToplevelWidget(m_inspectorView); > if (WebCore::widgetIsOnscreenToplevelWindow(parent)) > return m_isVisible && gtk_window_is_active(GTK_WINDOW(parent)); > return false; >@@ -486,7 +486,7 @@ void WebInspectorProxy::platformSave(const String& suggestedURL, const String& c > { > UNUSED_PARAM(forceSaveDialog); > >- GtkWidget* parent = gtk_widget_get_toplevel(m_inspectorView); >+ GtkWidget* parent = WebCore::gtkGetToplevelWidget(m_inspectorView); > if (!WebCore::widgetIsOnscreenToplevelWindow(parent)) > return; > >diff --git a/Source/WebKit/UIProcess/gtk/WebColorPickerGtk.cpp b/Source/WebKit/UIProcess/gtk/WebColorPickerGtk.cpp >index 14cf211e7d424ad32ac91e0489df7d97e9abfd22..b83af4712ed73bf3dd8fd3daf9cb3663fb3e5b31 100644 >--- a/Source/WebKit/UIProcess/gtk/WebColorPickerGtk.cpp >+++ b/Source/WebKit/UIProcess/gtk/WebColorPickerGtk.cpp >@@ -98,7 +98,7 @@ void WebColorPickerGtk::showColorPicker(const Color& color) > m_initialColor = color; > > if (!m_colorChooser) { >- GtkWidget* toplevel = gtk_widget_get_toplevel(m_webView); >+ GtkWidget* toplevel = WebCore::gtkGetToplevelWidget(m_webView); > m_colorChooser = gtk_color_chooser_dialog_new(_("Select Color"), WebCore::widgetIsOnscreenToplevelWindow(toplevel) ? GTK_WINDOW(toplevel) : nullptr); > gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(m_colorChooser), &m_initialColor); > g_signal_connect(m_colorChooser, "notify::rgba", G_CALLBACK(WebColorPickerGtk::colorChooserDialogRGBAChangedCallback), this); >diff --git a/Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp b/Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp >index 6a367890402b906c517104f8e0ca2d511f190abd..072bc78931ddfdbd258015b1d5a83cb76c492e95 100644 >--- a/Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp >+++ b/Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp >@@ -166,7 +166,7 @@ void WebDataListSuggestionsDropdownGtk::show(WebCore::DataListSuggestionInformat > menuPosition.move(0, -menuRequisition.height); > gtk_window_move(GTK_WINDOW(m_popup), menuPosition.x(), menuPosition.y()); > >- auto* toplevel = gtk_widget_get_toplevel(m_webView); >+ auto* toplevel = WebCore::gtkGetToplevelWidget(m_webView); > if (GTK_IS_WINDOW(toplevel)) { > gtk_window_set_transient_for(GTK_WINDOW(m_popup), GTK_WINDOW(toplevel)); > gtk_window_group_add_window(gtk_window_get_group(GTK_WINDOW(toplevel)), GTK_WINDOW(m_popup)); >diff --git a/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp b/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp >index 4ead77d10d68618547a9eb6b979bae81c2344b4b..b708bebf4710a8a6276529266633b125e506fa1a 100644 >--- a/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp >+++ b/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp >@@ -252,7 +252,7 @@ void WebPopupMenuProxyGtk::showPopupMenu(const IntRect& rect, TextDirection, dou > if (!itemHeight) > return; > >- auto* toplevel = gtk_widget_get_toplevel(m_webView); >+ auto* toplevel = WebCore::gtkGetToplevelWidget(m_webView); > if (GTK_IS_WINDOW(toplevel)) { > gtk_window_set_transient_for(GTK_WINDOW(m_popup), GTK_WINDOW(toplevel)); > gtk_window_group_add_window(gtk_window_get_group(GTK_WINDOW(toplevel)), GTK_WINDOW(m_popup));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 210463
:
396354
|
396406
|
396525
|
396526