From 4c7fcdf4aeb0168d2936169f8d5b2b7f898d1e4b Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sat, 14 Sep 2013 22:19:10 +0200 Subject: gtkui: fixed all old "playlist" widget lookups; fixed column auto-resize; fixed more draw-after-resize issues --- main.c | 3 --- plugins/gtkui/ddblistview.c | 22 +++++++++++++++++----- plugins/gtkui/ddbtabstrip.c | 7 ------- plugins/gtkui/gtkui.c | 4 +--- plugins/gtkui/prefwin.c | 12 ------------ plugins/gtkui/progress.c | 9 --------- plugins/gtkui/widgets.c | 11 ++--------- 7 files changed, 20 insertions(+), 48 deletions(-) diff --git a/main.c b/main.c index e086e348..26f3e5cb 100644 --- a/main.c +++ b/main.c @@ -997,9 +997,6 @@ main (int argc, char *argv[]) { atexit (atexit_handler); // helps to save in simple cases #endif - // start all subsystems - messagepump_push (DB_EV_PLAYLISTCHANGED, 0, 0, 0); - streamer_init (); plug_connect_all (); diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c index 5b5d7f7a..362770ef 100644 --- a/plugins/gtkui/ddblistview.c +++ b/plugins/gtkui/ddblistview.c @@ -557,6 +557,16 @@ ddb_listview_reconf_scrolling (void *ps) { return FALSE; } +static void +ddb_listview_list_update_total_width (DdbListview *lv, int size) { + GtkAllocation a; + gtk_widget_get_allocation (GTK_WIDGET (lv->list), &a); + lv->totalwidth = size; + if (lv->totalwidth < a.width) { + lv->totalwidth = a.width; + } +} + gboolean ddb_listview_list_configure_event (GtkWidget *widget, GdkEventConfigure *event, @@ -580,11 +590,7 @@ ddb_listview_list_configure_event (GtkWidget *widget, for (c = ps->columns; c; c = c->next) { size += c->width; } - ps->totalwidth = size; - if (ps->totalwidth < a.width) { - ps->totalwidth = a.width; - } - + ddb_listview_list_update_total_width (ps, size); g_idle_add (ddb_listview_reconf_scrolling, ps); return FALSE; @@ -1149,6 +1155,7 @@ ddb_listview_list_setup_hscroll (DdbListview *ps) { for (c = ps->columns; c; c = c->next) { size += c->width; } + ddb_listview_list_update_total_width (ps, size); GtkWidget *scroll = ps->hscrollbar; if (w >= size) { gtk_widget_hide (scroll); @@ -2437,7 +2444,11 @@ ddb_listview_header_motion_notify_event (GtkWidget *widget, // get column start pos int x = -ps->hscrollpos; int i = 0; + int size = 0; DdbListviewColumn *c; + for (c = ps->columns; c; c = c->next) { + size += c->width; + } for (c = ps->columns; c && i < ps->header_sizing; c = c->next, i++) { x += c->width; } @@ -2454,6 +2465,7 @@ ddb_listview_header_motion_notify_event (GtkWidget *widget, gtk_widget_queue_draw (ps->header); gtk_widget_queue_draw (ps->list); ps->binding->column_size_changed (ps, ps->header_sizing); + ddb_listview_list_update_total_width (ps, size); } else { int x = -ps->hscrollpos; diff --git a/plugins/gtkui/ddbtabstrip.c b/plugins/gtkui/ddbtabstrip.c index a6002265..c9827eda 100644 --- a/plugins/gtkui/ddbtabstrip.c +++ b/plugins/gtkui/ddbtabstrip.c @@ -255,8 +255,6 @@ on_tabstrip_drag_data_received (GtkWidget *widget, guint target_type, guint time) { - DdbListview *ps = DDB_LISTVIEW (lookup_widget (mainwin, "playlist")); - gchar *ptr=(char*)gtk_selection_data_get_data (data); int len = gtk_selection_data_get_length (data); if (target_type == 0) { // uris @@ -286,16 +284,12 @@ on_tabstrip_drag_leave (GtkWidget *widget, GdkDragContext *drag_context, guint time) { -// DdbListview *pl = DDB_LISTVIEW (lookup_widget (mainwin, "playlist")); -// ddb_listview_list_drag_leave (pl->list, drag_context, time, NULL); } void on_tabstrip_drag_end (GtkWidget *widget, GdkDragContext *drag_context) { -// DdbListview *pl = DDB_LISTVIEW (lookup_widget (mainwin, "playlist")); -// ddb_listview_list_drag_end (pl->list, drag_context, NULL); } GtkWidget * ddb_tabstrip_new() { @@ -1136,7 +1130,6 @@ on_tabstrip_drag_motion_event (GtkWidget *widget, gtkui_playlist_set_curr (tab); } - GtkWidget *pl = lookup_widget (mainwin, "playlist"); GList *targets = gdk_drag_context_list_targets (drag_context); int cnt = g_list_length (targets); int i; diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index 87264853..2804e91c 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -451,9 +451,6 @@ trackinfochanged_wrapper (DdbListview *playlist, DB_playItem_t *track, int iter) void gtkui_trackinfochanged (DB_playItem_t *track) { -// GtkWidget *playlist = lookup_widget (mainwin, "playlist"); -// trackinfochanged_wrapper (DDB_LISTVIEW (playlist), track, PL_MAIN); - if (searchwin && gtk_widget_get_visible (searchwin)) { GtkWidget *search = lookup_widget (searchwin, "searchlist"); trackinfochanged_wrapper (DDB_LISTVIEW (search), track, PL_SEARCH); @@ -1152,6 +1149,7 @@ gtkui_thread (void *ctx) { supereq_plugin = deadbeef->plug_get_for_id ("supereq"); gtkui_connect_cb (NULL); + deadbeef->sendmessage (DB_EV_PLAYLISTCHANGED, 0, 0, 0); gtk_main (); diff --git a/plugins/gtkui/prefwin.c b/plugins/gtkui/prefwin.c index 93b1ba04..cc04cb2d 100644 --- a/plugins/gtkui/prefwin.c +++ b/plugins/gtkui/prefwin.c @@ -544,18 +544,6 @@ on_configure_plugin_clicked (GtkButton *button, } } -static void -redraw_headers (void) { - DdbListview *playlist = DDB_LISTVIEW (lookup_widget (mainwin, "playlist")); - DdbListview *search = DDB_LISTVIEW (lookup_widget (searchwin, "searchlist")); - if (playlist) { - ddb_listview_refresh (playlist, DDB_REFRESH_COLUMNS); - } - if (search) { - ddb_listview_refresh (search, DDB_REFRESH_COLUMNS); - } -} - void on_tabstrip_light_color_set (GtkColorButton *colorbutton, gpointer user_data) diff --git a/plugins/gtkui/progress.c b/plugins/gtkui/progress.c index 98a6b461..0c3465f0 100644 --- a/plugins/gtkui/progress.c +++ b/plugins/gtkui/progress.c @@ -83,10 +83,6 @@ progress_settext (const char *text) { gboolean gtkui_progress_show_idle (gpointer data) { - GtkWidget *playlist = lookup_widget (mainwin, "playlist"); - if (playlist) { - gtk_widget_set_sensitive (playlist, FALSE); - } progress_settext (_("Initializing...")); gtk_widget_show_all (progressdlg); gtk_window_present (GTK_WINDOW (progressdlg)); @@ -103,11 +99,6 @@ progress_show (void) { gboolean gtkui_progress_hide_idle (gpointer data) { gtk_widget_hide (progressdlg); - GtkWidget *playlist = lookup_widget (mainwin, "playlist"); - if (playlist) { - gtk_widget_set_sensitive (playlist, TRUE); - } - //deadbeef->sendmessage (DB_EV_PLAYLIST_REFRESH, 0, 0, 0); return FALSE; } diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c index 1e118dc1..f37c6118 100644 --- a/plugins/gtkui/widgets.c +++ b/plugins/gtkui/widgets.c @@ -1450,17 +1450,10 @@ paused_cb (gpointer data) { return FALSE; } -static gboolean -tabbed_refresh_cb (gpointer p) { - w_playlist_t *tp = (w_playlist_t *)p; - ddb_listview_clear_sort (tp->list); - ddb_listview_refresh (tp->list, DDB_REFRESH_LIST | DDB_REFRESH_VSCROLL); - return FALSE; -} - static gboolean refresh_cb (gpointer data) { DdbListview *p = DDB_LISTVIEW (data); + ddb_listview_lock_columns (p, 0); ddb_listview_clear_sort (p); ddb_listview_refresh (DDB_LISTVIEW (p), DDB_REFRESH_LIST | DDB_REFRESH_VSCROLL); return FALSE; @@ -1658,7 +1651,7 @@ w_tabbed_playlist_message (ddb_gtkui_widget_t *w, uint32_t id, uintptr_t ctx, ui g_idle_add (tabbed_paused_cb, w); break; case DB_EV_PLAYLISTCHANGED: - g_idle_add (tabbed_refresh_cb, w); + g_idle_add (refresh_cb, tp->list); break; case DB_EV_PLAYLISTSWITCHED: g_idle_add (playlistswitch_cb, w); -- cgit v1.2.3