X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FAPQHandlers.java;h=00ce170361a85613a164137fb2f05997bfc9eb5c;hb=ac63b721ce80f32a04a6d0eeff29192bad50972e;hp=27c53b9edab1f5d1ad80402d757e4f3563b0a831;hpb=dda7fb15c035fe454eae0fe85c29c0df922ec271;p=jalview.git diff --git a/src/jalview/jbgui/APQHandlers.java b/src/jalview/jbgui/APQHandlers.java index 27c53b9..00ce170 100644 --- a/src/jalview/jbgui/APQHandlers.java +++ b/src/jalview/jbgui/APQHandlers.java @@ -20,17 +20,15 @@ */ 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 { - protected static boolean setAPQHandlers = false; - public static boolean setAPQHandlers(GDesktop desktop) { FlatDesktop.setAboutHandler(() -> { @@ -46,11 +44,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 { @@ -66,10 +79,8 @@ public class APQHandlers response.cancelQuit(); } }); - - setAPQHandlers = true; - - return setAPQHandlers; + // if we got to here, no exceptions occurred when we set the handlers. + return true; } }