Changeset - r23484:6781bc05e57d
[Not reviewed]
master
0 3 0
peter1138 - 6 years ago 2019-03-20 01:21:10
peter1138@openttd.org
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.
3 files changed with 17 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/misc_gui.cpp
Show inline comments
 
@@ -724,8 +724,8 @@ struct TooltipsWindow : public Window
 
		 * we are dragging the tool. Normal tooltips work with hover or rmb. */
 
		switch (this->close_cond) {
 
			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_NONE: break;
 
		}
 
	}
 
};
src/viewport.cpp
Show inline comments
 
@@ -2508,12 +2508,17 @@ 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_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;
 
	GuiShowTooltips(_thd.GetCallbackWnd(), str, paramcount, params, close_cond);
 
}
 

	
 
void HideMeasurementTooltips()
 
{
 
	DeleteWindowById(WC_TOOLTIPS, 0);
 
}
 

	
 
/** highlighting tiles while only going over them with the mouse */
 
void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process)
 
{
 
@@ -2569,7 +2574,11 @@ void VpSetPresizeRange(TileIndex from, T
 
	_thd.next_drawstyle = HT_RECT;
 

	
 
	/* 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()
 
@@ -3221,7 +3230,10 @@ void SetObjectToPlace(CursorID icon, Pal
 
		 * this function might in some cases reset the newly set object to
 
		 * place or not properly reset the original selection. */
 
		_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 */
src/window_gui.h
Show inline comments
 
@@ -873,8 +873,8 @@ void RelocateAllWindows(int neww, int ne
 
/* misc_gui.cpp */
 
enum TooltipCloseCondition {
 
	TCC_RIGHT_CLICK,
 
	TCC_LEFT_CLICK,
 
	TCC_HOVER,
 
	TCC_NONE,
 
};
 

	
 
void GuiShowTooltips(Window *parent, StringID str, uint paramcount = 0, const uint64 params[] = NULL, TooltipCloseCondition close_tooltip = TCC_HOVER);
0 comments (0 inline, 0 general)