Author: jpobst
Date: 2007-03-26 13:15:45 -0500 (Mon, 26 Mar 2007)
New Revision: 74986
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
Log:
2007-03-26 Jonathan Pobst <[EMAIL PROTECTED]>
* ToolStrip.cs: Implement Tooltips.
* ToolStripItem.cs: Create internal method for determining tooltip.
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-03-26 17:13:32 UTC (rev 74985)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2007-03-26 18:15:45 UTC (rev 74986)
@@ -1,5 +1,10 @@
2007-03-26 Jonathan Pobst <[EMAIL PROTECTED]>
+ * ToolStrip.cs: Implement Tooltips.
+ * ToolStripItem.cs: Create internal method for determining tooltip.
+
+2007-03-26 Jonathan Pobst <[EMAIL PROTECTED]>
+
* PropertyGrid.cs: Hide a EditorBrowsable attribute from 1.1 API.
2007-03-26 Everaldo Canuto <[EMAIL PROTECTED]>
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
2007-03-26 17:13:32 UTC (rev 74985)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
2007-03-26 18:15:45 UTC (rev 74986)
@@ -59,11 +59,14 @@
private ToolStripOverflowButton overflow_button;
private ToolStripRenderer renderer;
private ToolStripRenderMode render_mode;
+ private Timer tooltip_timer;
+ private ToolTip.ToolTipWindow tooltip_window;
private bool show_item_tool_tips;
private bool stretch;
private ToolStripItem mouse_currently_over;
private bool menu_selected;
+ private ToolStripItem tooltip_currently_showing;
#endregion
#region Public Constructors
@@ -660,6 +663,7 @@
protected override void OnMouseLeave (EventArgs e)
{
if (mouse_currently_over != null) {
+ MouseLeftItem (mouse_currently_over);
mouse_currently_over.FireEvent (e,
ToolStripItemEventType.MouseLeave);
mouse_currently_over = null;
}
@@ -682,14 +686,17 @@
tsi.FireEvent (mea,
ToolStripItemEventType.MouseMove);
else {
// If we were over a different item,
fire a mouse leave on it
- if (mouse_currently_over != null)
+ if (mouse_currently_over != null) {
+ MouseLeftItem (tsi);
mouse_currently_over.FireEvent
(mea, ToolStripItemEventType.MouseLeave);
+ }
// Set the new item we are currently
over
mouse_currently_over = tsi;
// Fire mouse enter and mouse move
tsi.FireEvent (mea,
ToolStripItemEventType.MouseEnter);
+ MouseEnteredItem (tsi);
tsi.FireEvent (mea,
ToolStripItemEventType.MouseMove);
// If we're over something with a drop
down, show it
@@ -699,6 +706,7 @@
} else {
// We're not over anything now, just fire the
mouse leave on what we used to be over
if (mouse_currently_over != null) {
+ MouseLeftItem (tsi);
mouse_currently_over.FireEvent (mea,
ToolStripItemEventType.MouseLeave);
mouse_currently_over = null;
}
@@ -872,19 +880,6 @@
}
#endregion
- #region To Be Removed
- // These are things I overrode to get the behavior I needed,
but MS's API
- // says they aren't overridden. So I need to hide them (?) or
implement
- // them some other way...
- protected override void OnMouseHover (EventArgs e)
- {
- base.OnMouseHover (e);
-
- if (mouse_currently_over != null)
- mouse_currently_over.FireEvent (e,
ToolStripItemEventType.MouseHover);
- }
- #endregion
-
#region Public Events
static object ItemAddedEvent = new object ();
static object ItemClickedEvent = new object ();
@@ -1020,6 +1015,53 @@
this.OverflowButton.HideDropDown ();
}
}
+
+ private void MouseEnteredItem (ToolStripItem item)
+ {
+ tooltip_currently_showing = item;
+ ToolTipTimer.Start ();
+ }
+
+ private void MouseLeftItem (ToolStripItem item)
+ {
+ ToolTipTimer.Stop ();
+ ToolTipWindow.Hide ();
+ tooltip_currently_showing = null;
+ }
+
+ private Timer ToolTipTimer {
+ get {
+ if (tooltip_timer == null) {
+ tooltip_timer = new Timer ();
+ tooltip_timer.Enabled = false;
+ tooltip_timer.Interval = 500;
+ tooltip_timer.Tick += new EventHandler
(ToolTipTimer_Tick);
+ }
+
+ return tooltip_timer;
+ }
+ }
+
+ private ToolTip.ToolTipWindow ToolTipWindow {
+ get {
+ if (tooltip_window == null)
+ tooltip_window = new
ToolTip.ToolTipWindow ();
+
+ return tooltip_window;
+ }
+ }
+
+ private void ToolTipTimer_Tick (object o, EventArgs args)
+ {
+ string tooltip = tooltip_currently_showing.GetToolTip
();
+
+ if (!string.IsNullOrEmpty (tooltip))
+ ToolTipWindow.Present (this, tooltip);
+
+ tooltip_currently_showing.FireEvent (EventArgs.Empty,
ToolStripItemEventType.MouseHover);
+
+ ToolTipTimer.Stop ();
+ }
#endregion
}
}
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
2007-03-26 17:13:32 UTC (rev 74985)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
2007-03-26 18:15:45 UTC (rev 74986)
@@ -1413,6 +1413,15 @@
return this.Parent.ImageScalingSize;
}
+
+ internal string GetToolTip ()
+ {
+ if (this.auto_tool_tip && string.IsNullOrEmpty
(this.tool_tip_text))
+ return this.text;
+
+ return this.tool_tip_text;
+ }
+
internal void FireEvent (EventArgs e, ToolStripItemEventType
met)
{
switch (met) {
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches