summaryrefslogtreecommitdiff
path: root/plugins/gtkui
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-08-15 22:33:17 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-08-15 22:33:17 +0200
commit0eadc83ce4c3714fb1d2bcb270127ab72cb68c0a (patch)
treeb754a6121311a2143312f82557d7daae82796973 /plugins/gtkui
parent98075487cfb6d81363188e818de8f25f741f6356 (diff)
center on current playing track using ctrl+j
Diffstat (limited to 'plugins/gtkui')
-rw-r--r--plugins/gtkui/callbacks.c25
-rw-r--r--plugins/gtkui/callbacks.h5
-rw-r--r--plugins/gtkui/deadbeef.glade1
-rw-r--r--plugins/gtkui/interface.c3
4 files changed, 34 insertions, 0 deletions
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 @@
<widget class="GtkStatusbar" id="statusbar">
<property name="visible">True</property>
<property name="has_resize_grip">True</property>
+ <signal name="button_press_event" handler="on_statusbar_button_press_event" last_modification_time="Sun, 15 Aug 2010 20:30:35 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
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");