# HG changeset patch # User Jan Dj¸«£rv # Date 1246522856 0 # Node ID b14ad5a1ef661b72c8cdcbde1c980ad1f0f08714 # Parent 49c52a6beed8fe1ac6ec7a336fe11e2b6ff6d2b9 (xg_frame_set_char_size): Do not set pixel width/height here or call change_frame_size. Just call flush_and_sync. (flush_and_sync): Reintroduced. diff -r 49c52a6beed8 -r b14ad5a1ef66 src/ChangeLog --- a/src/ChangeLog Thu Jul 02 07:48:23 2009 +0000 +++ b/src/ChangeLog Thu Jul 02 08:20:56 2009 +0000 @@ -1,7 +1,8 @@ 2009-07-02 Jan DjƤrv - * gtkutil.c (xg_frame_set_char_size): Do not set pixel width/height here or - call change_frame_size. + * gtkutil.c (xg_frame_set_char_size): Do not set pixel width/height + here or call change_frame_size. Just call flush_and_sync. + (flush_and_sync): Reintroduced. 2009-07-01 Jan DjƤrv diff -r 49c52a6beed8 -r b14ad5a1ef66 src/gtkutil.c --- a/src/gtkutil.c Thu Jul 02 07:48:23 2009 +0000 +++ b/src/gtkutil.c Thu Jul 02 08:20:56 2009 +0000 @@ -636,6 +636,7 @@ FRAME_PTR f; int pixelwidth, pixelheight; { + fprintf(stderr, "%s: %d/%d\n", __func__, pixelwidth, pixelheight); int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, pixelheight); int columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, pixelwidth); @@ -654,6 +655,20 @@ } } +static void +flush_and_sync (f) + FRAME_PTR f; +{ + gdk_window_process_all_updates (); + x_sync (f); + while (gtk_events_pending ()) + { + gtk_main_iteration (); + gdk_window_process_all_updates (); + x_sync (f); + } +} + /* Resize the outer window of frame F after chainging the height. COLUMNS/ROWS is the size the edit area shall have after the resize. */ @@ -697,8 +712,7 @@ request, XMonad does this all the time. The best we can do is try to sync, so lisp code sees the updated size as fast as possible. */ - gdk_window_process_all_updates (); - x_sync (f); + flush_and_sync (f); } /* Handle height changes (i.e. add/remove menu/toolbar).