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
Uh oh!
There was an error while loading. Please reload this page.
-
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