Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortherzok <marius.ungureanu@xamarin.com>2016-04-26 22:37:06 +0300
committertherzok <marius.ungureanu@xamarin.com>2016-04-26 22:37:11 +0300
commitb17c0dc4469284f0896de85a3e0f626239ddedcb (patch)
tree94c62ff18b8a45998a6d47c4f56a9f2b5e32c5b0 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking
parentbf9ffc82fb0ac589fa76a9e24454edc8eb5f63ec (diff)
[Ide] Use native context menus in the dock item toolbars.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs49
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs2
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) {