diff options
Diffstat (limited to 'widget/nsIDragService.idl')
-rw-r--r-- | widget/nsIDragService.idl | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/widget/nsIDragService.idl b/widget/nsIDragService.idl new file mode 100644 index 0000000000..c7779bc5c8 --- /dev/null +++ b/widget/nsIDragService.idl @@ -0,0 +1,152 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsIArray.idl" +#include "nsISupports.idl" +#include "nsIDragSession.idl" +#include "nsIScriptableRegion.idl" +#include "nsIContentPolicyBase.idl" + +interface nsIDOMNode; +interface nsIDOMDragEvent; +interface nsIDOMDataTransfer; +interface nsISelection; + +%{C++ +#include "mozilla/EventForwards.h" + +namespace mozilla { +namespace dom { +class ContentParent; +} // namespace dom +} // namespace mozilla +%} + +[ptr] native ContentParentPtr(mozilla::dom::ContentParent); +native EventMessage(mozilla::EventMessage); + +[scriptable, uuid(ebd6b3a2-af16-43af-a698-3091a087dd62), builtinclass] +interface nsIDragService : nsISupports +{ + const long DRAGDROP_ACTION_NONE = 0; + const long DRAGDROP_ACTION_COPY = 1; + const long DRAGDROP_ACTION_MOVE = 2; + const long DRAGDROP_ACTION_LINK = 4; + const long DRAGDROP_ACTION_UNINITIALIZED = 64; + + /** + * Starts a modal drag session with an array of transaferables. + * + * Note: This method is deprecated for non-native code. + * + * @param aTransferables - an array of transferables to be dragged + * @param aRegion - a region containing rectangles for cursor feedback, + * in window coordinates. + * @param aActionType - specified which of copy/move/link are allowed + * @param aContentPolicyType - the contentPolicyType that will be + * passed to the loadInfo when creating a new channel + * (defaults to TYPE_OTHER) + */ + void invokeDragSession (in nsIDOMNode aDOMNode, + in nsIArray aTransferables, + in nsIScriptableRegion aRegion, + in unsigned long aActionType, + [optional] in nsContentPolicyType aContentPolicyType); + + /** + * Starts a modal drag session using an image. The first four arguments are + * the same as invokeDragSession. + * + * Note: This method is deprecated for non-native code. + * + * A custom image may be specified using the aImage argument. If this is + * supplied, the aImageX and aImageY arguments specify the offset within + * the image where the cursor would be positioned. That is, when the image + * is drawn, it is offset up and left the amount so that the cursor appears + * at that location within the image. + * + * If aImage is null, aImageX and aImageY are not used and the image is instead + * determined from the source node aDOMNode, and the offset calculated so that + * the initial location for the image appears in the same screen position as + * where the element is located. The node must be within a document. + * + * Currently, supported images are all DOM nodes. If this is an HTML <image> or + * <canvas>, the drag image is taken from the image data. If the element is in + * a document, it will be rendered at its displayed size, othewise, it will be + * rendered at its real size. For other types of elements, the element is + * rendered into an offscreen buffer in the same manner as it is currently + * displayed. The document selection is hidden while drawing. + * + * The aDragEvent must be supplied as the current screen coordinates of the + * event are needed to calculate the image location. + */ + void invokeDragSessionWithImage(in nsIDOMNode aDOMNode, + in nsIArray aTransferableArray, + in nsIScriptableRegion aRegion, + in unsigned long aActionType, + in nsIDOMNode aImage, + in long aImageX, + in long aImageY, + in nsIDOMDragEvent aDragEvent, + in nsIDOMDataTransfer aDataTransfer); + + /** + * Start a modal drag session using the selection as the drag image. + * The aDragEvent must be supplied as the current screen coordinates of the + * event are needed to calculate the image location. + * + * Note: This method is deprecated for non-native code. + */ + void invokeDragSessionWithSelection(in nsISelection aSelection, + in nsIArray aTransferableArray, + in unsigned long aActionType, + in nsIDOMDragEvent aDragEvent, + in nsIDOMDataTransfer aDataTransfer); + + /** + * Returns the current Drag Session + */ + nsIDragSession getCurrentSession ( ) ; + + /** + * Tells the Drag Service to start a drag session. This is called when + * an external drag occurs + */ + void startDragSession ( ) ; + + /** + * Tells the Drag Service to end a drag session. This is called when + * an external drag occurs + * + * If aDoneDrag is true, the drag has finished, otherwise the drag has + * just left the window. + */ + void endDragSession ( in boolean aDoneDrag ) ; + + /** + * Fire a drag event at the source of the drag + */ + [noscript] void fireDragEventAtSource(in EventMessage aEventMessage); + + /** + * Increase/decrease dragging suppress level by one. + * If level is greater than one, dragging is disabled. + */ + void suppress(); + void unsuppress(); + + /** + * aX and aY are in LayoutDevice pixels. + */ + [noscript] void dragMoved(in long aX, in long aY); + + [notxpcom, nostdcall] boolean maybeAddChildProcess(in ContentParentPtr aChild); +}; + + +%{ C++ + +%} |