ocarina: Use g_signal_connect() for the window

I was using connect_after(), but somewhere along the line the space bar
was getting lost.  Instead, I only connect the number keys using
g_signal_connect_after() so treeview shortcuts continue to work.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-03-29 08:11:41 -04:00
parent 14c35e5810
commit b977832f3c
1 changed files with 20 additions and 8 deletions

View File

@ -78,7 +78,7 @@ static void window_state(GtkWidget *widget, GdkEvent *event, gpointer data)
static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
{
string key = gdk_keyval_name(event->key.keyval);
println("Window handling key press");
println("Window handling key press (1)");
if (key == "l" || key == "L")
ocarina::playlist::switch_to_library();
@ -88,12 +88,7 @@ static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
libsaria::stack::next();
else if (key == "p" || key == "P")
libsaria::stack::prev();
else if (key >= "0" && key <= "9") {
unsigned int k;
stringstream s(key);
s >> k;
ocarina::playlist::switch_to_plist(k);
} else if (key == "space")
else if (key == "space")
libsaria::audio::toggle_play();
else if (key == "Escape")
gtk_widget_grab_focus(win);
@ -102,6 +97,22 @@ static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
return TRUE;
}
static gboolean key_pressed_after(GtkWidget *widget, GdkEvent *event, gpointer data)
{
string key = gdk_keyval_name(event->key.keyval);
println("Window handling key press (2)");
if (key >= "0" && key <= "9") {
unsigned int k;
stringstream s(key);
s >> k;
ocarina::playlist::switch_to_plist(k);
} else
return FALSE;
return TRUE;
}
/*
void window_resize(int w, int h)
{
@ -139,7 +150,8 @@ namespace ocarina
g_signal_connect(win, "destroy", G_CALLBACK(destroy), NULL);
g_signal_connect(win, "configure-event", G_CALLBACK(configure), NULL);
g_signal_connect(win, "window-state-event", G_CALLBACK(window_state), NULL);
g_signal_connect_after(win, "key-press-event", G_CALLBACK(key_pressed), NULL);
g_signal_connect(win, "key-press-event", G_CALLBACK(key_pressed), NULL);
g_signal_connect_after(win, "key-press-event", G_CALLBACK(key_pressed_after), NULL);
set_title("Ocarina " + vers_str());
set_icon(full_path("images/ocarina.png"));