# HG changeset patch # User Bram Moolenaar # Date 1309056540 -7200 # Node ID 7653420fdc454be197d59e420a1672909fac7b82 # Parent c3a638284c25a54bfb452eacf545473cb8152c7b updated for version 7.3.234 Problem: With GTK menu may be popping down. Solution: Use event time instead of GDK_CURRENT_TIME. (Hong Xu) diff --git a/src/gui.c b/src/gui.c --- a/src/gui.c +++ b/src/gui.c @@ -84,6 +84,10 @@ gui_start() gui.starting = TRUE; full_screen = FALSE; +#ifdef FEAT_GUI_GTK + gui.event_time = GDK_CURRENT_TIME; +#endif + #ifdef MAY_FORK if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive) dofork = FALSE; diff --git a/src/gui.h b/src/gui.h --- a/src/gui.h +++ b/src/gui.h @@ -401,6 +401,8 @@ typedef struct Gui GtkAccelGroup *accel_group; GtkWidget *filedlg; /* file selection dialog */ char_u *browse_fname; /* file name from filedlg */ + + guint32 event_time; #endif /* FEAT_GUI_GTK */ #if defined(FEAT_GUI_TABLINE) \ diff --git a/src/gui_gtk.c b/src/gui_gtk.c --- a/src/gui_gtk.c +++ b/src/gui_gtk.c @@ -1391,7 +1391,7 @@ gui_mch_show_popupmenu(vimmenu_T *menu) gtk_menu_popup(GTK_MENU(menu->submenu_id), NULL, NULL, (GtkMenuPositionFunc)NULL, NULL, - 3U, (guint32)GDK_CURRENT_TIME); + 3U, gui.event_time); } /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -88,8 +88,6 @@ extern void bonobo_dock_item_set_behavio # include #endif -static guint32 clipboard_event_time = CurrentTime; - /* * Easy-to-use macro for multihead support. */ @@ -934,7 +932,7 @@ key_press_event(GtkWidget *widget UNUSED guint state; char_u *s, *d; - clipboard_event_time = event->time; + gui.event_time = event->time; key_sym = event->keyval; state = event->state; @@ -1129,7 +1127,7 @@ key_release_event(GtkWidget *widget UNUS GdkEventKey *event, gpointer data UNUSED) { - clipboard_event_time = event->time; + gui.event_time = event->time; /* * GTK+ 2 input methods may do fancy stuff on key release events too. * With the default IM for instance, you can enter any UCS code point @@ -1622,7 +1620,7 @@ button_press_event(GtkWidget *widget, int x, y; int_u vim_modifiers; - clipboard_event_time = event->time; + gui.event_time = event->time; /* Make sure we have focus now we've been selected */ if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget)) @@ -1733,7 +1731,7 @@ button_release_event(GtkWidget *widget U int x, y; int_u vim_modifiers; - clipboard_event_time = event->time; + gui.event_time = event->time; /* Remove any motion "machine gun" timers used for automatic further extension of allocation areas if outside of the applications window @@ -5654,7 +5652,7 @@ clip_mch_own_selection(VimClipboard *cbd int success; success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom, - clipboard_event_time); + gui.event_time); gui_mch_update(); return (success) ? OK : FAIL; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -710,6 +710,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 234, +/**/ 233, /**/ 232,