From b2b65f66e30b31d992447164b46f8f33efed05dd Mon Sep 17 00:00:00 2001 From: "Sascha Kuehndel (InuSasha)" Date: Thu, 14 Dec 2017 16:48:20 +0100 Subject: [PATCH] chromium: fix build with gtk2 --- .../chromium-0011-revert-8d1845c2-gtk2.patch | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 packages/addons/browser/chromium/patches/chromium-0011-revert-8d1845c2-gtk2.patch diff --git a/packages/addons/browser/chromium/patches/chromium-0011-revert-8d1845c2-gtk2.patch b/packages/addons/browser/chromium/patches/chromium-0011-revert-8d1845c2-gtk2.patch new file mode 100644 index 0000000000..28b21645e1 --- /dev/null +++ b/packages/addons/browser/chromium/patches/chromium-0011-revert-8d1845c2-gtk2.patch @@ -0,0 +1,63 @@ +diff --git a/chrome/browser/ui/libgtkui/gtk_ui.cc b/chrome/browser/ui/libgtkui/gtk_ui.cc +index cef1ef0..7df1d0c 100644 +--- a/chrome/browser/ui/libgtkui/gtk_ui.cc ++++ b/chrome/browser/ui/libgtkui/gtk_ui.cc + +@@ -315,15 +315,52 @@ + 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(); + +- 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; ++ float scale = GetScaleFromGdkScreenSettings(); ++ if (scale > 0) ++ return scale; ++ ++ scale = GetScaleFromXftDPI(); ++ if (scale > 0) ++ return scale; ++ ++ return 1; + } + + views::LinuxUI::NonClientMiddleClickAction GetDefaultMiddleClickAction() {