summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Nusser <andre.nusser@googlemail.com>2017-04-12 22:29:17 +0200
committerAndré Nusser <andre.nusser@googlemail.com>2017-04-15 20:36:12 +0200
commit84954cd78d6e0fa8eff24e7a0558f48748e4ba47 (patch)
treee8d23ab9d21826bbf6ff412638eb08b433554f45
parent16c39e953ef0b3df06a7aee6b510de37a2bcc15c (diff)
Fit text of TextEdit to widget size of resize.
-rw-r--r--plugingui/mainwindow.cc19
-rw-r--r--plugingui/textedit.cc13
-rw-r--r--plugingui/textedit.h2
3 files changed, 24 insertions, 10 deletions
diff --git a/plugingui/mainwindow.cc b/plugingui/mainwindow.cc
index 51fd3a3..5c729b0 100644
--- a/plugingui/mainwindow.cc
+++ b/plugingui/mainwindow.cc
@@ -38,18 +38,18 @@ namespace
std::string getGPLText()
{
return
- "DrumGizmo is free software; you can redistribute it and/or modify\n"
- "it under the terms of the GNU Lesser General Public License as published by\n"
- "the Free Software Foundation; either version 3 of the License, or\n"
+ "DrumGizmo is free software; you can redistribute it and/or modify "
+ "it under the terms of the GNU Lesser General Public License as published by "
+ "the Free Software Foundation; either version 3 of the License, or "
"(at your option) any later version.\n"
"\n"
- "DrumGizmo is distributed in the hope that it will be useful,\n"
- "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ "DrumGizmo is distributed in the hope that it will be useful, "
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of "
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the "
"GNU Lesser General Public License for more details.\n"
"\n"
- "You should have received a copy of the GNU Lesser General Public License\n"
- "along with DrumGizmo; if not, write to the Free Software\n"
+ "You should have received a copy of the GNU Lesser General Public License "
+ "along with DrumGizmo; if not, write to the Free Software "
"Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.\n";
}
@@ -75,7 +75,7 @@ MainWindow::MainWindow(Settings& settings, void* native_window)
tabs.addTab("GPL", &gpl_text_field);
gpl_text_field.setText(getGPLText());
- gpl_text_field.preprocessText();
+ gpl_text_field.adaptTextOnResize(true);
gpl_text_field.setReadOnly(true);
}
@@ -123,6 +123,7 @@ void MainWindow::repaintEvent(RepaintEvent* repaintEvent)
void MainWindow::sizeChanged(std::size_t width, std::size_t height)
{
+ gpl_text_field.preprocessText();
tabs.resize(width - 2 * 16, height);
}
diff --git a/plugingui/textedit.cc b/plugingui/textedit.cc
index 9ef21ec..c91b300 100644
--- a/plugingui/textedit.cc
+++ b/plugingui/textedit.cc
@@ -56,6 +56,12 @@ void TextEdit::resize(std::size_t width, std::size_t height)
Widget::resize(width, height);
scroll.resize(scroll.width(), height - 14);
scroll.move(width - 30, 7);
+
+ // TODO: This might be bad for performance. Improve at some point.
+ if (adapt_text_on_resize)
+ {
+ preprocessText();
+ }
}
void TextEdit::setReadOnly(bool readonly)
@@ -92,6 +98,11 @@ std::string TextEdit::text()
return _text;
}
+void TextEdit::adaptTextOnResize(bool adapt)
+{
+ adapt_text_on_resize = adapt;
+}
+
void TextEdit::preprocessText()
{
preprocessedtext.clear();
@@ -129,7 +140,7 @@ void TextEdit::preprocessText()
for(size_t i = 0; i < line.length(); ++i)
{
size_t linewidth = font.textWidth(line.substr(0, i));
- if(linewidth >= width() - BORDER - 4 + 3 - 10 - scroll.width())
+ if(linewidth >= width() - BORDER - 20 - scroll.width())
{
preprocessedtext.push_back(line.substr(0, i));
line = line.substr(i);
diff --git a/plugingui/textedit.h b/plugingui/textedit.h
index 83a7627..8df14b0 100644
--- a/plugingui/textedit.h
+++ b/plugingui/textedit.h
@@ -53,6 +53,7 @@ public:
void setReadOnly(bool readonly);
bool readOnly();
+ void adaptTextOnResize(bool adapt);
void preprocessText();
Notifier<> textChangedNotifier;
@@ -74,6 +75,7 @@ private:
std::string _text;
+ bool adapt_text_on_resize{false};
bool readonly{true};
std::list< std::string > preprocessedtext;