From 4fefc4f2534ab562b804fc2a0dc2a600407ebba5 Mon Sep 17 00:00:00 2001 From: Markus Hofknecht Date: Thu, 13 May 2021 15:20:40 +0200 Subject: [PATCH] [Feature] Show loading as mouse cursor and extra loading menu (#161), version 1.0.17.42 --- Business/Menus.cs | 41 ++++++++++++++++++---------------- Business/WaitToLoadMenu.cs | 6 ++--- UserInterface/AppNotifyIcon.cs | 2 ++ 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Business/Menus.cs b/Business/Menus.cs index 346126f..011a57e 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -804,32 +804,35 @@ namespace SystemTrayMenu.Business private void HideOldMenu(Menu menuToShow, bool keepOrSetIsMenuOpen = false) { - // Clean up menu status IsMenuOpen for previous one Menu menuPrevious = menus[menuToShow.Level - 1]; - DataGridView dgvPrevious = menuPrevious.GetDataGridView(); - foreach (DataRow row in ((DataTable)dgvPrevious.DataSource).Rows) + if (menuPrevious != null) { - RowData rowDataToClear = (RowData)row[2]; - if (rowDataToClear == (RowData)menuToShow.Tag) + // Clean up menu status IsMenuOpen for previous one + DataGridView dgvPrevious = menuPrevious.GetDataGridView(); + foreach (DataRow row in ((DataTable)dgvPrevious.DataSource).Rows) { - rowDataToClear.IsMenuOpen = keepOrSetIsMenuOpen; + RowData rowDataToClear = (RowData)row[2]; + if (rowDataToClear == (RowData)menuToShow.Tag) + { + rowDataToClear.IsMenuOpen = keepOrSetIsMenuOpen; + } + else + { + rowDataToClear.IsMenuOpen = false; + } } - else + + RefreshSelection(dgvPrevious); + + // Hide old menu + foreach (Menu menuToClose in menus.Where( + m => m != null && m.Level > menuPrevious.Level)) { - rowDataToClear.IsMenuOpen = false; + menuToClose.VisibleChanged += MenuVisibleChanged; + menuToClose.HideWithFade(); + menus[menuToClose.Level] = null; } } - - RefreshSelection(dgvPrevious); - - // Hide old menu - foreach (Menu menuToClose in menus.Where( - m => m != null && m.Level > menuPrevious.Level)) - { - menuToClose.VisibleChanged += MenuVisibleChanged; - menuToClose.HideWithFade(); - menus[menuToClose.Level] = null; - } } private void FadeHalfOrOutIfNeeded() diff --git a/Business/WaitToLoadMenu.cs b/Business/WaitToLoadMenu.cs index 23cdf12..c317a41 100644 --- a/Business/WaitToLoadMenu.cs +++ b/Business/WaitToLoadMenu.cs @@ -173,10 +173,8 @@ namespace SystemTrayMenu.Handler { CloseMenu.Invoke(rowData.MenuLevel + 2); } - else - { - CloseMenu.Invoke(rowData.MenuLevel + 1); - } + + CloseMenu.Invoke(rowData.MenuLevel + 1); if (!rowData.IsContextMenuOpen && rowData.ContainsMenu && diff --git a/UserInterface/AppNotifyIcon.cs b/UserInterface/AppNotifyIcon.cs index 0f5cd9f..bb97a1b 100644 --- a/UserInterface/AppNotifyIcon.cs +++ b/UserInterface/AppNotifyIcon.cs @@ -99,6 +99,7 @@ namespace SystemTrayMenu.UserInterface public void LoadingStop() { + Cursor.Current = Cursors.Default; threadsLoading = false; } @@ -116,6 +117,7 @@ namespace SystemTrayMenu.UserInterface { if (DateTime.Now - timeLoadingStart > new TimeSpan(0, 0, 0, 0, 500)) { + Cursor.Current = Cursors.WaitCursor; notifyIcon.Icon = bitmapsLoading[loadCount++ % indexLoad]; } }