changeset 276:b15976488069

updated for version 7.0074
author vimboss
date Fri, 20 May 2005 21:22:17 +0000
parents fb70e333c94e
children fe16c18c24a7
files src/gui.c src/gui_w48.c
diffstat 2 files changed, 21 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/gui.c
+++ b/src/gui.c
@@ -3242,10 +3242,29 @@ gui_init_which_components(oldval)
 	}
 #endif
 	if (need_set_size)
+	{
+#ifdef FEAT_GUI_GTK
+	    long    r = Rows;
+	    long    c = Columns;
+#endif
 	    /* Adjust the size of the window to make the text area keep the
 	     * same size and to avoid that part of our window is off-screen
 	     * and a scrollbar can't be used, for example. */
 	    gui_set_shellsize(FALSE, fix_size);
+
+#ifdef FEAT_GUI_GTK
+	    /* GTK has the annoying habit of sending us resize events when
+	     * changing the window size ourselves.  This mostly happens when
+	     * waiting for a character to arrive, quite unpredictably, and may
+	     * change Columns and Rows when we don't want it.  Wait for a
+	     * character here to avoid this effect.
+	     * If you remove this, please test this command for resizing
+	     * effects: ":vsp|q|vsp|q|vsp|q" */
+	    (void)char_avail();
+	    Rows = r;
+	    Columns = c;
+#endif
+	}
     }
 }
 
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -1667,7 +1667,7 @@ process_message(void)
 		 * mapped we want to use the mapping instead. */
 		if (vk == VK_F10
 			&& gui.menu_is_active
-			&& check_map(k10, State, FALSE) == NULL)
+			&& check_map(k10, State, FALSE, TRUE) == NULL)
 		    break;
 #endif
 		if (GetKeyState(VK_SHIFT) & 0x8000)
@@ -1781,7 +1781,7 @@ process_message(void)
     /* Check for <F10>: Default effect is to select the menu.  When <F10> is
      * mapped we need to stop it here to avoid strange effects (e.g., for the
      * key-up event) */
-    if (vk != VK_F10 || check_map(k10, State, FALSE) == NULL)
+    if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE) == NULL)
 #endif
 	DispatchMessage(&msg);
 }