From dca4a08c2567f68c3c279bcdb41ed3b4c5428170 Mon Sep 17 00:00:00 2001 From: waker Date: Mon, 9 Apr 2012 19:57:09 +0200 Subject: gtkui: fixed jump to current track --- plugins/gtkui/callbacks.c | 2 +- plugins/gtkui/gtkui.c | 18 ------------------ plugins/gtkui/gtkui.h | 3 --- plugins/gtkui/widgets.c | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 22 deletions(-) (limited to 'plugins/gtkui') diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index fae22fe1..b70b6a17 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -1102,7 +1102,7 @@ void on_jump_to_current_track1_activate (GtkMenuItem *menuitem, gpointer user_data) { - gtkui_focus_on_playing_track (); + deadbeef->sendmessage (DB_EV_TRACKFOCUSCURRENT, 0, 0, 0); } static GtkWidget *translatorswindow; diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index 938eec39..77d15e1c 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -1195,24 +1195,6 @@ gtkui_plt_load (ddb_playlist_t *plt, DB_playItem_t *after, const char *fname, in return it; } -void -gtkui_focus_on_playing_track (void) { - DB_playItem_t *it = deadbeef->streamer_get_playing_track (); - if (it) { - int plt = deadbeef->streamer_get_current_playlist (); - if (plt != deadbeef->plt_get_curr_idx ()) { - deadbeef->plt_set_curr_idx (plt); - } - int idx = deadbeef->pl_get_idx_of (it); - if (idx != -1) { - DdbListview *pl = DDB_LISTVIEW (lookup_widget (mainwin, "playlist")); - ddb_listview_scroll_to (pl, idx); - ddb_listview_set_cursor (pl, idx); - } - deadbeef->pl_item_unref (it); - } -} - void gtkui_playlist_set_curr (int playlist) { deadbeef->plt_set_curr_idx (playlist); diff --git a/plugins/gtkui/gtkui.h b/plugins/gtkui/gtkui.h index afef4788..2d4ddf11 100644 --- a/plugins/gtkui/gtkui.h +++ b/plugins/gtkui/gtkui.h @@ -139,9 +139,6 @@ gtkui_add_file_info_cb (DB_playItem_t *it, void *data); extern int (*gtkui_original_plt_add_dir) (ddb_playlist_t *plt, const char *dirname, int (*cb)(DB_playItem_t *it, void *data), void *user_data); extern int (*gtkui_original_plt_add_file) (ddb_playlist_t *plt, const char *fname, int (*cb)(DB_playItem_t *it, void *data), void *user_data); -void -gtkui_focus_on_playing_track (void); - void gtkui_playlist_set_curr (int playlist); diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c index 47e8f918..dca0b915 100644 --- a/plugins/gtkui/widgets.c +++ b/plugins/gtkui/widgets.c @@ -1194,6 +1194,38 @@ songchanged_cb (gpointer data) { return FALSE; } +static gboolean +tabbed_trackfocus_cb (gpointer p) { + w_tabbed_playlist_t *tp = p; + DB_playItem_t *it = deadbeef->streamer_get_playing_track (); + if (it) { + int idx = deadbeef->pl_get_idx_of (it); + if (idx != -1) { + ddb_listview_scroll_to (tp->list, idx); + ddb_listview_set_cursor (tp->list, idx); + } + deadbeef->pl_item_unref (it); + } + + return FALSE; +} + +static gboolean +trackfocus_cb (gpointer p) { + w_playlist_t *tp = p; + DB_playItem_t *it = deadbeef->streamer_get_playing_track (); + if (it) { + int idx = deadbeef->pl_get_idx_of (it); + if (idx != -1) { + ddb_listview_scroll_to (tp->list, idx); + ddb_listview_set_cursor (tp->list, idx); + } + deadbeef->pl_item_unref (it); + } + + return FALSE; +} + static int w_tabbed_playlist_message (ddb_gtkui_widget_t *w, uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2) { w_tabbed_playlist_t *tp = (w_tabbed_playlist_t *)w; @@ -1235,6 +1267,9 @@ w_tabbed_playlist_message (ddb_gtkui_widget_t *w, uint32_t id, uintptr_t ctx, ui case DB_EV_PLAYLISTSWITCHED: g_idle_add (tabbed_playlistswitch_cb, w); break; + case DB_EV_TRACKFOCUSCURRENT: + g_idle_add (tabbed_trackfocus_cb, w); + break; } return 0; } @@ -1280,6 +1315,9 @@ w_playlist_message (ddb_gtkui_widget_t *w, uint32_t id, uintptr_t ctx, uint32_t case DB_EV_PLAYLISTSWITCHED: g_idle_add (playlistswitch_cb, w); break; + case DB_EV_TRACKFOCUSCURRENT: + g_idle_add (trackfocus_cb, w); + break; } return 0; } -- cgit v1.2.3