/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Communicator. * * The Initial Developer of the Original Code is * Netscape Communications. * Portions created by the Initial Developer are Copyright (C) 2002 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Mike Pinkerton * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIDOMEventTarget; interface nsIWebNavigation; interface nsITransferable; interface nsIDragSession; interface nsIDOMEvent; /** * @status UNDER_REVIEW */ /** * Interfaces for overriding the built-in drag and drop * implementation in the content area. Use this to do things * such as prevent a drag from starting, adding or removing * data and flavors, or preventing the drop. */ /** * Overrides operations at the source of a drag. Can prevent * drag from starting and can modify what flavors/data are * presented to the OS. */ [scriptable,uuid(e03e6c5e-0d84-4c0b-8739-e6b8d51922de)] interface nsIOverrideDragSource : nsISupports { /** * Prevents the drag from starting * * @param event DOM event (drag gesture) * * @return TRUE drag can proceed * @return FALSE drag is cancelled, does not go to OS */ boolean allowStart(in nsIDOMEvent event); /** * Alter the flavors or data presented to the OS * * @param trans the transferable holding the list of flavors * and the data for each flavor */ void modify(in nsITransferable trans); }; /** * Overrides operations at the destination of a drag. Can prevent * drag from completing and provide an alternative action than * the built-in behavior for a drop. */ [scriptable,uuid(a0ea9862-e2e6-4fd7-8cab-72afeb53c793)] interface nsIOverrideDropSite : nsISupports { /** * Tells the OS a drop is not allowed on this browser * * @param event DOM event (drag over) * @param session the drag session from which client can get * the flavors present or the actual data * * @return TRUE indicates to OS that if a drop does happen on this * browser, it will be accepted. * @return FALSE indicates to OS drop is not allowed. On win32, this * will change the cursor to "reject". */ boolean allowDrop(in nsIDOMEvent event, in nsIDragSession session); /** * Provide an alternative action to the built-in behavior when * something is dropped on the browser * * @param event DOM event (drag drop) * @param trans the transferable holding the list of flavors * and the data for each flavor * * @return TRUE action was handled, do not perform built-in * behavior * @return FALSE action was not overridden, do built-in behavior */ boolean dropAction(in nsIDOMEvent event, in nsITransferable trans); };