blob: 7a579a6c2d05f0d7f576e9e5e7c1bded5ac37079 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
Index: chrome/browser/ui/libgtkui/gtk_ui.cc
diff --git a/chrome/browser/ui/libgtkui/gtk_ui.cc b/chrome/browser/ui/libgtkui/gtk_ui.cc
index cef1ef060470e395ed5c13fd59e297883d2f1cb6..7df1d0c511c142cfb92ae0f722b15063f316c778 100644
--- a/chrome/browser/ui/libgtkui/gtk_ui.cc
+++ b/chrome/browser/ui/libgtkui/gtk_ui.cc
@@ -315,52 +315,15 @@ gfx::FontRenderParams GetGtkFontRenderParams() {
return params;
}
-float GtkDpiToScaleFactor(int dpi) {
- // GTK multiplies the DPI by 1024 before storing it.
- return dpi / (1024 * kDefaultDPI);
-}
-
-gint GetGdkScreenSettingInt(const char* setting_name) {
- GValue value = G_VALUE_INIT;
- g_value_init(&value, G_TYPE_INT);
- if (!gdk_screen_get_setting(gdk_screen_get_default(), setting_name, &value))
- return -1;
- return g_value_get_int(&value);
-}
-
-float GetScaleFromGdkScreenSettings() {
- gint window_scale = GetGdkScreenSettingInt("gdk-window-scaling-factor");
- if (window_scale <= 0)
- return -1;
- gint font_dpi = GetGdkScreenSettingInt("gdk-unscaled-dpi");
- if (font_dpi <= 0)
- return -1;
- return window_scale * GtkDpiToScaleFactor(font_dpi);
-}
-
-float GetScaleFromXftDPI() {
- GtkSettings* gtk_settings = gtk_settings_get_default();
- CHECK(gtk_settings);
- gint gtk_dpi = -1;
- g_object_get(gtk_settings, "gtk-xft-dpi", >k_dpi, nullptr);
- if (gtk_dpi <= 0)
- return -1;
- return GtkDpiToScaleFactor(gtk_dpi);
-}
-
float GetRawDeviceScaleFactor() {
if (display::Display::HasForceDeviceScaleFactor())
return display::Display::GetForcedDeviceScaleFactor();
- float scale = GetScaleFromGdkScreenSettings();
- if (scale > 0)
- return scale;
-
- scale = GetScaleFromXftDPI();
- if (scale > 0)
- return scale;
-
- return 1;
+ GdkScreen* screen = gdk_screen_get_default();
+ gint scale = gdk_screen_get_monitor_scale_factor(
+ screen, gdk_screen_get_primary_monitor(screen));
+ gdouble resolution = gdk_screen_get_resolution(screen);
+ return resolution <= 0 ? scale : resolution * scale / kDefaultDPI;
}
views::LinuxUI::NonClientMiddleClickAction GetDefaultMiddleClickAction() {
|