diff options
author | terkhen <terkhen@openttd.org> | 2010-07-11 10:58:55 +0000 |
---|---|---|
committer | terkhen <terkhen@openttd.org> | 2010-07-11 10:58:55 +0000 |
commit | 10fbb87823dd689844c93ce8b0d43a5098acdba9 (patch) | |
tree | fb217ff4f1631792b62f9a9879b774af8f018c5f | |
parent | 51e6cb0a70d0e4076a91305d308f3f467aa950df (diff) | |
download | openttd-10fbb87823dd689844c93ce8b0d43a5098acdba9.tar.xz |
(svn r20120) -Feature [FS#3913]: Tooltips are shown by hovering the mouse over a widget instead of by right clicking on it.
-rw-r--r-- | src/depot_gui.cpp | 4 | ||||
-rw-r--r-- | src/window.cpp | 25 | ||||
-rw-r--r-- | src/window_gui.h | 2 |
3 files changed, 22 insertions, 9 deletions
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index ee2272004..1ad79b12e 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -842,10 +842,10 @@ struct DepotWindow : 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); + GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args, TCC_RIGHT_CLICK); } else { /* Show tooltip help */ - GuiShowTooltips(STR_DEPOT_TRAIN_LIST_TOOLTIP + this->type); + GuiShowTooltips(STR_DEPOT_TRAIN_LIST_TOOLTIP + this->type, TCC_RIGHT_CLICK); } } diff --git a/src/window.cpp b/src/window.cpp index 69fccf9d3..d34f138b6 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -384,6 +384,23 @@ static void DispatchRightClickEvent(Window *w, int x, int 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 */ if (wid == NULL) return; @@ -392,12 +409,6 @@ static void DispatchRightClickEvent(Window *w, int x, int y) GuiShowTooltips(wid->tool_tip); 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 */ case MC_RIGHT: DispatchRightClickEvent(w, x - w->left, y - w->top); break; + + case MC_HOVER: DispatchHoverEvent(w, x - w->left, y - w->top); break; } } } diff --git a/src/window_gui.h b/src/window_gui.h index 6a882647b..f25ebba08 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -900,7 +900,7 @@ enum TooltipCloseCondition { 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 */ int GetWidgetFromPos(const Window *w, int x, int y); |