summaryrefslogtreecommitdiff
path: root/src/console_gui.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-02-05 17:53:29 +0000
committerfrosch <frosch@openttd.org>2011-02-05 17:53:29 +0000
commit82f260e15f7450b319bb4b3fbf5756905fb4edd9 (patch)
tree55addce4a919ebfea267bec0a54d42e43c7c7c37 /src/console_gui.cpp
parent582d30c9798bda47f0510f41912009604559a950 (diff)
downloadopenttd-82f260e15f7450b319bb4b3fbf5756905fb4edd9.tar.xz
(svn r21981) -Codechange: Deduplicate the code and unify the bounds of console scrolling.
Diffstat (limited to 'src/console_gui.cpp')
-rw-r--r--src/console_gui.cpp39
1 files changed, 15 insertions, 24 deletions
diff --git a/src/console_gui.cpp b/src/console_gui.cpp
index a352dd333..c01342198 100644
--- a/src/console_gui.cpp
+++ b/src/console_gui.cpp
@@ -189,6 +189,17 @@ struct IConsoleWindow : Window
_iconsole_mode = ICONSOLE_CLOSED;
}
+ /**
+ * Scroll the content of the console.
+ * @param amount Number of lines to scroll back.
+ */
+ void Scroll(int amount)
+ {
+ int max_scroll = max<int>(0, IConsoleLine::size + 1 - this->height / this->line_height);
+ IConsoleWindow::scroll = Clamp<int>(IConsoleWindow::scroll + amount, 0, max_scroll);
+ this->SetDirty();
+ }
+
virtual void OnPaint()
{
const int right = this->width - 5;
@@ -245,39 +256,19 @@ struct IConsoleWindow : Window
break;
case WKC_SHIFT | WKC_PAGEDOWN:
- if (IConsoleWindow::scroll - scroll_height < 0) {
- IConsoleWindow::scroll = 0;
- } else {
- IConsoleWindow::scroll -= scroll_height;
- }
- this->SetDirty();
+ this->Scroll(-scroll_height);
break;
case WKC_SHIFT | WKC_PAGEUP:
- if (IConsoleWindow::scroll + scroll_height > IConsoleLine::size - scroll_height) {
- IConsoleWindow::scroll = IConsoleLine::size - scroll_height;
- } else {
- IConsoleWindow::scroll += scroll_height;
- }
- this->SetDirty();
+ this->Scroll(scroll_height);
break;
case WKC_SHIFT | WKC_DOWN:
- if (IConsoleWindow::scroll <= 0) {
- IConsoleWindow::scroll = 0;
- } else {
- --IConsoleWindow::scroll;
- }
- this->SetDirty();
+ this->Scroll(-1);
break;
case WKC_SHIFT | WKC_UP:
- if (IConsoleWindow::scroll >= IConsoleLine::size) {
- IConsoleWindow::scroll = IConsoleLine::size;
- } else {
- ++IConsoleWindow::scroll;
- }
- this->SetDirty();
+ this->Scroll(1);
break;
case WKC_BACKQUOTE: