From 3ede756d23b09f52a8099736d9a78abc966448b8 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 5 Apr 2021 12:30:58 +0100 Subject: Fix: Viewport drag tooltips not being removed when dragging over other windows --- src/misc_gui.cpp | 6 ++++++ src/viewport.cpp | 2 +- src/window_gui.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 65f98b365..2f538f2af 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -766,6 +766,12 @@ struct TooltipsWindow : public Window case TCC_RIGHT_CLICK: if (!_right_button_down) delete this; break; case TCC_HOVER: if (!_mouse_hovering) delete this; break; case TCC_NONE: break; + + case TCC_EXIT_VIEWPORT: { + Window *w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y); + if (w == nullptr || IsPtInWindowViewport(w, _cursor.pos.x, _cursor.pos.y) == nullptr) delete this; + break; + } } } }; diff --git a/src/viewport.cpp b/src/viewport.cpp index 2a3f9b32d..aae659d53 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -2637,7 +2637,7 @@ void UpdateTileSelection() * @param params (optional) up to 5 pieces of additional information that may be added to a tooltip * @param close_cond Condition for closing this tooltip. */ -static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_NONE) +static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_EXIT_VIEWPORT) { if (!_settings_client.gui.measure_tooltip) return; GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, params, close_cond); diff --git a/src/window_gui.h b/src/window_gui.h index c792a6b28..aca7f4486 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -268,6 +268,7 @@ enum TooltipCloseCondition { TCC_RIGHT_CLICK, TCC_HOVER, TCC_NONE, + TCC_EXIT_VIEWPORT, }; /** -- cgit v1.2.3-70-g09d2