From 12fa8a9bf65c45b3946e90068ec603e19f75201d Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 26 Apr 2009 12:33:24 +0200 Subject: [PATCH] count number of applied formatting flags --- src/ncmpcpp.cpp | 2 +- src/window.cpp | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index ce842d95..3b6e36b7 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -161,7 +161,7 @@ int main(int argc, char *argv[]) wFooter = new Window(0, footer_start_y, COLS, footer_height, "", Config.statusbar_color, brNone); wFooter->SetTimeout(ncmpcpp_window_timeout); wFooter->SetGetStringHelper(StatusbarGetStringHelper); - wFooter->Display(); + *wFooter << fmtBold; // bold by default myScreen = myPlaylist; diff --git a/src/window.cpp b/src/window.cpp index 95484797..3af43280 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -694,30 +694,38 @@ Window &Window::operator<<(Color color) Window &Window::operator<<(Format format) { + static int bold_num = 0, reverse_num = 0, altcharset_num = 0; + switch (format) { case fmtNone: - Bold(0); - Reverse(0); - AltCharset(0); + Bold((bold_num = 0)); + Reverse((reverse_num = 0)); + AltCharset((altcharset_num = 0)); break; case fmtBold: - Bold(1); + Bold(++bold_num); break; case fmtBoldEnd: - Bold(0); + // FIXME: No idea why this needs to de disabled at 1 :X + // Probably a mistake somewhere in the code, but for now + // I was not able to find it + if (--bold_num <= 1) + Bold((bold_num = 0)); break; case fmtReverse: - Reverse(1); + Reverse(++reverse_num); break; case fmtReverseEnd: - Reverse(0); + if (--reverse_num <= 0) + Reverse((reverse_num = 0)); break; case fmtAltCharset: - AltCharset(1); + AltCharset(++altcharset_num); break; case fmtAltCharsetEnd: - AltCharset(0); + if (--altcharset_num <= 0) + AltCharset((altcharset_num = 0)); break; } return *this;