1
0
Fork 0

(svn r20120) -Feature [FS#3913]: Tooltips are shown by hovering the mouse over a widget instead of by right clicking on it.

release/1.1
terkhen 2010-07-11 10:58:55 +00:00
parent 51e6cb0a70
commit 10fbb87823
3 changed files with 22 additions and 9 deletions

View File

@ -842,10 +842,10 @@ struct DepotWindow : Window {
uint64 args[2]; uint64 args[2];
args[0] = (whole_chain ? num : v->engine_type); args[0] = (whole_chain ? num : v->engine_type);
args[1] = (uint64)(size_t)details; args[1] = (uint64)(size_t)details;
GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args); GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK);
} else { } else {
/* Show tooltip help */ /* Show tooltip help */
GuiShowTooltips(STR_DEPOT_TRAIN_LIST_TOOLTIP + this->type); GuiShowTooltips(STR_DEPOT_TRAIN_LIST_TOOLTIP + this->type, TCC_RIGHT_CLICK);
} }
} }

View File

@ -384,6 +384,23 @@ static void DispatchRightClickEvent(Window *w, int x, int y)
{ {
NWidgetCore *wid = w->nested_root->GetWidgetFromPos(x, y); NWidgetCore *wid = w->nested_root->GetWidgetFromPos(x, y);
/* 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);
}
/**
* Dispatch hover of the mouse over a window.
* @param w Window to dispatch event in.
* @param x X coordinate of the click.
* @param y Y coordinate of the click.
*/
static void DispatchHoverEvent(Window *w, int x, int y)
{
NWidgetCore *wid = w->nested_root->GetWidgetFromPos(x, y);
/* No widget to handle */ /* No widget to handle */
if (wid == NULL) return; if (wid == NULL) return;
@ -392,12 +409,6 @@ static void DispatchRightClickEvent(Window *w, int x, int y)
GuiShowTooltips(wid->tool_tip); GuiShowTooltips(wid->tool_tip);
return; return;
} }
/* Widget has no index, so the window is not interested in it. */
if (wid->index < 0) return;
Point pt = { x, y };
w->OnRightClick(pt, wid->index);
} }
/** /**
@ -2178,6 +2189,8 @@ static void MouseLoop(MouseClick click, int mousewheel)
/* fallthough */ /* fallthough */
case MC_RIGHT: DispatchRightClickEvent(w, x - w->left, y - w->top); break; case MC_RIGHT: DispatchRightClickEvent(w, x - w->left, y - w->top); break;
case MC_HOVER: DispatchHoverEvent(w, x - w->left, y - w->top); break;
} }
} }
} }

View File

@ -900,7 +900,7 @@ enum TooltipCloseCondition {
TCC_HOVER, TCC_HOVER,
}; };
void GuiShowTooltips(StringID str, uint paramcount = 0, const uint64 params[] = NULL, TooltipCloseCondition close_tooltip = TCC_RIGHT_CLICK); void GuiShowTooltips(StringID str, uint paramcount = 0, const uint64 params[] = NULL, TooltipCloseCondition close_tooltip = TCC_HOVER);
/* widget.cpp */ /* widget.cpp */
int GetWidgetFromPos(const Window *w, int x, int y); int GetWidgetFromPos(const Window *w, int x, int y);