diff --git a/src/screen_artist.c b/src/screen_artist.c
index 71b168841dc73d8c18f82e5f86244ed4e025507b..03b4fed421ab69165d61a4776f750f389e834875 100644 (file)
--- a/src/screen_artist.c
+++ b/src/screen_artist.c
}
}
+static int
+artist_lw_cmd(command_t cmd)
+{
+ switch (mode) {
+ case LIST_ARTISTS:
+ case LIST_ALBUMS:
+ return list_window_cmd(browser.lw, metalist_length, cmd);
+
+ case LIST_SONGS:
+ return list_window_cmd(browser.lw,
+ filelist_length(browser.filelist),
+ cmd);
+ }
+
+ assert(0);
+ return 0;
+}
+
static int
artist_cmd(screen_t *screen, mpdclient_t *c, command_t cmd)
{
char *selected;
+ int ret;
- if (browser.filelist == NULL && metalist != NULL &&
- list_window_cmd(browser.lw, metalist_length, cmd)) {
- list_window_paint(browser.lw, artist_lw_callback, metalist);
+ if (artist_lw_cmd(cmd)) {
+ artist_repaint();
wrefresh(browser.lw->w);
return 1;
}
break;
case CMD_SELECT:
+ case CMD_ADD:
switch(mode) {
case LIST_ARTISTS:
selected = g_list_nth_data(metalist,
break;
case LIST_SONGS:
- if (browser_handle_select(&browser, c) == 0)
+ ret = cmd == CMD_SELECT
+ ? browser_handle_select(&browser, c)
+ : browser_handle_add(&browser, c);
+ if (ret == 0)
/* continue and select next item... */
cmd = CMD_LIST_NEXT;
break;
break;
}
- if (browser.filelist != NULL &&
- list_window_cmd(browser.lw, filelist_length(browser.filelist),
- cmd)) {
- list_window_paint(browser.lw, browser_lw_callback,
- browser.filelist);
- wrefresh(browser.lw->w);
- return 1;
- }
-
return 0;
}