DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (2cd3752963fc)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
/* -*- 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++

%}