[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.albireo] Restoring the active shell in SwtInputBlocker does not work properly

If the SwtInputBlocker is used for a modal awt dialog it tries to restore the last active shell when the awt dialog closes. This is done because windows from other applications could be openeded during SWT was being blocked (SwtInputBlocker line 116).

When the method block(AwtDialogListener dialogListener) is called the SwtInputBlocker tries to remember the active shell. This fails because display.getActiveShell() does mostly return null. In this case the first shell will be taken from the display. If you work with more than 1 shell at the same time and you open/close a swing dialog, always the first shell from the display gets the focus not the original parent.

I added a SWT.Activate listener to the display in the AwtDialogListener to remember the last active shell. Any better solutions?

Another problem is if you start a complete new awt window, lets say for JasperReports, from a swt context and open a new awt modal dialog from there, if you close the awt dialog the swt shell gets the focus not the awt window from JasperReports which was the parent.

Regards
Dominik