/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
Don't call this method directly, it should be used from shared
code only
XWindowPeer.addToTransientFors()
XWindowPeer.removeFromTransientFors()
See below
2. Filtering mouse events
Mouse events are filtered in the shared code. See
java.awt.ModalFilter class for details
3. Filtering key events
Key events are filtering by preventing the blocked windows
to get native focus. All the AWT windows use global active focus
input model (see ICCCM for details) and listens to WM_TAKE_FOCUS
protocol. If the window manager asks AWT to set focus on the
blocked window, in XDecoratedPeer.handleWmTakeFocus() method we
set the focus to the window's blocker.
4. Z-order
a dialog be a child of several other windows. It is implemented
as a "transient_for chain": all the blocked windows are arranged
into a chain, each next window is transient for the prev.
parent window is iconified. The situation is even worse: we
any window state (NormalState, IconifiedState, WithdrawnState)
a distinct chain is tracked. Below is a brief example.
however the values of WM_TRANSIENT_FOR hint for them are
changed: hint value for F1 is set to None, and hint value for
D1 is set to None.
the value for D2 is D1, the value for F2 is F1 (both are
iconified).
When either F1 or F2 is restored, the value for its hint is
restored according to the value stored in prevTransientFor
and nextTransientFor fields.
that is not the first in the transient_for chain too.
5. Multiscreen