diff -ur gmrun-0.9.2/src/gtkcompletionline.cc gmrun-0.9.2.new/src/gtkcompletionline.cc --- gmrun-0.9.2/src/gtkcompletionline.cc 2010-01-11 12:20:16.076644635 +0200 +++ gmrun-0.9.2.new/src/gtkcompletionline.cc 2010-01-11 12:21:11.815581518 +0200 @@ -75,6 +75,8 @@ static gboolean on_key_press(GtkCompletionLine *cl, GdkEventKey *event, gpointer data); +static gboolean +on_scroll(GtkCompletionLine *cl, GdkEventScroll *event, gpointer data); /* get_type */ guint gtk_completion_line_get_type(void) @@ -204,6 +206,8 @@ GTK_SIGNAL_FUNC(on_key_press), NULL); gtk_signal_connect(GTK_OBJECT(object), "key_release_event", GTK_SIGNAL_FUNC(on_key_press), NULL); + gtk_signal_connect(GTK_OBJECT(object), "scroll-event", + GTK_SIGNAL_FUNC(on_scroll), NULL); object->hist = new HistoryFile(); @@ -954,6 +958,45 @@ } static gboolean +on_scroll(GtkCompletionLine *cl, GdkEventScroll *event, gpointer data) +{ + if (event->direction == GDK_SCROLL_UP) { + if (cl->win_compl != NULL) { + int &item = cl->list_compl_items_where; + item--; + if (item < 0) { + item = 0; + } else { + complete_from_list(cl); + } + } else { + up_history(cl); + } + if (MODE_SRC) { + search_off(cl); + } + return TRUE; + } else if (event->direction == GDK_SCROLL_DOWN) { + if (cl->win_compl != NULL) { + int &item = cl->list_compl_items_where; + item++; + if (item >= cl->list_compl_nr_rows) { + item = cl->list_compl_nr_rows - 1; + } else { + complete_from_list(cl); + } + } else { + down_history(cl); + } + if (MODE_SRC) { + search_off(cl); + } + return TRUE; + } + return FALSE; +} + +static gboolean on_key_press(GtkCompletionLine *cl, GdkEventKey *event, gpointer data) { static gint tt_id = -1; Only in gmrun-0.9.2.new/src: gtkcompletionline.cc.orig