In some cases calling Control.Invoke() from a background thread causes that thread to go in a "sleep, wait, or join" mode, while waiting for Invoke to happen, although the UI thread is running normally.
If the Control is the MainWindow, it works as expected, but we've seen it happening while connecting or disconnecting from a large pool, on calling Invoke on controls like NavigationView, AlertSummaryPage, HistoryPage, etc.
To fix this, we call the Invoke on the MainWindow in all the places where we've seen the issue.
With this changes, the previous fix for CA-148245 (call RequestRefreshTreeView on CacheClearing event) is not needed anymore, so I removed that call.
Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
- In the Events view, offer a choice only to dismiss the visible ones instead of all
- Keep the filter buttons always enabled. This applies to all Notification views (Alerts, Updates & Events)
- Also refined the confirmation messages displayed when dismissing events
Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
Changes to the DeleteAllAlertsAction:
- when the dismiss operation fails with INVALID_HANDLE we need to remove the alert from our alert list (XenCenterAlerts) and trigger the CollectionChanged event so that the alert count gets updated.
- the action title now says "Removing <n> alerts" when dismissing all/selected alerts and "Removing alert" when dismissing single alert (instead of "Removing all alerts" in all cases)
- move the initialization of Dismissing flag outside the action (see below)
This fix also includes changes so that the Dismissing flag works as intended: to be able to hide the dismissing alerts in the Alerts view immediately, rather than one by one when they were actually deleted, causing a large number of refreshes.
On dismissing alerts we do:
1. set dismissing to true for all alerts
2. rebuild alert list (this will filter out the dismissing alerts)
3. dismiss alerts - run the DismissAllAlerts action
Also, the action buttons on each row should only apply to the clicked row (not multiselect).
Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
- When clicking the action button on the grid, execute the action on the item that has been clicked, instead on using the grid's selected item, which may have not been updated yet.
- On multiselect (if the multiselect is allowed for the action), if the clicked item is in the grid's selection list, then execute the action on the whole list, otherwise on the clicked item only.
- This applies to both Updates and Alerts windows.
Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
was available for non-dismissible alerts. Fixed wrong enabled state of the top
ToolStripSplitbutton Dismiss on the alerts and the events page. Refactored code
calculating dismissability of alerts and dismissing them. Events list should be
multi-selectable.
Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
applies to the latter. Converted methods from AlertSummaryPage to one Alert and
one String extension method so they can be used more widely. Code simplification
on the Updates page.
Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
used to access the alerts list. The list itself should be private as there is a
risk to access it and forgetting to use the lock.
Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
Preserve last selected node when switching between views. Added labelling to the
unit tests run post-build. Minor tidy.
Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>