Changeset - r15486:d71d1a627ee5
[Not reviewed]
master
0 4 0
rubidium - 14 years ago 2010-07-14 17:36:27
rubidium@openttd.org
(svn r20145) -Codechange: keep original RMB->tooltip behaviour when hovering is disabled and there is no handled right click event for the widget, i.e. if a widget would handle the right click you won't see the tooltip anymore by right clicking; by enabling hovering you would get access to that tooltip again.
4 files changed with 53 insertions and 46 deletions:
0 comments (0 inline, 0 general)
src/depot_gui.cpp
Show inline comments
 
@@ -793,9 +793,9 @@ struct DepotWindow : Window {
 
		DoCommandP(0, GetDepotIndex(this->window_number), 0, CMD_RENAME_DEPOT | CMD_MSG(STR_ERROR_CAN_T_RENAME_DEPOT), NULL, str);
 
	}
 

	
 
	virtual void OnRightClick(Point pt, int widget)
 
	virtual bool OnRightClick(Point pt, int widget)
 
	{
 
		if (widget != DEPOT_WIDGET_MATRIX) return;
 
		if (widget != DEPOT_WIDGET_MATRIX) return false;
 

	
 
		GetDepotVehiclePtData gdvp = { NULL, NULL };
 
		const Vehicle *v = NULL;
 
@@ -804,47 +804,49 @@ struct DepotWindow : Window {
 

	
 
		if (this->type == VEH_TRAIN) v = gdvp.wagon;
 

	
 
		if (v != NULL && mode == MODE_DRAG_VEHICLE) {
 
			CargoArray capacity, loaded;
 
		if (v == NULL || mode != MODE_DRAG_VEHICLE) return false;
 

	
 
			/* Display info for single (articulated) vehicle, or for whole chain starting with selected vehicle */
 
			bool whole_chain = (this->type == VEH_TRAIN && _ctrl_pressed);
 
		CargoArray capacity, loaded;
 

	
 
		/* Display info for single (articulated) vehicle, or for whole chain starting with selected vehicle */
 
		bool whole_chain = (this->type == VEH_TRAIN && _ctrl_pressed);
 

	
 
			/* loop through vehicle chain and collect cargos */
 
			uint num = 0;
 
			for (const Vehicle *w = v; w != NULL; w = w->Next()) {
 
				if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) {
 
					capacity[w->cargo_type] += w->cargo_cap;
 
					loaded  [w->cargo_type] += w->cargo.Count();
 
				}
 

	
 
				if (w->type == VEH_TRAIN && !Train::From(w)->HasArticulatedPart()) {
 
					num++;
 
					if (!whole_chain) break;
 
				}
 
		/* loop through vehicle chain and collect cargos */
 
		uint num = 0;
 
		for (const Vehicle *w = v; w != NULL; w = w->Next()) {
 
			if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) {
 
				capacity[w->cargo_type] += w->cargo_cap;
 
				loaded  [w->cargo_type] += w->cargo.Count();
 
			}
 

	
 
			/* Build tooltipstring */
 
			static char details[1024];
 
			details[0] = '\0';
 
			char *pos = details;
 
			if (w->type == VEH_TRAIN && !Train::From(w)->HasArticulatedPart()) {
 
				num++;
 
				if (!whole_chain) break;
 
			}
 
		}
 

	
 
			for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) {
 
				if (capacity[cargo_type] == 0) continue;
 
		/* Build tooltipstring */
 
		static char details[1024];
 
		details[0] = '\0';
 
		char *pos = details;
 

	
 
		for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) {
 
			if (capacity[cargo_type] == 0) continue;
 

	
 
				SetDParam(0, cargo_type);           // {CARGO} #1
 
				SetDParam(1, loaded[cargo_type]);   // {CARGO} #2
 
				SetDParam(2, cargo_type);           // {SHORTCARGO} #1
 
				SetDParam(3, capacity[cargo_type]); // {SHORTCARGO} #2
 
				pos = GetString(pos, STR_DEPOT_VEHICLE_TOOLTIP_CARGO, lastof(details));
 
			}
 
			SetDParam(0, cargo_type);           // {CARGO} #1
 
			SetDParam(1, loaded[cargo_type]);   // {CARGO} #2
 
			SetDParam(2, cargo_type);           // {SHORTCARGO} #1
 
			SetDParam(3, capacity[cargo_type]); // {SHORTCARGO} #2
 
			pos = GetString(pos, STR_DEPOT_VEHICLE_TOOLTIP_CARGO, lastof(details));
 
		}
 

	
 
			/* Show tooltip 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);
 
		}
 
		/* Show tooltip 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);
 

	
 
		return true;
 
	}
 

	
 
	virtual void OnPlaceObject(Point pt, TileIndex tile)
src/smallmap_gui.cpp
Show inline comments
 
@@ -1258,12 +1258,12 @@ public:
 
		}
 
	}
 

	
 
	virtual void OnRightClick(Point pt, int widget)
 
	virtual bool OnRightClick(Point pt, int widget)
 
	{
 
		if (widget == SM_WIDGET_MAP) {
 
			if (_scrolling_viewport) return;
 
			_scrolling_viewport = true;
 
		}
 
		if (widget != SM_WIDGET_MAP || _scrolling_viewport) return false;
 

	
 
		_scrolling_viewport = true;
 
		return true;
 
	}
 

	
 
	virtual void OnMouseWheel(int wheel)
src/window.cpp
Show inline comments
 
@@ -383,12 +383,15 @@ static void DispatchLeftClickEvent(Windo
 
static void DispatchRightClickEvent(Window *w, int x, int y)
 
{
 
	NWidgetCore *wid = w->nested_root->GetWidgetFromPos(x, y);
 
	if (wid == NULL) return;
 

	
 
	/* No widget to handle, or the window is not interested in it. */
 
	if (wid == NULL || wid->index < 0) return;
 

	
 
	Point pt = { x, y };
 
	w->OnRightClick(pt, wid->index);
 
	if (wid->index >= 0) {
 
		Point pt = { x, 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);
 
}
 

	
 
/**
src/window_gui.h
Show inline comments
 
@@ -654,8 +654,10 @@ public:
 
	 * A click with the right mouse button has been made on the window.
 
	 * @param pt     the point inside the window that has been clicked.
 
	 * @param widget the clicked widget.
 
	 * @return true if the click was actually handled, i.e. do not show a
 
	 *         tooltip if tooltip-on-right-click is enabled.
 
	 */
 
	virtual void OnRightClick(Point pt, int widget) {}
 
	virtual bool OnRightClick(Point pt, int widget) { return false; }
 

	
 
	/**
 
	 * The mouse is hovering over a widget in the window, perform an action for it, like opening a custom tooltip.
0 comments (0 inline, 0 general)