From 0eadc83ce4c3714fb1d2bcb270127ab72cb68c0a Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sun, 15 Aug 2010 22:33:17 +0200 Subject: center on current playing track using ctrl+j --- plugins/gtkui/callbacks.c | 25 +++++++++++++++++++++++++ plugins/gtkui/callbacks.h | 5 +++++ plugins/gtkui/deadbeef.glade | 1 + plugins/gtkui/interface.c | 3 +++ 4 files changed, 34 insertions(+) (limited to 'plugins/gtkui') diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index 7f930caa..e122bd2a 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -302,6 +302,16 @@ on_playrand_clicked (GtkButton *button, deadbeef->sendmessage (M_PLAYRANDOM, 0, 0, 0); } +void +focus_on_playing_track (void) { + DB_playItem_t *it = deadbeef->streamer_get_playing_track (); + if (it) { + int idx = deadbeef->pl_get_idx_of (it); + ddb_listview_scroll_to (DDB_LISTVIEW (lookup_widget (mainwin, "playlist")), idx); + ddb_listview_set_cursor (DDB_LISTVIEW (lookup_widget (mainwin, "playlist")), idx); + deadbeef->pl_item_unref (it); + } +} gboolean on_mainwin_key_press_event (GtkWidget *widget, @@ -320,6 +330,9 @@ on_mainwin_key_press_event (GtkWidget *widget, deadbeef->conf_set_int ("playlist.current", pl); } } + else if (event->state == GDK_CONTROL_MASK && event->keyval == GDK_j) { + focus_on_playing_track (); + } else { ddb_listview_handle_keypress (DDB_LISTVIEW (lookup_widget (mainwin, "playlist")), event->keyval, event->state); } @@ -1060,3 +1073,15 @@ create_seekbar (gchar *widget_name, gchar *string1, gchar *string2, + +gboolean +on_statusbar_button_press_event (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data) +{ + if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) { + focus_on_playing_track (); + } + return FALSE; +} + diff --git a/plugins/gtkui/callbacks.h b/plugins/gtkui/callbacks.h index 839b57a2..9777427d 100644 --- a/plugins/gtkui/callbacks.h +++ b/plugins/gtkui/callbacks.h @@ -966,3 +966,8 @@ on_cli_add_to_playlist_toggled (GtkToggleButton *togglebutton, void on_cli_playlist_name_changed (GtkEditable *editable, gpointer user_data); + +gboolean +on_statusbar_button_press_event (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data); diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade index be214120..9f99cdca 100644 --- a/plugins/gtkui/deadbeef.glade +++ b/plugins/gtkui/deadbeef.glade @@ -882,6 +882,7 @@ True True + 0 diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c index 61521323..a4ba9d50 100644 --- a/plugins/gtkui/interface.c +++ b/plugins/gtkui/interface.c @@ -692,6 +692,9 @@ create_mainwin (void) g_signal_connect ((gpointer) nextbtn, "clicked", G_CALLBACK (on_nextbtn_clicked), NULL); + g_signal_connect ((gpointer) statusbar, "button_press_event", + G_CALLBACK (on_statusbar_button_press_event), + NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (mainwin, mainwin, "mainwin"); -- cgit v1.2.3