#
# Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# 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.
#
# ##########################################################
# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
# ##########################################################
#
module name jdk.unsupported.desktop
header exports jdk/swing/interop requires name\u0020;java.base\u0020;flags\u0020;8000,name\u0020;java.desktop\u0020;flags\u0020;20 provides interface\u0020;sun/swing/InteropProvider\u0020;impls\u0020;jdk/swing/interop/internal/InteropProviderImpl target linux-amd64 flags 8000

class name jdk/swing/interop/DispatcherWrapper
header extends java/lang/Object flags 421
method name <init> descriptor ()V flags 1
method name isDispatchThread descriptor ()Z flags 401
method name scheduleDispatch descriptor (Ljava/lang/Runnable;)V flags 401
method name createSecondaryLoop descriptor ()Ljava/awt/SecondaryLoop; flags 401
method name setFwDispatcher descriptor (Ljava/awt/EventQueue;Ljdk/swing/interop/DispatcherWrapper;)V flags 9

class name jdk/swing/interop/DragSourceContextWrapper
header extends java/lang/Object flags 421
method name <init> descriptor (Ljava/awt/dnd/DragGestureEvent;)V flags 1
method name convertModifiersToDropAction descriptor (II)I flags 9
method name setNativeCursor descriptor (Ljava/awt/Cursor;I)V flags 404
method name startDrag descriptor (Ljava/awt/datatransfer/Transferable;[JLjava/util/Map;)V flags 404 signature (Ljava/awt/datatransfer/Transferable;[JLjava/util/Map<Ljava/lang/Long;Ljava/awt/datatransfer/DataFlavor;>;)V
method name startSecondaryEventLoop descriptor ()V flags 401
method name quitSecondaryEventLoop descriptor ()V flags 401
method name dragDropFinished descriptor (ZIII)V flags 1
method name getDragSourceContext descriptor ()Ljava/awt/dnd/DragSourceContext; flags 1

class name jdk/swing/interop/DropTargetContextWrapper
header extends java/lang/Object flags 421
method name <init> descriptor ()V flags 1
method name setDropTargetContext descriptor (Ljava/awt/dnd/DropTargetContext;Ljdk/swing/interop/DropTargetContextWrapper;)V flags 1
method name reset descriptor (Ljava/awt/dnd/DropTargetContext;)V flags 1
method name setTargetActions descriptor (I)V flags 401
method name getTargetActions descriptor ()I flags 401
method name getDropTarget descriptor ()Ljava/awt/dnd/DropTarget; flags 401
method name getTransferDataFlavors descriptor ()[Ljava/awt/datatransfer/DataFlavor; flags 401
method name getTransferable descriptor ()Ljava/awt/datatransfer/Transferable; thrownTypes java/awt/dnd/InvalidDnDOperationException flags 401
method name isTransferableJVMLocal descriptor ()Z flags 401
method name acceptDrag descriptor (I)V flags 401
method name rejectDrag descriptor ()V flags 401
method name acceptDrop descriptor (I)V flags 401
method name rejectDrop descriptor ()V flags 401
method name dropComplete descriptor (Z)V flags 401

class name jdk/swing/interop/LightweightContentWrapper
header extends java/lang/Object flags 421
method name <init> descriptor ()V flags 1
method name imageBufferReset descriptor ([IIIIII)V flags 401
method name imageBufferReset descriptor ([IIIIIIDD)V flags 401
method name getComponent descriptor ()Ljavax/swing/JComponent; flags 401
method name paintLock descriptor ()V flags 401
method name paintUnlock descriptor ()V flags 401
method name imageReshaped descriptor (IIII)V flags 401
method name imageUpdated descriptor (IIII)V flags 401
method name focusGrabbed descriptor ()V flags 401
method name focusUngrabbed descriptor ()V flags 401
method name preferredSizeChanged descriptor (II)V flags 401
method name maximumSizeChanged descriptor (II)V flags 401
method name minimumSizeChanged descriptor (II)V flags 401
method name createDragGestureRecognizer descriptor (Ljava/lang/Class;Ljava/awt/dnd/DragSource;Ljava/awt/Component;ILjava/awt/dnd/DragGestureListener;)Ljava/awt/dnd/DragGestureRecognizer; flags 401 signature <T:Ljava/awt/dnd/DragGestureRecognizer;>(Ljava/lang/Class<TT;>;Ljava/awt/dnd/DragSource;Ljava/awt/Component;ILjava/awt/dnd/DragGestureListener;)TT;
method name createDragSourceContext descriptor (Ljava/awt/dnd/DragGestureEvent;)Ljdk/swing/interop/DragSourceContextWrapper; thrownTypes java/awt/dnd/InvalidDnDOperationException flags 401
method name addDropTarget descriptor (Ljava/awt/dnd/DropTarget;)V flags 401
method name removeDropTarget descriptor (Ljava/awt/dnd/DropTarget;)V flags 401

class name jdk/swing/interop/LightweightFrameWrapper
header extends java/lang/Object flags 21
method name <init> descriptor ()V flags 1
method name notifyDisplayChanged descriptor (I)V flags 1
method name notifyDisplayChanged descriptor (DD)V flags 1
method name setHostBounds descriptor (IIII)V flags 1
method name dispose descriptor ()V flags 1
method name addWindowFocusListener descriptor (Ljava/awt/event/WindowFocusListener;)V flags 1
method name setVisible descriptor (Z)V flags 1
method name setBounds descriptor (IIII)V flags 1
method name setContent descriptor (Ljdk/swing/interop/LightweightContentWrapper;)V flags 1
method name emulateActivation descriptor (Z)V flags 1
method name createMouseEvent descriptor (Ljdk/swing/interop/LightweightFrameWrapper;IJIIIIIIZI)Ljava/awt/event/MouseEvent; flags 1
method name createMouseWheelEvent descriptor (Ljdk/swing/interop/LightweightFrameWrapper;IIII)Ljava/awt/event/MouseWheelEvent; flags 1
method name createKeyEvent descriptor (Ljdk/swing/interop/LightweightFrameWrapper;IJIIC)Ljava/awt/event/KeyEvent; flags 1
method name createUngrabEvent descriptor (Ljdk/swing/interop/LightweightFrameWrapper;)Ljava/awt/AWTEvent; flags 1
method name findComponentAt descriptor (Ljdk/swing/interop/LightweightFrameWrapper;IIZ)Ljava/awt/Component; flags 1
method name isCompEqual descriptor (Ljava/awt/Component;Ljdk/swing/interop/LightweightFrameWrapper;)Z flags 1

class name jdk/swing/interop/SwingInterOpUtils
header extends java/lang/Object flags 21
field name GRAB_EVENT_MASK descriptor I constantValue -2147483648 flags 19
method name <init> descriptor ()V flags 1
method name postEvent descriptor (Ljava/lang/Object;Ljava/awt/AWTEvent;)V flags 9
method name grab descriptor (Ljava/awt/Toolkit;Ljava/awt/Window;)V flags 9
method name ungrab descriptor (Ljava/awt/Toolkit;Ljava/awt/Window;)V flags 9
method name isUngrabEvent descriptor (Ljava/awt/AWTEvent;)Z flags 9

