summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-12-12 14:14:26 +0000
committerrubidium <rubidium@openttd.org>2010-12-12 14:14:26 +0000
commita029b2b83aa344fdd8ba1f7bc0915205c52daca0 (patch)
tree95fc2013ee1d0e8c8ecd5b02ec8b807047922267
parent5910bde58367764387e00c76e14d7465be942e7f (diff)
downloadopenttd-a029b2b83aa344fdd8ba1f7bc0915205c52daca0.tar.xz
(svn r21477) -Fix [FS#4300]: tooltips were removed when their related window got closed
-rw-r--r--src/depot_gui.cpp2
-rw-r--r--src/industry_gui.cpp4
-rw-r--r--src/misc_gui.cpp8
-rw-r--r--src/viewport.cpp2
-rw-r--r--src/window.cpp4
-rw-r--r--src/window_gui.h2
6 files changed, 12 insertions, 10 deletions
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp
index 54ebecdbe..095c41af9 100644
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -835,7 +835,7 @@ struct DepotWindow : Window {
uint64 args[2];
args[0] = (whole_chain ? num : v->engine_type);
args[1] = (uint64)(size_t)details;
- GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK);
+ GuiShowTooltips(this, whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK);
return true;
}
diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp
index dd9fce88e..6bf3932c1 100644
--- a/src/industry_gui.cpp
+++ b/src/industry_gui.cpp
@@ -2564,7 +2564,7 @@ struct IndustryCargoesWindow : public Window {
case CFT_INDUSTRY:
if (fld->u.industry.ind_type < NUM_INDUSTRYTYPES && (this->ind_cargo >= NUM_INDUSTRYTYPES || fieldxy.x != 2)) {
- GuiShowTooltips(STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP, 0, NULL, TCC_HOVER);
+ GuiShowTooltips(this, STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP, 0, NULL, TCC_HOVER);
}
return;
@@ -2575,7 +2575,7 @@ struct IndustryCargoesWindow : public Window {
const CargoSpec *csp = CargoSpec::Get(cid);
uint64 params[5];
params[0] = csp->name;
- GuiShowTooltips(STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, 1, params, TCC_HOVER);
+ GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, 1, params, TCC_HOVER);
}
}
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp
index ef485c7be..a1327ba1b 100644
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -822,8 +822,9 @@ struct TooltipsWindow : public Window
uint64 params[5]; ///< The string parameters.
TooltipCloseCondition close_cond; ///< Condition for closing the window.
- TooltipsWindow(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) : Window()
+ TooltipsWindow(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip) : Window()
{
+ this->parent = parent;
this->string_id = str;
assert_compile(sizeof(this->params[0]) == sizeof(params[0]));
assert(paramcount <= lengthof(this->params));
@@ -901,18 +902,19 @@ struct TooltipsWindow : public Window
/**
* Shows a tooltip
+ * @param parent The window this tooltip is related to.
* @param str String to be displayed
* @param paramcount number of params to deal with
* @param params (optional) up to 5 pieces of additional information that may be added to a tooltip
* @param use_left_mouse_button close the tooltip when the left (true) or right (false) mousebutton is released
*/
-void GuiShowTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip)
+void GuiShowTooltips(Window *parent, StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_tooltip)
{
DeleteWindowById(WC_TOOLTIPS, 0);
if (str == STR_NULL) return;
- new TooltipsWindow(str, paramcount, params, close_tooltip);
+ new TooltipsWindow(parent, str, paramcount, params, close_tooltip);
}
/* Delete a character at the caret position in a text buf.
diff --git a/src/viewport.cpp b/src/viewport.cpp
index 01b98effa..21ca5a81d 100644
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -2058,7 +2058,7 @@ void UpdateTileSelection()
static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_LEFT_CLICK)
{
if (!_settings_client.gui.measure_tooltip) return;
- GuiShowTooltips(str, paramcount, params, close_cond);
+ GuiShowTooltips(FindWindowById(_thd.window_class, _thd.window_number), str, paramcount, params, close_cond);
}
/** highlighting tiles while only going over them with the mouse */
diff --git a/src/window.cpp b/src/window.cpp
index 5c6ef3fa7..df7771633 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -406,7 +406,7 @@ static void DispatchRightClickEvent(Window *w, int x, int y)
if (w->OnRightClick(pt, wid->index)) return;
}
- if (_settings_client.gui.hover_delay == 0 && wid->tool_tip != 0) GuiShowTooltips(wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK);
+ if (_settings_client.gui.hover_delay == 0 && wid->tool_tip != 0) GuiShowTooltips(w, wid->tool_tip, 0, NULL, TCC_RIGHT_CLICK);
}
/**
@@ -424,7 +424,7 @@ static void DispatchHoverEvent(Window *w, int x, int y)
/* Show the tooltip if there is any */
if (wid->tool_tip != 0) {
- GuiShowTooltips(wid->tool_tip);
+ GuiShowTooltips(w, wid->tool_tip);
return;
}
diff --git a/src/window_gui.h b/src/window_gui.h
index b69f01294..90e3135be 100644
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -792,7 +792,7 @@ enum TooltipCloseCondition {
TCC_HOVER,
};
-void GuiShowTooltips(StringID str, uint paramcount = 0, const uint64 params[] = NULL, TooltipCloseCondition close_tooltip = TCC_HOVER);
+void GuiShowTooltips(Window *parent, StringID str, uint paramcount = 0, const uint64 params[] = NULL, TooltipCloseCondition close_tooltip = TCC_HOVER);
/* widget.cpp */
int GetWidgetFromPos(const Window *w, int x, int y);