JAL-1988 Hack to ensure Quit dialog box is moved to front
authorBen Soares <b.soares@dundee.ac.uk>
Mon, 13 Jun 2022 17:32:22 +0000 (18:32 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Mon, 13 Jun 2022 17:32:22 +0000 (18:32 +0100)
src/jalview/jbgui/APQHandlers.java

index 27c53b9..e18ec44 100644 (file)
  */
 package jalview.jbgui;
 
+import javax.swing.JFrame;
 import javax.swing.JOptionPane;
 
 import com.formdev.flatlaf.extras.FlatDesktop;
 
-import jalview.gui.Desktop;
 import jalview.util.MessageManager;
 
 public class APQHandlers
@@ -46,11 +46,26 @@ public class APQHandlers
       int n;
       if (confirmQuit)
       {
-        n = JOptionPane.showConfirmDialog(null,
+        // ensure Jalview window is brought to front for Quit confirmation
+        // window to be
+        // visible
+
+        // this method of raising the Jalview window is broken in java
+        // jalviewDesktop.setVisible(true);
+        // jalviewDesktop.toFront();
+
+        // a better hack which works instead
+        JFrame dialogParent = new JFrame();
+        dialogParent.setAlwaysOnTop(true);
+
+        n = JOptionPane.showConfirmDialog(dialogParent,
                 MessageManager.getString("label.quit_jalview"),
                 MessageManager.getString("action.quit"),
                 JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
                 null);
+
+        dialogParent.setAlwaysOnTop(false);
+        dialogParent.dispose();
       }
       else
       {