summaryrefslogtreecommitdiff
path: root/src/gtkutil.c
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2009-05-11 06:42:45 +0000
committerJan Djärv <jan.h.d@swipnet.se>2009-05-11 06:42:45 +0000
commit47a6002f34c4ae913fc696cfeb7d09c645040492 (patch)
tree35af7a8d5b5aa7c9e8b6992831e728ef5fc070c7 /src/gtkutil.c
parent372a93ac3988e4eb40a1d6776aaf86f9937f7da9 (diff)
downloademacs-47a6002f34c4ae913fc696cfeb7d09c645040492.tar.gz
* gtkutil.c (xg_frame_set_char_size): Set frame pixel width/height to
what we expect to get in the next ConfigureNotify event.
Diffstat (limited to 'src/gtkutil.c')
-rw-r--r--src/gtkutil.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 41f2518af83..3ea7c14629a 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -736,6 +736,29 @@ xg_frame_set_char_size (f, cols, rows)
x_wm_size_hint_off (f);
gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
pixelwidth, pixelheight);
+
+ /* Now, strictly speaking, we can't be sure that this is accurate,
+ but the window manager will get around to dealing with the size
+ change request eventually, and we'll hear how it went when the
+ ConfigureNotify event gets here.
+
+ We could just not bother storing any of this information here,
+ and let the ConfigureNotify event set everything up, but that
+ might be kind of confusing to the Lisp code, since size changes
+ wouldn't be reported in the frame parameters until some random
+ point in the future when the ConfigureNotify event arrives.
+
+ We pass 1 for DELAY since we can't run Lisp code inside of
+ a BLOCK_INPUT. */
+ change_frame_size (f, rows, cols, 0, 1, 0);
+ FRAME_PIXEL_WIDTH (f) = pixelwidth;
+ FRAME_PIXEL_HEIGHT (f) = pixelheight;
+
+ /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to
+ receive in the ConfigureNotify event; if we get what we asked
+ for, then the event won't cause the screen to become garbaged, so
+ we have to make sure to do it here. */
+ SET_FRAME_GARBAGED (f);
flush_and_sync (f);
x_wm_set_size_hint (f, 0, 0);
}