Gnats 5929: Hidden modal dlg. Provisional Solution [3] Bug Number: 5929 Release notes (y/n): Yes For Release Nums: 7.2 These changes are being checked in to a temporary Bug5929 branch on top of the master branch. Note that there are two prior relevant commits for this work on the master branch. (This is important if we merge/cherry pick this into Release_72). (I) One improvement we can make to last week's implementation is NOT calling "activateWindow()" when we raise the current MODAL DIALOG. In debug builds (but not release builds), this was preventing the operation of dialogs of OTHER applications. activeModal->showNormal(); activeModal->raise(); //-- activeModal->activateWindow(); See change in method Workspace::gnats5929_raiseModalDialog(). (II) A reasonable requirement for this fix is that, if a MODAL RiverWare dialog is obscured by another application, clicking in ANY RiverWare dialog should RAISE that modal dialog. That wasn't happening with the prior code. The code for raising the modal dialog does work, but I wasn't able to receive any relevant events to trigger that "raise" function when the user clicks in a RiverWare window other than the (possibly "lost") modal dialog. I attempted to receive mouse click events outside of the current modal dialog in each of these four ways: (1) Overriding mousePressEvent() in the Workspace (2) Overriding event() in the Workspace, and looking for mouse press events. (3) Installing an eventFilter on the Workspace. (4) Installing an eventFilter, ephemerally, on the current modal dialog. But the following worked. When RiverWare is showing a modal dialog, we're running a repeating timer, triggered every second (1000 milliseconds). On each "trigger", if there exists a modal dialog which is NOT the active window widget, then that modal dialog is raised. NOTE: It's not ideal to make use of a repeating timer to solve an implementation problem, and we virtually never do that. (I'm not aware of the use of such a thing elsewhere in RiverWare). But I think we could decide to allow this (a repeating one-second timer when a modal dialog is active) for this purpose. This makes it possible to raise the possibly-obscured modal dialog when the user clicks in ANY RiverWare window. See these new provisions: QTimer* _gnats5929_modalDlgTick_Timer; void startGnats5929_modalDlgTick(); void stopGnats5929_modalDlgTick(); void gnats5929_modalDlgTick_Timeout(); ---