Date: Monday, October 10, 2016 @ 15:46:08 Author: heftig Revision: 278176
3.22.1+8+ge11df6c-2 Added: gtk3/trunk/0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch Modified: gtk3/trunk/PKGBUILD -----------------------------------------------------------------+ 0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch | 83 ++++++++++ PKGBUILD | 13 - 2 files changed, 91 insertions(+), 5 deletions(-) Added: 0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch =================================================================== --- 0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch (rev 0) +++ 0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch 2016-10-10 15:46:08 UTC (rev 278176) @@ -0,0 +1,83 @@ +From b4f90beaa96bb7ecf3e144f6d60b9fa9f3e9f582 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" <jan.steff...@gmail.com> +Date: Mon, 10 Oct 2016 16:34:28 +0200 +Subject: [PATCH] gdkscreen-x11: Fix screen and monitor size calculation + +The monitors are already in scaled pixels, so scaling again when retrieving +the screen size is wrong. + +With GDK_SCALE unset, the initial monitor sizes are unscaled, and when the +xsettings client sets a scale > 1, the monitor sizes should be updated. + +The end result is that the monitor sizes start out wrong, and get +corrected on the first xrandr event, while the screen size starts out +right and becomes wrong after the event. + +This patch fixes Firefox misplacing menus and popovers when the xrandr +configuration changes while it is running. + +Fix for the X11 side of + +https://bugzilla.gnome.org/show_bug.cgi?id=772202 +--- + gdk/x11/gdkscreen-x11.c | 16 ++++------------ + 1 file changed, 4 insertions(+), 12 deletions(-) + +diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c +index 450872d99df56b79..1852a7dea2ad18e4 100644 +--- a/gdk/x11/gdkscreen-x11.c ++++ b/gdk/x11/gdkscreen-x11.c +@@ -49,6 +49,7 @@ + static void gdk_x11_screen_dispose (GObject *object); + static void gdk_x11_screen_finalize (GObject *object); + static void init_randr_support (GdkScreen *screen); ++static void process_monitors_change (GdkScreen *screen); + + enum + { +@@ -82,13 +83,13 @@ gdk_x11_screen_get_display (GdkScreen *screen) + static gint + gdk_x11_screen_get_width (GdkScreen *screen) + { +- return GDK_X11_SCREEN (screen)->width / GDK_X11_SCREEN (screen)->window_scale; ++ return GDK_X11_SCREEN (screen)->width; + } + + static gint + gdk_x11_screen_get_height (GdkScreen *screen) + { +- return GDK_X11_SCREEN (screen)->height / GDK_X11_SCREEN (screen)->window_scale; ++ return GDK_X11_SCREEN (screen)->height; + } + + static gint +@@ -906,10 +907,8 @@ void + _gdk_x11_screen_set_window_scale (GdkX11Screen *x11_screen, + gint scale) + { +- GdkX11Display *x11_display = GDK_X11_DISPLAY (x11_screen->display); + GList *toplevels, *l; + GdkWindow *root; +- int i; + + if (x11_screen->window_scale == scale) + return; +@@ -928,14 +927,7 @@ _gdk_x11_screen_set_window_scale (GdkX11Screen *x11_screen, + _gdk_x11_window_set_window_scale (window, scale); + } + +- for (i = 0; i < x11_display->monitors->len; i++) +- { +- GdkMonitor *monitor = GDK_MONITOR (x11_display->monitors->pdata[i]); +- +- gdk_monitor_set_scale_factor (monitor, scale); +- } +- +- g_signal_emit_by_name (GDK_SCREEN (x11_screen), "monitors-changed"); ++ process_monitors_change (GDK_SCREEN (x11_screen)); + } + + /* +-- +2.10.0 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-10-10 15:32:56 UTC (rev 278175) +++ PKGBUILD 2016-10-10 15:46:08 UTC (rev 278176) @@ -4,8 +4,8 @@ pkgbase=gtk3 pkgname=(gtk3 gtk-update-icon-cache gtk3-print-backends) -pkgver=3.22.1 -pkgrel=1 +pkgver=3.22.1+8+ge11df6c +pkgrel=2 pkgdesc="GObject-based multi-platform GUI toolkit" arch=(i686 x86_64) url="http://www.gtk.org/" @@ -14,13 +14,15 @@ adwaita-icon-theme json-glib librsvg wayland-protocols desktop-file-utils mesa) makedepends=(gobject-introspection libcanberra gtk-doc git colord rest libcups) license=(LGPL) -_commit=ae7a1e0d08a19184b659ca38623431b210d0f84a # tags/3.22.1^0 +_commit=e11df6cca0c400f964d815bbe575cf04cc178a7c # gtk-3-22 source=("git://git.gnome.org/gtk+#commit=$_commit" + 0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch settings.ini gtk-query-immodules-3.0.hook gtk-update-icon-cache.hook gtk-update-icon-cache.script) sha256sums=('SKIP' + '209fbfaa4b83daf5c249a1cb1a6762d607f6d63034e80e2324f2fb3586a4f348' '01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202' 'de46e5514ff39a7a65e01e485e874775ab1c0ad20b8e94ada43f4a6af1370845' '496064a9dd6214bd58f689dd817dbdc4d7f17d42a8c9940a87018c3f829ce308' @@ -27,13 +29,14 @@ 'f1d3a0dbfd82f7339301abecdbe5f024337919b48bd0e09296bb0e79863b2541') pkgver() { - cd gtk+ - git describe --tags | sed 's/-/+/g' + cd gtk+ + git describe --tags | sed 's/-/+/g' } prepare() { mkdir print-backends cd gtk+ + patch -Np1 -i ../0001-gdkscreen-x11-Fix-screen-and-monitor-size-calculatio.patch NOCONFIGURE=1 ./autogen.sh }