summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorterkhen <terkhen@openttd.org>2010-07-11 10:58:55 +0000
committerterkhen <terkhen@openttd.org>2010-07-11 10:58:55 +0000
commit10fbb87823dd689844c93ce8b0d43a5098acdba9 (patch)
treefb217ff4f1631792b62f9a9879b774af8f018c5f
parent51e6cb0a70d0e4076a91305d308f3f467aa950df (diff)
downloadopenttd-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.cpp4
-rw-r--r--src/window.cpp25
-rw-r--r--src/window_gui.h2
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);