diff options
author | therzok <marius.ungureanu@xamarin.com> | 2016-04-26 22:37:06 +0300 |
---|---|---|
committer | therzok <marius.ungureanu@xamarin.com> | 2016-04-26 22:37:11 +0300 |
commit | b17c0dc4469284f0896de85a3e0f626239ddedcb (patch) | |
tree | 94c62ff18b8a45998a6d47c4f56a9f2b5e32c5b0 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking | |
parent | bf9ffc82fb0ac589fa76a9e24454edc8eb5f63ec (diff) |
[Ide] Use native context menus in the dock item toolbars.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking')
3 files changed, 24 insertions, 31 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs index b4cb07dfd6..94ced4e57d 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs @@ -362,7 +362,7 @@ namespace MonoDevelop.Components.Docking if (autoHideTimeout == uint.MaxValue) { autoHideTimeout = GLib.Timeout.Add (force ? 0 : bar.Frame.AutoHideDelay, delegate { // Don't hide if the context menu for the item is being shown. - if (it.ShowingContextMemu) + if (it.ShowingContextMenu) return true; // Don't hide the item if it has the focus. Try again later. if (it.Widget.FocusChild != null && !force && autoShowFrame != null && ((Gtk.Window)autoShowFrame.Toplevel).HasToplevelFocus) @@ -437,7 +437,7 @@ namespace MonoDevelop.Components.Docking if (bar.Frame.OverlayWidgetVisible) return false; if (evnt.TriggersContextMenu ()) { - it.ShowDockPopupMenu (evnt.Time); + it.ShowDockPopupMenu (this, evnt); } else if (evnt.Button == 1) { if (evnt.Type == Gdk.EventType.TwoButtonPress) { // Instead of changing the state of the pad here, do it when the button is released. diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs index c1054eec77..ceec861e19 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs @@ -526,54 +526,47 @@ namespace MonoDevelop.Components.Docking } } - internal bool ShowingContextMemu { get ; set; } - - internal void ShowDockPopupMenu (uint time) + internal bool ShowingContextMenu { get ; set; } + + internal void ShowDockPopupMenu (Gtk.Widget parent, Gdk.EventButton evt) { - Gtk.Menu menu = new Gtk.Menu (); - + var menu = new ContextMenu (); + ContextMenuItem citem; + // Hide menuitem if ((Behavior & DockItemBehavior.CantClose) == 0) { - Gtk.MenuItem mitem = new Gtk.MenuItem (Catalog.GetString("Hide")); - mitem.Activated += delegate { Visible = false; }; - menu.Append (mitem); + citem = new ContextMenuItem (Catalog.GetString ("Hide")); + citem.Clicked += delegate { Visible = false; }; + menu.Add (citem); } - Gtk.MenuItem citem; - // Auto Hide menuitem if ((Behavior & DockItemBehavior.CantAutoHide) == 0 && Status != DockItemStatus.AutoHide) { - citem = new Gtk.MenuItem (Catalog.GetString("Minimize")); - citem.Activated += delegate { Status = DockItemStatus.AutoHide; }; - menu.Append (citem); + citem = new ContextMenuItem (Catalog.GetString ("Minimize")); + citem.Clicked += delegate { Status = DockItemStatus.AutoHide; }; + menu.Add (citem); } if (Status != DockItemStatus.Dockable) { // Dockable menuitem - citem = new Gtk.MenuItem (Catalog.GetString("Dock")); - citem.Activated += delegate { Status = DockItemStatus.Dockable; }; - menu.Append (citem); + citem = new ContextMenuItem (Catalog.GetString ("Dock")); + citem.Clicked += delegate { Status = DockItemStatus.Dockable; }; + menu.Add (citem); } // Floating menuitem if ((Behavior & DockItemBehavior.NeverFloating) == 0 && Status != DockItemStatus.Floating) { - citem = new Gtk.MenuItem (Catalog.GetString("Undock")); - citem.Activated += delegate { Status = DockItemStatus.Floating; }; - menu.Append (citem); + citem = new ContextMenuItem (Catalog.GetString ("Undock")); + citem.Clicked += delegate { Status = DockItemStatus.Floating; }; + menu.Add (citem); } - if (menu.Children.Length == 0) { - menu.Destroy (); + if (menu.Items.Count == 0) { return; } - ShowingContextMemu = true; - - menu.ShowAll (); - menu.Hidden += (o,e) => { - ShowingContextMemu = false; - }; - menu.Popup (null, null, null, 3, time); + ShowingContextMenu = true; + menu.Show (parent, evt, () => { ShowingContextMenu = true; }); } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs index 94ce5d3b9a..eb9bf7be15 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs @@ -298,7 +298,7 @@ namespace MonoDevelop.Components.Docking protected override bool OnButtonPressEvent (Gdk.EventButton evnt) { if (evnt.TriggersContextMenu ()) { - item.ShowDockPopupMenu (evnt.Time); + item.ShowDockPopupMenu (this, evnt); return false; } else if (evnt.Button == 1) { if (evnt.Type == Gdk.EventType.ButtonPress) { |