From b2daadf6fe64715705617e6a9b11163359b7d927 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Nusser?= <andre.nusser@googlemail.com>
Date: Sat, 22 Apr 2017 20:21:48 +0200
Subject: Introduce needs_preprocessing flag (incl. functionality) to TextEdit.

---
 plugingui/textedit.cc | 9 ++++++++-
 plugingui/textedit.h  | 1 +
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/plugingui/textedit.cc b/plugingui/textedit.cc
index b7603a1..4de6e52 100644
--- a/plugingui/textedit.cc
+++ b/plugingui/textedit.cc
@@ -54,6 +54,8 @@ TextEdit::~TextEdit()
 void TextEdit::resize(std::size_t width, std::size_t height)
 {
 	Widget::resize(width, height);
+
+	needs_preprocessing = true;
 	scroll.resize(scroll.width(), height - 14);
 	scroll.move(width - 23, 7);
 }
@@ -72,7 +74,7 @@ void TextEdit::setText(const std::string& text)
 {
 	_text = text;
 
-	preprocessText();
+	needs_preprocessing = true;
 	redraw();
 	textChangedNotifier();
 }
@@ -144,6 +146,11 @@ void TextEdit::preprocessText()
 
 void TextEdit::repaintEvent(RepaintEvent* repaintEvent)
 {
+	if(needs_preprocessing) 
+	{
+		preprocessText();
+	}
+
 	Painter p(*this);
 
 	// update values of scroll bar
diff --git a/plugingui/textedit.h b/plugingui/textedit.h
index 81e00b8..5959ae9 100644
--- a/plugingui/textedit.h
+++ b/plugingui/textedit.h
@@ -76,6 +76,7 @@ private:
 	std::string _text;
 
 	bool readonly{true};
+	bool needs_preprocessing{false};
 
 	std::list< std::string > preprocessedtext;
 };
-- 
cgit v1.2.3