(xg_frame_set_char_size): Do not set pixel width/height
authorJan Djärv <jan.h.d@swipnet.se>
Thu, 2 Jul 2009 08:20:56 +0000 (08:20 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Thu, 2 Jul 2009 08:20:56 +0000 (08:20 +0000)
here or call change_frame_size. Just call flush_and_sync.
(flush_and_sync): Reintroduced.

src/ChangeLog
src/gtkutil.c

index 7c26644..673c716 100644 (file)
@@ -1,7 +1,8 @@
 2009-07-02  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * 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  <jan.h.d@swipnet.se>
 
index 4ce15ae..2bca0de 100644 (file)
@@ -636,6 +636,7 @@ xg_frame_resized (f, pixelwidth, pixelheight)
      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 @@ xg_frame_resized (f, pixelwidth, pixelheight)
     }
 }
 
+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 @@ xg_frame_set_char_size (f, cols, rows)
      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).