зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1573813 - use parent window scale factor for the popup/tooltips; r=stransky
For popup windows with parent we need to get scale factor of the parent window. Because when the windows are hidden they're not receiving updates about changing scaling factor. So when moving from normal dpi to the hidpi monitor the newly opened popup windows will have the same scale Differential Revision: https://phabricator.services.mozilla.com/D41947 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
db62899801
Коммит
37a9627a4c
|
@ -6577,11 +6577,22 @@ void nsWindow::SetDrawsInTitlebar(bool aState) {
|
||||||
}
|
}
|
||||||
|
|
||||||
gint nsWindow::GdkScaleFactor() {
|
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+
|
// Available as of GTK 3.10+
|
||||||
static auto sGdkWindowGetScaleFactorPtr =
|
static auto sGdkWindowGetScaleFactorPtr =
|
||||||
(gint(*)(GdkWindow*))dlsym(RTLD_DEFAULT, "gdk_window_get_scale_factor");
|
(gint(*)(GdkWindow*))dlsym(RTLD_DEFAULT, "gdk_window_get_scale_factor");
|
||||||
if (sGdkWindowGetScaleFactorPtr && mGdkWindow)
|
if (sGdkWindowGetScaleFactorPtr && scaledGdkWindow)
|
||||||
return (*sGdkWindowGetScaleFactorPtr)(mGdkWindow);
|
return (*sGdkWindowGetScaleFactorPtr)(scaledGdkWindow);
|
||||||
return ScreenHelperGTK::GetGTKMonitorScaleFactor();
|
return ScreenHelperGTK::GetGTKMonitorScaleFactor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче