[gtk+/gtk-3-14] Make window scale changes work again



commit e9c4313337a2c5222f065c585cdd5d9af4d8382b
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Nov 3 22:35:11 2014 -0500

    Make window scale changes work again
    
    Commit afd9709afff151e04b84b91c6d90b7 made us keep impl window
    cairo surfaces around across changes of window scale. But the
    window scale setter forgot to update the size and scale of the
    surface. The effect of this was that toggling the window scale
    from 1 to 2 in the inspector was not causing the window to draw
    at twice the size, although the X window was made twice as big,
    and input was scaled too. Fix this by updating the surface when
    the window scale changes.
    
    (cherry picked from commit 113e1d1dc004afcb2fc4220a85291f27ece6fb3c)

 gdk/x11/gdkwindow-x11.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
---
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 2d0f824..5754404 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -1910,6 +1910,11 @@ _gdk_x11_window_set_window_scale (GdkWindow *window,
   impl = GDK_WINDOW_IMPL_X11 (window->impl);
 
   impl->window_scale = scale;
+#ifdef HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE
+  if (impl->cairo_surface)
+    cairo_surface_set_device_scale (impl->cairo_surface, impl->window_scale, impl->window_scale);
+#endif
+  _gdk_window_update_size (window);
 
   toplevel = _gdk_x11_window_get_toplevel (window);
   if (toplevel && window->window_type != GDK_WINDOW_FOREIGN)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]