mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-09-30 09:06:32 +13:00
Improve mouse and search item selection
This commit is contained in:
parent
9dede1c762
commit
56476e095d
2 changed files with 23 additions and 42 deletions
|
@ -182,23 +182,16 @@ namespace SystemTrayMenu.Handler
|
|||
}
|
||||
}
|
||||
|
||||
internal void SearchTextChanging()
|
||||
{
|
||||
ClearIsSelectedByKey();
|
||||
}
|
||||
|
||||
internal void SearchTextChanged(Menu menu, bool isSearchStringEmpty)
|
||||
{
|
||||
if (isSearchStringEmpty)
|
||||
{
|
||||
ClearIsSelectedByKey();
|
||||
}
|
||||
else
|
||||
ClearIsSelectedByKey();
|
||||
|
||||
if (!isSearchStringEmpty)
|
||||
{
|
||||
ListView dgv = menu.GetDataGridView();
|
||||
if (dgv.Items.Count > 0)
|
||||
{
|
||||
Select(menu, (ListViewItemData)dgv.Items[0], true);
|
||||
MouseSelect(menu, (ListViewItemData)dgv.Items[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -208,28 +201,14 @@ namespace SystemTrayMenu.Handler
|
|||
ClearIsSelectedByKey(focussedMenu, focussedRow);
|
||||
}
|
||||
|
||||
internal void Select(Menu menu, ListViewItemData itemData, bool refreshview)
|
||||
internal void MouseSelect(Menu menu, ListViewItemData itemData)
|
||||
{
|
||||
if (itemData != focussedRow || menu != focussedMenu)
|
||||
{
|
||||
ClearIsSelectedByKey();
|
||||
}
|
||||
InUse = false;
|
||||
|
||||
ClearIsSelectedByKey();
|
||||
|
||||
focussedMenu = menu;
|
||||
focussedRow = itemData;
|
||||
|
||||
itemData.data.IsSelected = true;
|
||||
|
||||
if (refreshview)
|
||||
{
|
||||
ListView dgv = menu.GetDataGridView();
|
||||
if (dgv.SelectedItems.Contains(itemData))
|
||||
{
|
||||
dgv.SelectedItems.Remove(itemData);
|
||||
}
|
||||
|
||||
dgv.SelectedItems.Add(itemData);
|
||||
}
|
||||
Select(menu.GetDataGridView(), itemData);
|
||||
}
|
||||
|
||||
private static void ClearIsSelectedByKey(Menu? menu, ListViewItemData? itemData)
|
||||
|
@ -440,6 +419,7 @@ namespace SystemTrayMenu.Handler
|
|||
if (itemData != focussedRow)
|
||||
{
|
||||
Select(dgv, itemData);
|
||||
dgv.ScrollIntoView(itemData);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
@ -466,6 +446,7 @@ namespace SystemTrayMenu.Handler
|
|||
if (itemData != focussedRow)
|
||||
{
|
||||
Select(dgv, itemData);
|
||||
dgv.ScrollIntoView(itemData);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
@ -479,8 +460,15 @@ namespace SystemTrayMenu.Handler
|
|||
{
|
||||
focussedRow = itemData;
|
||||
itemData.data.IsSelected = true;
|
||||
|
||||
// TODO: Refresh ListViewItems - optimize out
|
||||
// ([remove and] add item to procove selection changed handler)
|
||||
if (dgv.SelectedItems.Contains(itemData))
|
||||
{
|
||||
dgv.SelectedItems.Remove(itemData);
|
||||
}
|
||||
|
||||
dgv.SelectedItems.Add(itemData);
|
||||
dgv.ScrollIntoView(itemData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ namespace SystemTrayMenu.Business
|
|||
}
|
||||
}
|
||||
|
||||
waitToOpenMenu.MouseEnterOk += (menu, itemData) => MouseEnterOk(menu, itemData, false);
|
||||
waitToOpenMenu.MouseEnterOk += (menu, itemData) => MouseEnterOk(menu, itemData);
|
||||
waitToOpenMenu.CloseMenu += CloseMenu;
|
||||
void CloseMenu(int level)
|
||||
{
|
||||
|
@ -464,7 +464,6 @@ namespace SystemTrayMenu.Business
|
|||
void Menu_SearchTextChanging()
|
||||
{
|
||||
searchTextChanging = true;
|
||||
keyboardInput.SearchTextChanging();
|
||||
waitToOpenMenu.MouseActive = false;
|
||||
}
|
||||
|
||||
|
@ -529,7 +528,7 @@ namespace SystemTrayMenu.Business
|
|||
menu.IsVisibleChanged += (sender, _) => MenuVisibleChanged((Menu)sender);
|
||||
menu.CellMouseEnter += waitToOpenMenu.MouseEnter;
|
||||
menu.CellMouseLeave += waitToOpenMenu.MouseLeave;
|
||||
menu.CellMouseDown += (menu, itemData) => MouseEnterOk(menu, itemData, true);
|
||||
menu.CellMouseDown += (menu, itemData) => MouseEnterOk(menu, itemData);
|
||||
menu.CellOpenOnClick += waitToOpenMenu.ClickOpensInstantly;
|
||||
menu.ClosePressed += MenusFadeOut;
|
||||
|
||||
|
@ -582,17 +581,11 @@ namespace SystemTrayMenu.Business
|
|||
}
|
||||
}
|
||||
|
||||
private void MouseEnterOk(Menu menu, ListViewItemData itemData, bool refreshView)
|
||||
private void MouseEnterOk(Menu menu, ListViewItemData itemData)
|
||||
{
|
||||
if (IsMainUsable)
|
||||
{
|
||||
if (keyboardInput.InUse)
|
||||
{
|
||||
keyboardInput.ClearIsSelectedByKey();
|
||||
keyboardInput.InUse = false;
|
||||
}
|
||||
|
||||
keyboardInput.Select(menu, itemData, refreshView);
|
||||
keyboardInput.MouseSelect(menu, itemData);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue