\r
this.auto_close = true;\r
is_visible = false;\r
+ Hwnd.ObjectFromHandle (this.Handle).no_activate = true;\r
this.GripStyle = ToolStripGripStyle.Hidden;\r
}\r
#endregion\r
\r
#region Public Properties\r
[Browsable (false)]\r
- [EditorBrowsable (EditorBrowsableState.Never)]\r
public bool AllowTransparency {\r
get { return allow_transparency; }\r
set {\r
if (value == allow_transparency)\r
return;\r
\r
- if (XplatUI.SupportsTransparency ()) {\r
+ if ((XplatUI.SupportsTransparency () & TransparencySupport.Set) != 0) {\r
allow_transparency = value;\r
\r
if (value) \r
}\r
\r
[Browsable (false)]\r
- [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
public override AnchorStyles Anchor {\r
get { return base.Anchor; }\r
set { base.Anchor = value; }\r
}\r
\r
- [Browsable (false)]\r
- [EditorBrowsable (EditorBrowsableState.Never)]\r
+ [DefaultValue (true)]\r
public bool AutoClose\r
{\r
get { return this.auto_close; }\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public ContextMenu ContextMenu {\r
+ public new ContextMenu ContextMenu {\r
get { return null; }\r
set { }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public ToolStripGripDisplayStyle GripDisplayStyle {\r
+ public new ToolStripGripDisplayStyle GripDisplayStyle {\r
get { return ToolStripGripDisplayStyle.Vertical; }\r
- set { }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public Padding GripMargin {\r
+ public new Padding GripMargin {\r
get { return Padding.Empty; }\r
set { }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public Rectangle GripRectangle {\r
+ public new Rectangle GripRectangle {\r
get { return Rectangle.Empty; }\r
- set { }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public ToolStripGripStyle GripStyle {\r
+ public new ToolStripGripStyle GripStyle {\r
get { return base.GripStyle; }\r
set { base.GripStyle = value; }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public Point Location {\r
+ public new Point Location {\r
get { return base.Location; }\r
set { base.Location = value; }\r
}\r
\r
public ToolStripItem OwnerItem {\r
get { return this.owner_item; }\r
- set { this.owner_item = value; }\r
+ set { this.owner_item = value; \r
+ \r
+ if (this.owner_item != null)\r
+ if (this.owner_item.Owner != null)\r
+ this.Renderer = this.owner_item.Owner.Renderer;\r
+ }\r
}\r
\r
- public Region Region {\r
+ public new Region Region {\r
get { return base.Region; }\r
set { base.Region = value; }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public bool Stretch {\r
+ public new bool Stretch {\r
get { return false; }\r
set { }\r
}\r
\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public int TabIndex {\r
+ public new int TabIndex {\r
get { return 0; }\r
set { }\r
}\r
}\r
\r
[Localizable (true)]\r
- public bool Visible {\r
+ public new bool Visible {\r
get { return base.Visible; }\r
set { base.Visible = value; }\r
}\r
if (!this.auto_close && reason != ToolStripDropDownCloseReason.CloseCalled)\r
return;\r
\r
+ // Detach from the tracker\r
+ ToolStripManager.AppClicked -= new EventHandler (ToolStripMenuTracker_AppClicked); ;\r
+ ToolStripManager.AppFocusChange -= new EventHandler (ToolStripMenuTracker_AppFocusChange);\r
+\r
// Owner MenuItem needs to be told to redraw (it's no longer selected)\r
if (owner_item != null)\r
- (owner_item as ToolStripMenuItem).Invalidate ();\r
+ owner_item.Invalidate ();\r
\r
// Recursive hide all child dropdowns\r
foreach (ToolStripItem tsi in this.Items)\r
this.OnClosed (new ToolStripDropDownClosedEventArgs (reason));\r
}\r
\r
- public void Show ()\r
+ public new void Show ()\r
{\r
CancelEventArgs e = new CancelEventArgs ();\r
this.OnOpening (e);\r
\r
if (e.Cancel)\r
return;\r
- \r
+\r
+ // The tracker lets us know when the form is clicked or loses focus\r
+ ToolStripManager.AppClicked += new EventHandler (ToolStripMenuTracker_AppClicked);\r
+ ToolStripManager.AppFocusChange += new EventHandler (ToolStripMenuTracker_AppFocusChange);\r
+\r
base.Show ();\r
\r
this.OnOpened (EventArgs.Empty);\r
throw new ArgumentNullException ("control");\r
\r
this.Location = control.PointToScreen (position);\r
+ Show ();\r
}\r
\r
public void Show (int x, int y)\r
this.Location = new Point (x, y);\r
Show ();\r
}\r
+ \r
+ public void Show (Control control, int x, int y)\r
+ {\r
+ Show (control, new Point (x, y));\r
+ \r
+ }\r
#endregion\r
\r
#region Protected Methods\r
\r
protected virtual void OnClosed (ToolStripDropDownClosedEventArgs e)\r
{\r
- if (Closed != null) Closed (this, e);\r
+ ToolStripDropDownClosedEventHandler eh = (ToolStripDropDownClosedEventHandler)(Events [ClosedEvent]);\r
+ if (eh != null)\r
+ eh (this, e);\r
}\r
\r
protected virtual void OnClosing (ToolStripDropDownClosingEventArgs e)\r
{\r
- if (Closing != null) Closing (this, e);\r
+ ToolStripDropDownClosingEventHandler eh = (ToolStripDropDownClosingEventHandler)(Events [ClosingEvent]);\r
+ if (eh != null)\r
+ eh (this, e);\r
}\r
\r
protected override void OnHandleCreated (EventArgs e)\r
// Find the widest menu item\r
int widest = 0;\r
\r
- foreach (ToolStripItem tsi in this.Items)\r
+ foreach (ToolStripItem tsi in this.Items) {\r
+ if (!tsi.Visible) \r
+ continue;\r
if (tsi.GetPreferredSize (Size.Empty).Width > widest)\r
widest = tsi.GetPreferredSize (Size.Empty).Width;\r
-\r
+ }\r
+ \r
int x = this.Padding.Left;\r
widest += 68 - this.Padding.Horizontal;\r
int y = this.Padding.Top;\r
\r
foreach (ToolStripItem tsi in this.Items) {\r
+ if (!tsi.Visible)\r
+ continue;\r
+\r
y += tsi.Margin.Top;\r
\r
int height = 0;\r
\r
protected virtual void OnOpened (EventArgs e)\r
{\r
- if (Opened != null) Opened (this, e);\r
+ EventHandler eh = (EventHandler)(Events [OpenedEvent]);\r
+ if (eh != null)\r
+ eh (this, e);\r
}\r
\r
protected virtual void OnOpening (CancelEventArgs e)\r
{\r
- if (Opening != null) Opening (this, e);\r
+ CancelEventHandler eh = (CancelEventHandler)(Events [OpeningEvent]);\r
+ if (eh != null)\r
+ eh (this, e);\r
}\r
\r
protected override void OnParentChanged (EventArgs e)\r
{\r
base.OnParentChanged (e);\r
+ \r
+ if (Parent is ToolStrip)\r
+ this.Renderer = (Parent as ToolStrip).Renderer;\r
}\r
\r
protected override void OnVisibleChanged (EventArgs e)\r
\r
protected override void SetVisibleCore (bool value)\r
{\r
- // Copied from Control.cs, changed XPlatUI.SetVisible(,,) to NO_ACTIVATE\r
- if (value != is_visible) {\r
- if (value && (window.Handle == IntPtr.Zero) || !is_created)\r
- CreateControl ();\r
-\r
- is_visible = value;\r
-\r
- if (IsHandleCreated)\r
- XplatUI.SetVisible (Handle, value, false);\r
-\r
- OnVisibleChanged (EventArgs.Empty);\r
-\r
- if (value == false && parent != null && Focused) {\r
- Control container;\r
-\r
- // Need to start at parent, GetContainerControl might return ourselves if we're a container\r
- container = (Control)parent.GetContainerControl ();\r
- \r
- if (container != null)\r
- container.SelectNextControl (this, true, true, true, true);\r
- }\r
-\r
- if (parent != null)\r
- parent.PerformLayout (this, "visible");\r
- else\r
- PerformLayout (this, "visible");\r
- }\r
+ base.SetVisibleCore (value);\r
}\r
\r
protected override void WndProc (ref Message m)\r
#endregion\r
\r
#region Public Events\r
- public event EventHandler BackgroundImageChanged;\r
- public event EventHandler BackgroundImageLayoutChanged;\r
- public event EventHandler BindingContextChanged;\r
- public event UICuesEventHandler ChangeUICues;\r
- public event ToolStripDropDownClosedEventHandler Closed;\r
- public event ToolStripDropDownClosingEventHandler Closing;\r
+ static object ClosedEvent = new object ();\r
+ static object ClosingEvent = new object ();\r
+ static object OpenedEvent = new object ();\r
+ static object OpeningEvent = new object ();\r
+ static object ScrollEvent = new object ();\r
+\r
+ public new event EventHandler BackgroundImageChanged {\r
+ add { base.BackgroundImageChanged += value; }\r
+ remove { base.BackgroundImageChanged -= value; }\r
+ }\r
+\r
+ public new event EventHandler BackgroundImageLayoutChanged {\r
+ add { base.BackgroundImageLayoutChanged += value; }\r
+ remove { base.BackgroundImageLayoutChanged -= value; }\r
+ }\r
+\r
+ public new event EventHandler BindingContextChanged {\r
+ add { base.BindingContextChanged += value; }\r
+ remove { base.BindingContextChanged -= value; }\r
+ }\r
+ public new event UICuesEventHandler ChangeUICues {\r
+ add { base.ChangeUICues += value; }\r
+ remove { base.ChangeUICues -= value; }\r
+ }\r
+\r
+ public event ToolStripDropDownClosedEventHandler Closed {\r
+ add { Events.AddHandler (ClosedEvent, value); }\r
+ remove { Events.RemoveHandler (ClosedEvent, value); }\r
+ }\r
+\r
+ public event ToolStripDropDownClosingEventHandler Closing {\r
+ add { Events.AddHandler (ClosingEvent, value); }\r
+ remove { Events.RemoveHandler (ClosingEvent, value); }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler ContextMenuChanged;\r
+ public new event EventHandler ContextMenuChanged {\r
+ add { base.ContextMenuChanged += value; }\r
+ remove { base.ContextMenuChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler ContextMenuStripChanged;\r
+ public new event EventHandler ContextMenuStripChanged {\r
+ add { base.ContextMenuStripChanged += value; }\r
+ remove { base.ContextMenuStripChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler DockChanged;\r
- public event EventHandler Enter;\r
- public event EventHandler FontChanged;\r
- public event EventHandler ForeColorChanged;\r
+ public new event EventHandler DockChanged {\r
+ add { base.DockChanged += value; }\r
+ remove { base.DockChanged -= value; }\r
+ }\r
+\r
+ public new event EventHandler Enter {\r
+ add { base.Enter += value; }\r
+ remove { base.Enter -= value; }\r
+ }\r
+\r
+ public new event EventHandler FontChanged {\r
+ add { base.FontChanged += value; }\r
+ remove { base.FontChanged -= value; }\r
+ }\r
+\r
+ public new event EventHandler ForeColorChanged {\r
+ add { base.ForeColorChanged += value; }\r
+ remove { base.ForeColorChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event GiveFeedbackEventHandler GiveFeedback;\r
- public event HelpEventHandler HelpRequested;\r
- public event EventHandler ImeModeChanged;\r
- public event KeyEventHandler KeyDown;\r
- public event KeyPressEventHandler KeyPress;\r
- public event KeyEventHandler KeyUp;\r
- public event EventHandler Leave;\r
- public event EventHandler Opened;\r
- public event CancelEventHandler Opening;\r
- public event EventHandler RegionChanged;\r
+ public new event GiveFeedbackEventHandler GiveFeedback {\r
+ add { base.GiveFeedback += value; }\r
+ remove { base.GiveFeedback -= value; }\r
+ }\r
+\r
+ public new event HelpEventHandler HelpRequested {\r
+ add { base.HelpRequested += value; }\r
+ remove { base.HelpRequested -= value; }\r
+ }\r
+\r
+ public new event EventHandler ImeModeChanged {\r
+ add { base.ImeModeChanged += value; }\r
+ remove { base.ImeModeChanged -= value; }\r
+ }\r
+\r
+ public new event KeyEventHandler KeyDown {\r
+ add { base.KeyDown += value; }\r
+ remove { base.KeyDown -= value; }\r
+ }\r
+\r
+ public new event KeyPressEventHandler KeyPress {\r
+ add { base.KeyPress += value; }\r
+ remove { base.KeyPress -= value; }\r
+ }\r
+\r
+ public new event KeyEventHandler KeyUp {\r
+ add { base.KeyUp += value; }\r
+ remove { base.KeyUp -= value; }\r
+ }\r
+\r
+ public new event EventHandler Leave {\r
+ add { base.Leave += value; }\r
+ remove { base.Leave -= value; }\r
+ }\r
+\r
+ public event EventHandler Opened {\r
+ add { Events.AddHandler (OpenedEvent, value); }\r
+ remove { Events.RemoveHandler (OpenedEvent, value); }\r
+ }\r
+\r
+ public event CancelEventHandler Opening {\r
+ add { Events.AddHandler (OpeningEvent, value); }\r
+ remove { Events.RemoveHandler (OpeningEvent, value); }\r
+ }\r
+\r
+ public new event EventHandler RegionChanged {\r
+ add { base.RegionChanged += value; }\r
+ remove { base.RegionChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event ScrollEventHandler Scroll;\r
- public event EventHandler StyleChanged;\r
+ public new event ScrollEventHandler Scroll {\r
+ add { Events.AddHandler (ScrollEvent, value); }\r
+ remove { Events.RemoveHandler (ScrollEvent, value); }\r
+ }\r
+\r
+ public new event EventHandler StyleChanged {\r
+ add { base.StyleChanged += value; }\r
+ remove { base.StyleChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler TabIndexChanged;\r
+ public new event EventHandler TabIndexChanged {\r
+ add { base.TabIndexChanged += value; }\r
+ remove { base.TabIndexChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler TabStopChanged;\r
+ public new event EventHandler TabStopChanged {\r
+ add { base.TabStopChanged += value; }\r
+ remove { base.TabStopChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler TextChanged;\r
+ public new event EventHandler TextChanged {\r
+ add { base.TextChanged += value; }\r
+ remove { base.TextChanged -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event EventHandler Validated;\r
+ public new event EventHandler Validated {\r
+ add { base.Validated += value; }\r
+ remove { base.Validated -= value; }\r
+ }\r
+\r
[Browsable (false)]\r
[EditorBrowsable (EditorBrowsableState.Never)]\r
- public event CancelEventHandler Validating;\r
+ public new event CancelEventHandler Validating {\r
+ add { base.Validating += value; }\r
+ remove { base.Validating -= value; }\r
+ }\r
+ #endregion\r
+\r
+ #region Private Methods\r
+ private void ToolStripMenuTracker_AppFocusChange (object sender, EventArgs e)\r
+ {\r
+ this.Close (ToolStripDropDownCloseReason.AppFocusChange);\r
+ }\r
+\r
+ private void ToolStripMenuTracker_AppClicked (object sender, EventArgs e)\r
+ {\r
+ this.Close (ToolStripDropDownCloseReason.AppClicked);\r
+ }\r
#endregion\r
}\r
}\r
-#endif
\ No newline at end of file
+#endif\r