mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2024-10-16 23:06:49 +03:00
Document menu now rebuilt when order changes.
This commit is contained in:
parent
f8625669a8
commit
89853f1a6e
@ -102,7 +102,7 @@ namespace DarkUI.Docking
|
||||
menuItem.Tag = dockContent;
|
||||
menuItem.Click += TabMenuItem_Select;
|
||||
menuItem.Image = dockContent.Icon;
|
||||
_tabArea.TabMenu.Items.Add(menuItem);
|
||||
_tabArea.AddMenuItem(menuItem);
|
||||
|
||||
UpdateTabArea();
|
||||
}
|
||||
@ -139,22 +139,10 @@ namespace DarkUI.Docking
|
||||
}
|
||||
}
|
||||
|
||||
ToolStripMenuItem itemToRemove = null;
|
||||
foreach (ToolStripMenuItem item in _tabArea.TabMenu.Items)
|
||||
{
|
||||
var menuContent = item.Tag as DarkDockContent;
|
||||
if (menuContent == null)
|
||||
continue;
|
||||
var menuItem = _tabArea.GetMenuItem(dockContent);
|
||||
|
||||
if (menuContent == dockContent)
|
||||
itemToRemove = item;
|
||||
}
|
||||
|
||||
if (itemToRemove != null)
|
||||
{
|
||||
itemToRemove.Click -= TabMenuItem_Select;
|
||||
_tabArea.TabMenu.Items.Remove(itemToRemove);
|
||||
}
|
||||
menuItem.Click -= TabMenuItem_Select;
|
||||
_tabArea.RemoveMenuItem(menuItem);
|
||||
|
||||
UpdateTabArea();
|
||||
}
|
||||
@ -439,6 +427,8 @@ namespace DarkUI.Docking
|
||||
BuildTabs();
|
||||
EnsureVisible();
|
||||
|
||||
_tabArea.RebuildMenu();
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -464,6 +454,8 @@ namespace DarkUI.Docking
|
||||
BuildTabs();
|
||||
EnsureVisible();
|
||||
|
||||
_tabArea.RebuildMenu();
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -556,7 +548,7 @@ namespace DarkUI.Docking
|
||||
if (_tabArea.DropdownRectangle.Contains(e.Location))
|
||||
{
|
||||
if (_tabArea.DropdownHot)
|
||||
_tabArea.TabMenu.Show(this, new Point(_tabArea.DropdownRectangle.Left, _tabArea.DropdownRectangle.Bottom - 2));
|
||||
_tabArea.ShowMenu(this, new Point(_tabArea.DropdownRectangle.Left, _tabArea.DropdownRectangle.Bottom - 2));
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
using DarkUI.Config;
|
||||
using DarkUI.Controls;
|
||||
using DarkUI.Controls;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace DarkUI.Docking
|
||||
{
|
||||
@ -11,6 +11,7 @@ namespace DarkUI.Docking
|
||||
|
||||
private Dictionary<DarkDockContent, DarkDockTab> _tabs = new Dictionary<DarkDockContent, DarkDockTab>();
|
||||
|
||||
private List<ToolStripMenuItem> _menuItems = new List<ToolStripMenuItem>();
|
||||
private DarkContextMenu _tabMenu = new DarkContextMenu();
|
||||
|
||||
#endregion
|
||||
@ -31,8 +32,6 @@ namespace DarkUI.Docking
|
||||
|
||||
public bool Visible { get; set; }
|
||||
|
||||
public DarkContextMenu TabMenu { get { return _tabMenu; } }
|
||||
|
||||
public DarkDockTab ClickedCloseButton { get; set; }
|
||||
|
||||
#endregion
|
||||
@ -45,5 +44,64 @@ namespace DarkUI.Docking
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Method Region
|
||||
|
||||
public void ShowMenu(Control control, Point location)
|
||||
{
|
||||
_tabMenu.Show(control, location);
|
||||
}
|
||||
|
||||
public void AddMenuItem(ToolStripMenuItem menuItem)
|
||||
{
|
||||
_menuItems.Add(menuItem);
|
||||
RebuildMenu();
|
||||
}
|
||||
|
||||
public void RemoveMenuItem(ToolStripMenuItem menuItem)
|
||||
{
|
||||
_menuItems.Remove(menuItem);
|
||||
RebuildMenu();
|
||||
}
|
||||
|
||||
public ToolStripMenuItem GetMenuItem(DarkDockContent content)
|
||||
{
|
||||
ToolStripMenuItem menuItem = null;
|
||||
foreach (ToolStripMenuItem item in _menuItems)
|
||||
{
|
||||
var menuContent = item.Tag as DarkDockContent;
|
||||
if (menuContent == null)
|
||||
continue;
|
||||
|
||||
if (menuContent == content)
|
||||
menuItem = item;
|
||||
}
|
||||
|
||||
return menuItem;
|
||||
}
|
||||
|
||||
public void RebuildMenu()
|
||||
{
|
||||
_tabMenu.Items.Clear();
|
||||
|
||||
var orderedItems = new List<ToolStripMenuItem>();
|
||||
|
||||
var index = 0;
|
||||
for (var i = 0; i < _menuItems.Count; i++)
|
||||
{
|
||||
foreach (var item in _menuItems)
|
||||
{
|
||||
var content = (DarkDockContent)item.Tag;
|
||||
if (content.Order == index)
|
||||
orderedItems.Add(item);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
foreach (var item in orderedItems)
|
||||
_tabMenu.Items.Add(item);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user