From ee3f8c3ef2566e367384795985b11603a957e5c2 Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 6 Oct 2014 20:14:44 +0000 Subject: [PATCH] (svn r26973) [1.4] -Backport from trunk: - Fix: Image widgets stored 32bit SpriteID in uint16 (r26971) - Fix: Compilation on HAIKU (r26922) - Fix: Crash when enabling 'Full animation' if multiplayer chat text is on screen [FS#6096] (r26919) - Fix: Height computation of game script text in town GUI did not consider margins [FS#6119] (r26859) --- src/gfxinit.cpp | 2 ++ src/stdafx.h | 1 + src/town_gui.cpp | 4 ++-- src/widget.cpp | 2 +- src/widget_type.h | 6 +++--- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index 3151a76715..a02c48faba 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -18,6 +18,7 @@ #include "transparency.h" #include "blitter/factory.hpp" #include "video/video_driver.hpp" +#include "window_func.h" /* The type of set we're replacing */ #define SET_TYPE "graphics" @@ -297,6 +298,7 @@ void CheckBlitter() ClearFontCache(); GfxClearSpriteCache(); + ReInitAllWindows(); } /** Initialise and load all the sprites. */ diff --git a/src/stdafx.h b/src/stdafx.h index 951ab1c38a..5eadbd28b7 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -21,6 +21,7 @@ #include #define _GNU_SOURCE #define TROUBLED_INTS + #include #elif defined(__NDS__) #include #define TROUBLED_INTS diff --git a/src/town_gui.cpp b/src/town_gui.cpp index b1fdace35e..3b2cb7f16a 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -404,7 +404,7 @@ public: if (this->town->text != NULL) { SetDParamStr(0, this->town->text); - DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, y += FONT_HEIGHT_NORMAL, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK); + DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y += FONT_HEIGHT_NORMAL, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK); } } @@ -482,7 +482,7 @@ public: if (this->town->text != NULL) { SetDParamStr(0, this->town->text); - aimed_height += GetStringHeight(STR_JUST_RAW_STRING, width); + aimed_height += GetStringHeight(STR_JUST_RAW_STRING, width - WD_FRAMERECT_LEFT - WD_FRAMERECT_RIGHT); } return aimed_height; diff --git a/src/widget.cpp b/src/widget.cpp index 31c5ea8532..4c22ed7216 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -2094,7 +2094,7 @@ Dimension NWidgetLeaf::dropdown_dimension = {0, 0}; * @param data Data of the widget. * @param tip Tooltip of the widget. */ -NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, StringID tip) : NWidgetCore(tp, colour, 1, 1, data, tip) +NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint32 data, StringID tip) : NWidgetCore(tp, colour, 1, 1, data, tip) { assert(index >= 0 || tp == WWT_LABEL || tp == WWT_TEXT || tp == WWT_CAPTION || tp == WWT_RESIZEBOX || tp == WWT_SHADEBOX || tp == WWT_DEFSIZEBOX || tp == WWT_DEBUGBOX || tp == WWT_STICKYBOX || tp == WWT_CLOSEBOX); if (index >= 0) this->SetIndex(index); diff --git a/src/widget_type.h b/src/widget_type.h index 6d8b32bc9c..39efbb4637 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -769,7 +769,7 @@ private: */ class NWidgetLeaf : public NWidgetCore { public: - NWidgetLeaf(WidgetType tp, Colours colour, int index, uint16 data, StringID tip); + NWidgetLeaf(WidgetType tp, Colours colour, int index, uint32 data, StringID tip); /* virtual */ void SetupSmallestSize(Window *w, bool init_array); /* virtual */ void Draw(const Window *w); @@ -856,7 +856,7 @@ static inline uint ComputeMaxSize(uint base, uint max_space, uint step) * @ingroup NestedWidgetParts */ struct NWidgetPartDataTip { - uint16 data; ///< Data value of the widget. + uint32 data; ///< Data value of the widget. StringID tooltip; ///< Tooltip of the widget. }; @@ -1011,7 +1011,7 @@ static inline NWidgetPart EndContainer() * @param tip Tooltip of the widget. * @ingroup NestedWidgetParts */ -static inline NWidgetPart SetDataTip(uint16 data, StringID tip) +static inline NWidgetPart SetDataTip(uint32 data, StringID tip) { NWidgetPart part;