ocarina: Reenable some keyboard shortcuts
I have to track if a filter-text entry has focus to do this properly, otherwise using a shortcut key while searching a playlist will trigger that shortcut. Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
c026686a1b
commit
55431421bf
|
@ -29,6 +29,7 @@ string run_chooser(const string &);
|
|||
void init_window();
|
||||
|
||||
/* playlist.cpp */
|
||||
bool playlist_entry_focused();
|
||||
void update_playlist(notify_t, libsaria::PlaylistNotification *);
|
||||
void init_playlist();
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ struct PlaylistWidgets {
|
|||
PlaylistWidgets library_widgets;
|
||||
PlaylistWidgets recent_widgets;
|
||||
PlaylistWidgets banned_widgets;
|
||||
static GtkWidget *focused_entry = NULL;
|
||||
|
||||
static gboolean is_visible(GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
|
||||
{
|
||||
|
@ -39,6 +40,20 @@ static void do_filter(GtkWidget *entry, gpointer d)
|
|||
plist->set_filter_text(text);
|
||||
}
|
||||
|
||||
static gboolean on_focus_change(GtkWidget *entry, GdkEvent *event, gpointer data)
|
||||
{
|
||||
if (gtk_widget_is_focus(entry))
|
||||
focused_entry = entry;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool playlist_entry_focused()
|
||||
{
|
||||
if (!focused_entry)
|
||||
return false;
|
||||
return gtk_widget_is_focus(focused_entry);
|
||||
}
|
||||
|
||||
static void track_selected(GtkWidget *treeview, GtkTreePath *path,
|
||||
GtkTreeViewColumn *col, gpointer data)
|
||||
{
|
||||
|
@ -211,6 +226,7 @@ static void init_playlist_tab(struct PlaylistWidgets *widgets,
|
|||
|
||||
connect_signal(view_name, "row-activated", G_CALLBACK(track_selected), NULL);
|
||||
connect_signal(entry_name, "changed", G_CALLBACK(do_filter), playlist);
|
||||
connect_signal(entry_name, "focus-in-event", G_CALLBACK(on_focus_change), NULL);
|
||||
}
|
||||
|
||||
static void on_switch_page(GtkNotebook *tabs, gpointer page,
|
||||
|
|
|
@ -52,22 +52,27 @@ static void window_state(GtkWidget *widget, GdkEvent *event, gpointer data)
|
|||
}
|
||||
}
|
||||
|
||||
/*static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
|
||||
static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
|
||||
{
|
||||
string key = gdk_keyval_name(event->key.keyval);
|
||||
GtkWidget *focus = gtk_window_get_focus(GTK_WINDOW(win));
|
||||
|
||||
if (!(focus == NULL || focus == win))
|
||||
if (key == "Escape") {
|
||||
gtk_window_set_focus(GTK_WINDOW(widget), NULL);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (playlist_entry_focused())
|
||||
return FALSE;
|
||||
println("Window handling key press (1): " + key);
|
||||
println("Window handling key press: " + key);
|
||||
|
||||
if (key == "l" || key == "L")
|
||||
/*if (key == "l" || key == "L")
|
||||
ocarina::playlist::switch_to_library();
|
||||
else if (key == "r" || key == "R")
|
||||
ocarina::playlist::switch_to_recent();
|
||||
else if (key == "b" || key == "B")
|
||||
ocarina::playlist::switch_to_banned();
|
||||
else if (key == "n")
|
||||
ocarina::playlist::switch_to_banned();*/
|
||||
//else if (key == "n")
|
||||
if (key == "n")
|
||||
libsaria::deck::next();
|
||||
else if (key == "N")
|
||||
libsaria::deck::prev();
|
||||
|
@ -76,7 +81,7 @@ static void window_state(GtkWidget *widget, GdkEvent *event, gpointer data)
|
|||
else
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}*/
|
||||
}
|
||||
|
||||
/*static gboolean key_pressed_after(GtkWidget *widget, GdkEvent *event, gpointer data)
|
||||
{
|
||||
|
@ -145,4 +150,5 @@ void init_window()
|
|||
connect_signal("MainWindow", "destroy", gtk_main_quit, NULL);
|
||||
connect_signal("MainWindow", "configure-event", G_CALLBACK(configure), NULL);
|
||||
connect_signal("MainWindow", "window-state-event", G_CALLBACK(window_state), NULL);
|
||||
connect_signal("MainWindow", "key-press-event", G_CALLBACK(key_pressed), NULL);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue