summaryrefslogtreecommitdiff
path: root/mozilla-1573813.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mozilla-1573813.patch')
-rw-r--r--mozilla-1573813.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/mozilla-1573813.patch b/mozilla-1573813.patch
new file mode 100644
index 0000000..e9fca07
--- /dev/null
+++ b/mozilla-1573813.patch
@@ -0,0 +1,29 @@
+diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
+--- a/widget/gtk/nsWindow.cpp
++++ b/widget/gtk/nsWindow.cpp
+@@ -6577,11 +6577,22 @@
+ }
+
+ gint nsWindow::GdkScaleFactor() {
++ // For popup windows with parent window we need to get scale factor of the
++ // parent window. Otherwise the scale factor of the popup is not updated
++ // during it's hidden.
++ GdkWindow* scaledGdkWindow = mGdkWindow;
++ if (mToplevelParentWindow) {
++ scaledGdkWindow = gtk_widget_get_window(GTK_WIDGET(mToplevelParentWindow));
++ // Fallback for windows which parent has been unrealized.
++ if (!scaledGdkWindow) {
++ scaledGdkWindow = mGdkWindow;
++ }
++ }
+ // Available as of GTK 3.10+
+ static auto sGdkWindowGetScaleFactorPtr =
+ (gint(*)(GdkWindow*))dlsym(RTLD_DEFAULT, "gdk_window_get_scale_factor");
+- if (sGdkWindowGetScaleFactorPtr && mGdkWindow)
+- return (*sGdkWindowGetScaleFactorPtr)(mGdkWindow);
++ if (sGdkWindowGetScaleFactorPtr && scaledGdkWindow)
++ return (*sGdkWindowGetScaleFactorPtr)(scaledGdkWindow);
+ return ScreenHelperGTK::GetGTKMonitorScaleFactor();
+ }
+
+
bgstack15