summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-05-20 21:22:17 +0000
committerBram Moolenaar <Bram@vim.org>2005-05-20 21:22:17 +0000
commitc1087e64bcfece96de8fa812535154435bbaaba5 (patch)
treee9dac962f08979f987611f73c87d0a4d70b96d4a
parent686f51ef8e2fea4b13150bfae39e1273ce0af4c0 (diff)
downloadvim-git-c1087e64bcfece96de8fa812535154435bbaaba5.tar.gz
updated for version 7.0074
-rw-r--r--src/gui.c19
-rw-r--r--src/gui_w48.c4
2 files changed, 21 insertions, 2 deletions
diff --git a/src/gui.c b/src/gui.c
index 090160ad0..35025776e 100644
--- 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
+ }
}
}
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 2e0965583..48a87d945 100644
--- 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);
}