aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interface-gtk/interface.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/interface-gtk/interface.c b/src/interface-gtk/interface.c
index d8cc7cd..a6369f1 100644
--- a/src/interface-gtk/interface.c
+++ b/src/interface-gtk/interface.c
@@ -1116,6 +1116,7 @@ teco_interface_cmdline_size_allocate_cb(GtkWidget *widget,
static gboolean
teco_interface_key_pressed_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
+ static gboolean recursed = FALSE;
g_autoptr(GError) error = NULL;
#ifdef DEBUG
@@ -1124,7 +1125,7 @@ teco_interface_key_pressed_cb(GtkWidget *widget, GdkEventKey *event, gpointer us
event->state & GDK_SHIFT_MASK, event->state & GDK_CONTROL_MASK);
#endif
- if (teco_cmdline.pc < teco_cmdline.effective_len) {
+ if (recursed) {
/*
* We're already executing, so this event is processed
* from gtk_main_iteration_do().
@@ -1151,6 +1152,8 @@ teco_interface_key_pressed_cb(GtkWidget *widget, GdkEventKey *event, gpointer us
return TRUE;
}
+ recursed = TRUE;
+
g_queue_push_tail(teco_interface.event_queue, gdk_event_copy((GdkEvent *)event));
GdkWindow *top_window = gdk_window_get_toplevel(gtk_widget_get_window(teco_interface.window));
@@ -1189,6 +1192,7 @@ teco_interface_key_pressed_cb(GtkWidget *widget, GdkEventKey *event, gpointer us
gtk_main_iteration_do(FALSE);
} while (!g_queue_is_empty(teco_interface.event_queue));
+ recursed = FALSE;
return TRUE;
}