From da13e93df0f1a70e9d3532da70eaa59da3df6a09 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 10 May 2009 02:09:21 +0200 Subject: [PATCH] fix bug with removing format from artist's info screen --- src/info.cpp | 2 ++ src/scrollpad.cpp | 23 ++++++++++++++--------- src/scrollpad.h | 1 + 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/info.cpp b/src/info.cpp index cef76125..b2ec2f3e 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -188,6 +188,8 @@ void Info::GetArtist() input.close(); w->SetFormatting(fmtBold, "\n\nSimilar artists:\n", fmtBoldEnd, 0); w->SetFormatting(Config.color2, "\n * ", clEnd); + // below is used so format won't be removed using RemoveFormatting() by accident. + w->ForgetFormatting(); w->Flush(); } else diff --git a/src/scrollpad.cpp b/src/scrollpad.cpp index 7fa6e0a9..4b19ed8b 100644 --- a/src/scrollpad.cpp +++ b/src/scrollpad.cpp @@ -33,8 +33,8 @@ Scrollpad::Scrollpad(size_t startx, : Window(startx, starty, width, height, title, color, border), itsBeginning(0), itsFoundForEach(0), - itsFoundValueBegin(0), - itsFoundValueEnd(0), + itsFoundValueBegin(-1), + itsFoundValueEnd(-1), itsRealHeight(1) { } @@ -114,18 +114,22 @@ bool Scrollpad::SetFormatting(short vb, const std::basic_string &s, s itsFoundPattern = s; } else - { - itsFoundForEach = 0; - itsFoundValueBegin = 0; - itsFoundValueEnd = 0; - itsFoundPattern.clear(); - } + ForgetFormatting(); return result; } +void Scrollpad::ForgetFormatting() +{ + itsFoundForEach = 0; + itsFoundValueBegin = -1; + itsFoundValueEnd = -1; + itsFoundPattern.clear(); +} + void Scrollpad::RemoveFormatting() { - itsBuffer.RemoveFormatting(itsFoundValueBegin, itsFoundPattern, itsFoundValueEnd, itsFoundForEach); + if (itsFoundValueBegin >= 0 && itsFoundValueEnd >= 0) + itsBuffer.RemoveFormatting(itsFoundValueBegin, itsFoundPattern, itsFoundValueEnd, itsFoundForEach); } void Scrollpad::Recreate() @@ -205,6 +209,7 @@ void Scrollpad::Clear(bool clrscr) itsWindow = newpad(itsHeight, itsWidth); SetTimeout(itsWindowTimeout); SetColor(itsColor, itsBgColor); + ForgetFormatting(); keypad(itsWindow, 1); if (clrscr) Refresh(); diff --git a/src/scrollpad.h b/src/scrollpad.h index 9fc1362a..4a417162 100644 --- a/src/scrollpad.h +++ b/src/scrollpad.h @@ -35,6 +35,7 @@ namespace NCurses void Flush(); bool SetFormatting(short, const std::basic_string &, short, bool for_each = 1); + void ForgetFormatting(); void RemoveFormatting(); std::basic_string Content() { return itsBuffer.Str(); }