diff -r 000000000000 -r 6474c204b198 widget/nsIDragService.idl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widget/nsIDragService.idl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,122 @@ +/* -*- 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 "nsISupports.idl" +#include "nsISupportsArray.idl" +#include "nsIDragSession.idl" +#include "nsIScriptableRegion.idl" + + +interface nsIDOMNode; +interface nsIDOMDragEvent; +interface nsIDOMDataTransfer; +interface nsISelection; + +[scriptable, uuid(82B58ADA-F490-4C3D-B737-1057C4F1D052), 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 + * + * @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 + */ + void invokeDragSession ( in nsIDOMNode aDOMNode, in nsISupportsArray aTransferables, + in nsIScriptableRegion aRegion, in unsigned long aActionType ); + + /** + * Starts a modal drag session using an image. The first four arguments are + * the same as invokeDragSession. + * + * 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 or + * , 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 nsISupportsArray 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. + */ + void invokeDragSessionWithSelection(in nsISelection aSelection, + in nsISupportsArray 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 + */ + void fireDragEventAtSource ( in unsigned long aMsg ); + + /** + * Increase/decrease dragging suppress level by one. + * If level is greater than one, dragging is disabled. + */ + void suppress(); + void unsuppress(); + + [noscript] void dragMoved(in long aX, in long aY); +}; + + +%{ C++ + +%}