Display.getActiveShell() seems to only consider the shell as active if it is focused. If at the moment another application has focus, i.e. Display.getActiveShell() returns null .
I need a method that will always tell me that Shell is in focus of my SWT application, even if my SWT application is not in focus.
I quickly cracked this piece of code, although sometimes I get an AssertionException :
public static Shell getActiveShell() { Display display = Display.getDefault(); Shell result = display.getActiveShell(); if (result == null) { Shell[] shells = display.getShells(); for (Shell shell : shells) { if (shell.getShells().length == 0) { if (result != null) throw new AssertionException(); result = shell; } } } return result; }
Is there any standard way to approach this problem besides writing my own method?
devoured elysium
source share