Add an IViewAware parameter to the ShowMessageBox function in the IWindowManager interface. #391
Closed
TreatTrick
started this conversation in
Ideas
Replies: 1 comment
-
Fixed in #393 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Here's why: In a recent project, I encountered an issue where after using
ShowMessageBox
, the popup window, which I will call Window-A, quickly disappeared, and my entire UI became unresponsive. After some investigation, I found the root cause. The default implementation ofIWindowManager
,WindowManager
, has a call tothis.ShowDialog(vm)
in theShowMessageBox
function. SinceShowDialog
doesn't specify an owner window, Stylet defaults to using the activated window as its owner. In my project, a small notification popup window, which I will cal Window-B, appears before calling ShowMessageBox, which automatically disappears after 2 seconds. The ShowMessageBox popup Window-A then incorrectly takes this notification popup Window-B as its owner. When the notification popup Window-B disappears, the ShowMessageBox popup Window-A also disappears due to losing its owner. Since Window-A is a modal window, the entire UI appears to be frozen.I propose changing the ShowMessageBox function signature to:
Adding an
IViewAware
parameter last allows for more flexible specification of the owner window forShowDialog
to callShowDialog(vm, viewModel)
, preventing the above issue. Since this parameter defaults to null, it will also be compatible with existing code.Beta Was this translation helpful? Give feedback.
All reactions