Code

screen_artist: use a list_window paint callback
[ncmpc.git] / src / screen_browser.c
index 52d76f1a7e5bb2a22799872813c113445b4e7708..b11c48da91b590a4fbb408b576173666991f8d1f 100644 (file)
@@ -330,14 +330,15 @@ browser_handle_add(struct screen_browser *browser, struct mpdclient *c)
 {
        struct list_window_range range;
        struct filelist_entry *entry;
-       bool success;
+       bool success = false;
 
        list_window_get_range(browser->lw, &range);
        for (unsigned i = range.start; i < range.end; ++i) {
                entry = browser_get_index(browser, i);
 
                if (entry != NULL && entry->entity != NULL)
-                       success = browser_select_entry(c, entry, FALSE);
+                       success = browser_select_entry(c, entry, FALSE) ||
+                               success;
        }
 
        return range.end == range.start + 1 && success;
@@ -484,7 +485,7 @@ browser_cmd(struct screen_browser *browser,
        return false;
 }
 
-static void
+void
 screen_browser_paint_directory(WINDOW *w, unsigned width,
                               bool selected, const char *name)
 {
@@ -536,11 +537,6 @@ screen_browser_paint_callback(WINDOW *w, unsigned i,
        highlight = false;
 #endif
 
-       if (highlight)
-               colors_use(w, COLOR_LIST_BOLD);
-       else
-               colors_use(w, COLOR_LIST);
-
        switch (mpd_entity_get_type(entity)) {
        case MPD_ENTITY_TYPE_DIRECTORY:
                directory = mpd_entity_get_directory(entity);
@@ -562,13 +558,9 @@ screen_browser_paint_callback(WINDOW *w, unsigned i,
                break;
 
        default:
-               waddstr(w, "<unknown>");
+               row_paint_text(w, width, highlight ? COLOR_LIST_BOLD : COLOR_LIST,
+                              selected, "<unknown>");
        }
-
-       whline(w, ' ', width);
-
-       if (selected)
-               wattroff(w, A_REVERSE);
 }
 
 void