Mercurial > vim
changeset 1453:159d87361e4b v7.1.168
updated for version 7.1-168
author | vimboss |
---|---|
date | Mon, 03 Dec 2007 21:21:03 +0000 |
parents | 1bc46149d919 |
children | 0713c530729b |
files | src/gui_w48.c src/version.c |
diffstat | 2 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -290,6 +290,11 @@ static struct /* Local variables */ static int s_button_pending = -1; + +/* s_getting_focus is set when we got focus but didn't see mouse-up event yet, + * so don't reset s_button_pending. */ +static int s_getting_focus = FALSE; + static int s_x_pending; static int s_y_pending; static UINT s_kFlags_pending; @@ -671,6 +676,8 @@ char_to_string(int ch, char_u *string, i { int vim_modifiers = 0x0; + s_getting_focus = FALSE; + if (keyFlags & MK_SHIFT) vim_modifiers |= MOUSE_SHIFT; if (keyFlags & MK_CONTROL) @@ -792,6 +799,7 @@ char_to_string(int ch, char_u *string, i { int button; + s_getting_focus = FALSE; if (s_button_pending > -1) { /* Delayed action for mouse down event */ @@ -1951,8 +1959,10 @@ gui_mch_wait_for_chars(int wtime) allow_scrollbar = FALSE; /* Clear pending mouse button, the release event may have been - * taken by the dialog window. */ - s_button_pending = -1; + * taken by the dialog window. But don't do this when getting + * focus, we need the mouse-up event then. */ + if (!s_getting_focus) + s_button_pending = -1; return OK; } @@ -2702,6 +2712,7 @@ gui_mch_show_popupmenu_at(vimmenu_T *men HWND hwndOldFocus) { gui_focus_change(TRUE); + s_getting_focus = TRUE; (void)MyWindowProc(hwnd, WM_SETFOCUS, (WPARAM)hwndOldFocus, 0); } @@ -2711,6 +2722,7 @@ gui_mch_show_popupmenu_at(vimmenu_T *men HWND hwndNewFocus) { gui_focus_change(FALSE); + s_getting_focus = FALSE; (void)MyWindowProc(hwnd, WM_KILLFOCUS, (WPARAM)hwndNewFocus, 0); }