diff options
author | alberth <alberth@openttd.org> | 2010-07-02 13:59:27 +0000 |
---|---|---|
committer | alberth <alberth@openttd.org> | 2010-07-02 13:59:27 +0000 |
commit | 4eb7b862a3dafe09346d6322eaaff1175826daf3 (patch) | |
tree | 6d8a18822f2cbe1d82a14bb94133d07e54286193 | |
parent | ddb0f1a614c3823ddfda09513bfe9262e150197d (diff) | |
download | openttd-4eb7b862a3dafe09346d6322eaaff1175826daf3.tar.xz |
(svn r20046) -Feature [FS#3816]: Wrap console lines when they are too long.
-rw-r--r-- | src/console_gui.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/console_gui.cpp b/src/console_gui.cpp index 264e107bf..03fe19931 100644 --- a/src/console_gui.cpp +++ b/src/console_gui.cpp @@ -16,11 +16,14 @@ #include "console_internal.h" #include "window_func.h" #include "string_func.h" +#include "strings_func.h" #include "gfx_func.h" #include "settings_type.h" #include "console_func.h" #include "rev.h" +#include "table/strings.h" + static const uint ICON_HISTORY_SIZE = 20; static const uint ICON_LINE_SPACING = 2; static const uint ICON_RIGHT_BORDERWIDTH = 10; @@ -174,7 +177,7 @@ struct IConsoleWindow : Window IConsoleWindow() : Window() { _iconsole_mode = ICONSOLE_OPENED; - this->line_height = FONT_HEIGHT_NORMAL + ICON_LINE_SPACING; + this->line_height = FONT_HEIGHT_NORMAL; this->line_offset = GetStringBoundingBox("] ").width + 5; this->InitNested(&_console_window_desc, 0); @@ -188,13 +191,14 @@ struct IConsoleWindow : Window virtual void OnPaint() { - const int max = (this->height / this->line_height) - 1; const int right = this->width - 5; - const IConsoleLine *print = IConsoleLine::Get(IConsoleWindow::scroll); GfxFillRect(this->left, this->top, this->width, this->height - 1, 0); - for (int i = 0; i < max && print != NULL; i++, print = print->previous) { - DrawString(5, right, this->height - (2 + i) * this->line_height, print->buffer, print->colour, SA_LEFT | SA_FORCE); + int ypos = this->height - this->line_height - ICON_LINE_SPACING; + for (const IConsoleLine *print = IConsoleLine::Get(IConsoleWindow::scroll); print != NULL; print = print->previous) { + SetDParamStr(0, print->buffer); + ypos = DrawStringMultiLine(5, right, top, ypos, STR_JUST_RAW_STRING, print->colour, SA_LEFT | SA_BOTTOM | SA_FORCE) - ICON_LINE_SPACING; + if (ypos <= top) break; } /* If the text is longer than the window, don't show the starting ']' */ int delta = this->width - this->line_offset - _iconsole_cmdline.width - ICON_RIGHT_BORDERWIDTH; |