From: Richard Kettlewell Date: Sat, 28 Nov 2009 16:23:29 +0000 (+0000) Subject: Queue tab now collapses to just the playing track in compact mode. X-Git-Tag: 5.0~31^2~1 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/01237e478540d5dd7cebb1475c0fd235ebb28471?ds=inline Queue tab now collapses to just the playing track in compact mode. --- diff --git a/disobedience/menu.c b/disobedience/menu.c index d248b3f..fc4662d 100644 --- a/disobedience/menu.c +++ b/disobedience/menu.c @@ -35,7 +35,7 @@ static GtkWidget *menu_minimode_widget; GtkItemFactory *mainmenufactory; /** @brief Set for full mode, clear for mini mode */ -int full_mode; +int full_mode = 1; static void about_popup_got_version(void *v, const char *err, diff --git a/disobedience/queue.c b/disobedience/queue.c index 00c44c2..d378899 100644 --- a/disobedience/queue.c +++ b/disobedience/queue.c @@ -55,7 +55,8 @@ static void queue_playing_changed(void) { break; if(q) { disorder_eclient_playing(client, playing_completed, 0); - disorder_eclient_queue(client, queue_completed, 0); + if(full_mode) + disorder_eclient_queue(client, queue_completed, 0); return; } } @@ -83,7 +84,10 @@ static void queue_completed(void attribute((unused)) *v, popup_protocol_error(0, err); return; } - actual_queue = q; + if(full_mode) + actual_queue = q; + else + actual_queue = NULL; queue_playing_changed(); } @@ -108,6 +112,8 @@ static void queue_changed(const char attribute((unused)) *event, void attribute((unused)) *eventdata, void attribute((unused)) *callbackdata) { D(("queue_changed")); + if(!full_mode) + return; gtk_label_set_text(GTK_LABEL(report_label), "updating queue"); disorder_eclient_queue(client, queue_completed, 0); } @@ -287,12 +293,27 @@ static gboolean queue_key_press(GtkWidget attribute((unused)) *widget, return FALSE; /* Propagate */ } +static void queue_minimode(const char attribute((unused)) *event, + void attribute((unused)) *evendata, + void attribute((unused)) *callbackdata) { + if(full_mode) { + /* We will need to refetch the queue */ + disorder_eclient_queue(client, queue_completed, 0); + } else { + /* We will need to hide the queue */ + if(actual_queue) + queue_completed(NULL, NULL, NULL); + } +} + GtkWidget *queue_widget(void) { GtkWidget *const w = init_queuelike(&ql_queue); /* Catch keypresses */ g_signal_connect(ql_queue.view, "key-press-event", G_CALLBACK(queue_key_press), &ql_queue); + + event_register("mini-mode-changed", queue_minimode, 0); return w; }