widget/nsIDragSession.idl
author Dorel Luca <dluca@mozilla.com>
Mon, 04 Dec 2017 18:01:09 +0200
changeset 394844 58fec9a96e269a57cc6f84bfe3a6dc6800acd955
parent 327273 03fd23542c4fb4503e635f4b185f2795a3c61a97
child 403082 fc5cbc7e0d7ff28ed81f802a4973e2e8634cfe61
permissions -rw-r--r--
Backed out 7 changesets (bug 1377007) for failing build bustage on Linux pgo and faling Cpp's jsapi-tests r=backout on a CLOSED TREE Backed out changeset 9428a4ed7dec (bug 1377007) Backed out changeset 4407b43a8aff (bug 1377007) Backed out changeset 65a37a7f78a5 (bug 1377007) Backed out changeset 276fe6d9b716 (bug 1377007) Backed out changeset 1de46e60ffba (bug 1377007) Backed out changeset 893e303e17ec (bug 1377007) Backed out changeset 081a241e25d4 (bug 1377007)

/* -*- 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 "nsITransferable.idl"


%{ C++
#include "nsSize.h"
%}

native nsSize (nsSize);


interface nsIDOMDocument;
interface nsIDOMNode;
interface nsIDOMDataTransfer;

[scriptable, uuid(25bce737-73f0-43c7-bc20-c71044a73c5a)]
interface nsIDragSession : nsISupports
{
  /**
    * Set the current state of the drag, whether it can be dropped or not.
    * usually the target "frame" sets this so the native system can render the correct feedback
    */
  attribute boolean canDrop;

  /**
   * Indicates if the drop event should be dispatched only to chrome.
   */
  attribute boolean onlyChromeDrop;
  
  /**
    * Sets the action (copy, move, link, et.c) for the current drag 
    */ 
  attribute unsigned long dragAction;
  
  /**
    * Sets the current width and height of the drag target area. 
    * It will contain the current size of the Frame that the drag is currently in
    */  
  [noscript] attribute nsSize targetSize;
 
  /**
    * Get the number of items that were dropped
    */
  readonly attribute unsigned long numDropItems;
  
  /**
    * The document where the drag was started, which will be null if the
    * drag originated outside the application. Useful for determining if a drop
    * originated in the same document.
    */
  readonly attribute nsIDOMDocument sourceDocument;

  /**
    * The dom node that was originally dragged to start the session, which will be null if the
    * drag originated outside the application.
    */
  readonly attribute nsIDOMNode sourceNode;

  /**
   * The data transfer object for the current drag.
   */
  attribute nsIDOMDataTransfer dataTransfer;

  /**
    * Get data from a Drag&Drop. Can be called while the drag is in process
    * or after the drop has completed.  
    *
    * @param  aTransferable the transferable for the data to be put into
    * @param  aItemIndex which of multiple drag items, zero-based
    */
  void getData ( in nsITransferable aTransferable, in unsigned long aItemIndex ) ;

   /**
    * Check to set if any of the native data on the clipboard matches this data flavor
    */
  boolean isDataFlavorSupported ( in string aDataFlavor ) ;

  void userCancelled();

  void dragEventDispatchedToChildProcess();

  // Called when nsIDragSession implementation should update the UI for the
  // drag-and-drop based on the data got from the child process in response to
  // NS_DRAGDROP_OVER sent from parent process to child process.
  void updateDragEffect();

  // Change the drag image, using similar arguments as
  // nsIDragService::InvokeDragSessionWithImage.
  void updateDragImage(in nsIDOMNode aImage, in long aImageX, in long aImageY);
};


%{ C++

%}