From 444354f860fe8b892676d84796363800bd963cfc Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Thu, 31 Dec 2009 11:30:12 +0100 Subject: [PATCH] fix drawing selected_item_{prefix,suffix} --- src/display.cpp | 2 +- src/menu.h | 2 +- src/settings.cpp | 2 ++ src/settings.h | 2 ++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index a5b86b83..292438a0 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -255,7 +255,7 @@ void Display::Songs(const MPD::Song &s, void *data, Menu *menu) String2Buffer(TO_WSTRING(line.substr(it-line.begin()+1)), buf); if (is_now_playing) buf << Config.now_playing_suffix; - *menu << XY(menu->GetWidth()-buf.Str().length(), menu->Y()) << buf; + *menu << XY(menu->GetWidth()-buf.Str().length()-(menu->isSelected(menu->CurrentlyDrawedPosition()) ? Config.selected_item_suffix_length : 0), menu->Y()) << buf; return; } else // not a color nor right align, just a random character diff --git a/src/menu.h b/src/menu.h index 5160ff25..36e5fef9 100644 --- a/src/menu.h +++ b/src/menu.h @@ -742,9 +742,9 @@ template void NCurses::Menu::Refresh() *this << fmtReverse; *this << itsHighlightColor; } + mvwhline(itsWindow, line, 0, 32, itsWidth); if ((*itsOptionsPtr)[i]->isSelected && itsSelectedPrefix) *this << *itsSelectedPrefix; - mvwhline(itsWindow, line, 0, 32, itsWidth); if (itsItemDisplayer) itsItemDisplayer((*itsOptionsPtr)[i]->Item, itsItemDisplayerUserdata, this); if ((*itsOptionsPtr)[i]->isSelected && itsSelectedSuffix) diff --git a/src/settings.cpp b/src/settings.cpp index 7e5cb443..872254a2 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -333,6 +333,7 @@ void DefaultConfiguration(ncmpcpp_config &conf) conf.lyrics_db = 0; conf.regex_type = 0; conf.lines_scrolled = 2; + conf.selected_item_suffix_length = 0; # ifdef HAVE_LANGINFO_H conf.system_encoding = nl_langinfo(CODESET); if (conf.system_encoding == "UTF-8") // mpd uses utf-8 by default so no need to convert @@ -688,6 +689,7 @@ void ReadConfiguration(ncmpcpp_config &conf) { conf.selected_item_suffix.Clear(); String2Buffer(v, conf.selected_item_suffix); + conf.selected_item_suffix_length = Window::Length(conf.selected_item_suffix.Str()); } } else if (cl.find("now_playing_prefix") != std::string::npos) diff --git a/src/settings.h b/src/settings.h index 9baaea8f..7b755d03 100644 --- a/src/settings.h +++ b/src/settings.h @@ -227,6 +227,8 @@ struct ncmpcpp_config int regex_type; unsigned lines_scrolled; + + size_t selected_item_suffix_length; }; extern ncmpcpp_config Config;