X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=5dadeb3f5721b4ef87c000c958e8d83ffe29d7d4;hb=6fa0f79908a356c2efa73d5518544daea904ae89;hp=bb8461241c57aa8c14231331a8412ea9ec1a3942;hpb=9c04f4ce6bb3a8851b1abf3bb9999ca097d37685;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index bb84612..5dadeb3 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -43,6 +43,8 @@ import javax.swing.*; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; +import com.sun.xml.internal.ws.streaming.TidyXMLStreamReader; + /** * Jalview Desktop * @@ -302,7 +304,24 @@ public class Desktop extends jalview.jbgui.GDesktop implements } } }); - + this.addFocusListener(new FocusListener() + { + + @Override + public void focusLost(FocusEvent e) + { + // TODO Auto-generated method stub + + } + + @Override + public void focusGained(FocusEvent e) + { + Cache.log.debug("Relaying windows after focus gain"); + // make sure that we sort windows properly after we gain focus + instance.relayerWindows(); + } + }); this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this)); // Spawn a thread that shows the splashscreen SwingUtilities.invokeLater(new Runnable() @@ -358,6 +377,18 @@ public class Desktop extends jalview.jbgui.GDesktop implements { jvnews.refreshNews(); jvnews.toFront(); + // try real hard to get focus when the news is first opened + new Thread(new Runnable() { + @Override + public void run() + { + while (jvnews.isVisible() && !jvnews.requestFocusInWindow()) + { + try { Thread.sleep(50); } catch (InterruptedException x) {}; + } + + } + }).start(); } } } @@ -1986,6 +2017,17 @@ public class Desktop extends jalview.jbgui.GDesktop implements } + /** + * fixes stacking order after a modal dialog to ensure windows that should be on top actually are + */ + public void relayerWindows() + { + if (jvnews!=null && jvnews.isVisible()) + { + jvnews.toFront(); + } + } + protected JMenuItem groovyShell; public void doGroovyCheck()