From 1a7ec54699dbb1aaffba4c1d5cfdad54528bcd69 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sun, 8 Jun 2014 13:37:12 +0200 Subject: gtkui: improved keyboard handling --- plugins/gtkui/ddblistview.c | 6 ++++-- plugins/gtkui/deadbeef.glade | 4 ++-- plugins/gtkui/interface.c | 12 ++++++------ plugins/gtkui/search.c | 13 +++++-------- 4 files changed, 17 insertions(+), 18 deletions(-) (limited to 'plugins') diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c index 83c8d7d6..2e76f47d 100644 --- a/plugins/gtkui/ddblistview.c +++ b/plugins/gtkui/ddblistview.c @@ -3358,7 +3358,9 @@ ddb_listview_clear_sort (DdbListview *listview) { gboolean ddb_listview_list_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { DdbListview *listview = DDB_LISTVIEW (g_object_get_data (G_OBJECT (widget), "owner")); - return ddb_listview_handle_keypress (listview, event->keyval, event->state); - + if (!ddb_listview_handle_keypress (listview, event->keyval, event->state)) { + return on_mainwin_key_press_event (widget, event, user_data); + } + return TRUE; } diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade index c2082b28..967b97b3 100644 --- a/plugins/gtkui/deadbeef.glade +++ b/plugins/gtkui/deadbeef.glade @@ -22,7 +22,7 @@ GDK_GRAVITY_NORTH_WEST True False - + @@ -781,7 +781,7 @@ - + diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c index 49f4434d..d75ff742 100644 --- a/plugins/gtkui/interface.c +++ b/plugins/gtkui/interface.c @@ -461,9 +461,9 @@ create_mainwin (void) gtk_widget_show (statusbar); gtk_box_pack_start (GTK_BOX (vbox1), statusbar, FALSE, FALSE, 0); - g_signal_connect ((gpointer) mainwin, "key_press_event", - G_CALLBACK (on_mainwin_key_press_event), - NULL); + g_signal_connect_after ((gpointer) mainwin, "key_press_event", + G_CALLBACK (on_mainwin_key_press_event), + NULL); g_signal_connect ((gpointer) mainwin, "delete_event", G_CALLBACK (on_mainwin_delete_event), NULL); @@ -739,9 +739,9 @@ create_searchwin (void) g_signal_connect ((gpointer) searchwin, "window_state_event", G_CALLBACK (on_searchwin_window_state_event), NULL); - g_signal_connect_after ((gpointer) searchwin, "key_press_event", - G_CALLBACK (on_searchwin_key_press_event), - NULL); + g_signal_connect ((gpointer) searchwin, "key_press_event", + G_CALLBACK (on_searchwin_key_press_event), + NULL); g_signal_connect ((gpointer) searchentry, "changed", G_CALLBACK (on_searchentry_changed), NULL); diff --git a/plugins/gtkui/search.c b/plugins/gtkui/search.c index ed0d69e6..d6c9aed0 100644 --- a/plugins/gtkui/search.c +++ b/plugins/gtkui/search.c @@ -189,18 +189,14 @@ on_searchwin_key_press_event (GtkWidget *widget, { // that's for when user attempts to navigate list while entry has focus if (event->keyval == GDK_Escape) { - gtk_widget_hide (widget); + gtk_widget_hide (searchwin); + return TRUE; } else if (event->keyval == GDK_Return) { on_searchentry_activate (NULL, 0); + return TRUE; } - else if (event->keyval != GDK_Delete && event->keyval != GDK_Home && event->keyval != GDK_End){ - GtkWidget *pl = lookup_widget (searchwin, "searchlist"); - if (!ddb_listview_handle_keypress (DDB_LISTVIEW (pl), event->keyval, event->state)) { - return on_mainwin_key_press_event (widget, event, user_data); - } - } - return TRUE; + return FALSE; } gboolean @@ -411,6 +407,7 @@ DdbListviewBinding search_binding = { void search_playlist_init (GtkWidget *widget) { DdbListview *listview = DDB_LISTVIEW(widget); + g_signal_connect ((gpointer)listview->list, "key_press_event", G_CALLBACK (on_searchwin_key_press_event), listview); search_binding.ref = (void (*) (DdbListviewIter))deadbeef->pl_item_ref; search_binding.unref = (void (*) (DdbListviewIter))deadbeef->pl_item_unref; search_binding.is_selected = (int (*) (DdbListviewIter))deadbeef->pl_is_selected; -- cgit v1.2.3