diff options
Diffstat (limited to 'mozilla-1573813.patch')
-rw-r--r-- | mozilla-1573813.patch | 29 |
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(); + } + + |