mirror of https://github.com/OpenTTD/OpenTTD
Fix #7386: Measurement tooltip for tunnels, aqueducts & docks did not display or flickered.
Measurement tooltip was auto-closed as the hover/right-click test for tooltips was not satisfied in this case. This is fixed by keeping the tooltip visible and instead explicitly closing the tooltip when the PlaceObject is cancelled/completed.pull/7406/head
parent
64726d5213
commit
56a69f1de7
|
@ -724,8 +724,8 @@ struct TooltipsWindow : public Window
|
||||||
* we are dragging the tool. Normal tooltips work with hover or rmb. */
|
* we are dragging the tool. Normal tooltips work with hover or rmb. */
|
||||||
switch (this->close_cond) {
|
switch (this->close_cond) {
|
||||||
case TCC_RIGHT_CLICK: if (!_right_button_down) delete this; break;
|
case TCC_RIGHT_CLICK: if (!_right_button_down) delete this; break;
|
||||||
case TCC_LEFT_CLICK: if (!_left_button_down) delete this; break;
|
|
||||||
case TCC_HOVER: if (!_mouse_hovering) delete this; break;
|
case TCC_HOVER: if (!_mouse_hovering) delete this; break;
|
||||||
|
case TCC_NONE: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -2325,12 +2325,17 @@ void UpdateTileSelection()
|
||||||
* @param params (optional) up to 5 pieces of additional information that may be added to a tooltip
|
* @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.
|
* @param close_cond Condition for closing this tooltip.
|
||||||
*/
|
*/
|
||||||
static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_LEFT_CLICK)
|
static inline void ShowMeasurementTooltips(StringID str, uint paramcount, const uint64 params[], TooltipCloseCondition close_cond = TCC_NONE)
|
||||||
{
|
{
|
||||||
if (!_settings_client.gui.measure_tooltip) return;
|
if (!_settings_client.gui.measure_tooltip) return;
|
||||||
GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, params, close_cond);
|
GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, params, close_cond);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HideMeasurementTooltips()
|
||||||
|
{
|
||||||
|
DeleteWindowById(WC_TOOLTIPS, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/** highlighting tiles while only going over them with the mouse */
|
/** highlighting tiles while only going over them with the mouse */
|
||||||
void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process)
|
void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process)
|
||||||
{
|
{
|
||||||
|
@ -2386,7 +2391,11 @@ void VpSetPresizeRange(TileIndex from, TileIndex to)
|
||||||
_thd.next_drawstyle = HT_RECT;
|
_thd.next_drawstyle = HT_RECT;
|
||||||
|
|
||||||
/* show measurement only if there is any length to speak of */
|
/* show measurement only if there is any length to speak of */
|
||||||
if (distance > 1) ShowMeasurementTooltips(STR_MEASURE_LENGTH, 1, &distance, TCC_HOVER);
|
if (distance > 1) {
|
||||||
|
ShowMeasurementTooltips(STR_MEASURE_LENGTH, 1, &distance);
|
||||||
|
} else {
|
||||||
|
HideMeasurementTooltips();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VpStartPreSizing()
|
static void VpStartPreSizing()
|
||||||
|
@ -3038,7 +3047,10 @@ void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowC
|
||||||
* this function might in some cases reset the newly set object to
|
* this function might in some cases reset the newly set object to
|
||||||
* place or not properly reset the original selection. */
|
* place or not properly reset the original selection. */
|
||||||
_thd.window_class = WC_INVALID;
|
_thd.window_class = WC_INVALID;
|
||||||
if (w != NULL) w->OnPlaceObjectAbort();
|
if (w != NULL) {
|
||||||
|
w->OnPlaceObjectAbort();
|
||||||
|
HideMeasurementTooltips();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark the old selection dirty, in case the selection shape or colour changes */
|
/* Mark the old selection dirty, in case the selection shape or colour changes */
|
||||||
|
|
|
@ -873,8 +873,8 @@ void RelocateAllWindows(int neww, int newh);
|
||||||
/* misc_gui.cpp */
|
/* misc_gui.cpp */
|
||||||
enum TooltipCloseCondition {
|
enum TooltipCloseCondition {
|
||||||
TCC_RIGHT_CLICK,
|
TCC_RIGHT_CLICK,
|
||||||
TCC_LEFT_CLICK,
|
|
||||||
TCC_HOVER,
|
TCC_HOVER,
|
||||||
|
TCC_NONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
void GuiShowTooltips(Window *parent, 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);
|
||||||
|
|
Loading…
Reference in New Issue