gecko-dev/editor/nsIHTMLAbsPosEditor.idl
Masayuki Nakano a2333fc4bb Bug 1060051 - Make editor related interfaces builtin classes if it's possible r=Ehsan,smaug
If we make nsIEditor a builtin class, that means that its instance can be only TextEditor or HTMLEditor.  Then, users of nsIEditor can use concrete classes such as EditorBase, TextEditor or HTMLEditor instead.  Then, the users can reduce unnecessary QI and a lot of virtual calls if we'll create non-virtual methods.

So, let's make editor related interfaces builtin classes.

MozReview-Commit-ID: 93WfsSDuJiJ

--HG--
extra : rebase_source : 39151eb4ffaaf195fec57234ea84c9f4066c58d1
2017-08-04 13:57:56 +09:00

133 lines
4.0 KiB
Plaintext

/* -*- Mode: C++; 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 "domstubs.idl"
[scriptable, builtinclass, uuid(91375f52-20e6-4757-9835-eb04fabe5498)]
interface nsIHTMLAbsPosEditor : nsISupports
{
/**
* true if the selection container is absolutely positioned
*/
readonly attribute boolean selectionContainerAbsolutelyPositioned;
/**
* this contains the absolutely positioned element currently edited
* or null
*/
readonly attribute nsIDOMElement positionedElement;
/**
* true if Absolute Positioning handling is enabled in the editor
*/
attribute boolean absolutePositioningEnabled;
/* Utility methods */
/**
* true if Snap To Grid is enabled in the editor.
*/
attribute boolean snapToGridEnabled;
/**
* sets the grid size in pixels.
* @param aSizeInPixels [IN] the size of the grid in pixels
*/
attribute unsigned long gridSize;
/* Selection-based methods */
/**
* returns the deepest absolutely positioned container of the selection
* if it exists or null.
*/
readonly attribute nsIDOMElement absolutelyPositionedSelectionContainer;
/**
* extracts the selection from the normal flow of the document and
* positions it.
* @param aEnabled [IN] true to absolutely position the selection,
* false to put it back in the normal flow
*/
void absolutePositionSelection(in boolean aEnabled);
/**
* adds aChange to the z-index of the currently positioned element.
* @param aChange [IN] relative change to apply to current z-index
*/
void relativeChangeZIndex(in long aChange);
/* Element-based methods */
/**
* extracts an element from the normal flow of the document and
* positions it, and puts it back in the normal flow.
* @param aElement [IN] the element
* @param aEnabled [IN] true to absolutely position the element,
* false to put it back in the normal flow
*/
void absolutelyPositionElement(in nsIDOMElement aElement,
in boolean aEnabled);
/**
* sets the position of an element; warning it does NOT check if the
* element is already positioned or not and that's on purpose.
* @param aElement [IN] the element
* @param aX [IN] the x position in pixels.
* @param aY [IN] the y position in pixels.
*/
void setElementPosition(in nsIDOMElement aElement, in long aX, in long aY);
/**
* returns the absolute z-index of a positioned element. Never returns 'auto'.
* @return the z-index of the element
* @param aElement [IN] the element.
*/
long getElementZIndex(in nsIDOMElement aElement);
/**
* sets the z-index of an element.
* @param aElement [IN] the element
* @param aZorder [IN] the z-index
*/
void setElementZIndex(in nsIDOMElement aElement, in long aZorder);
/**
* adds aChange to the z-index of an arbitrary element.
* @return the new z-index of the element
* @param aElement [IN] the element
* @param aChange [IN] relative change to apply to current z-index of
* the element
*/
long relativeChangeElementZIndex(in nsIDOMElement aElement, in long aChange);
/* Other */
/**
* shows a grabber attached to an arbitrary element. The grabber is an image
* positioned on the left hand side of the top border of the element. Dragging
* and dropping it allows to change the element's absolute position in the
* document. See chrome://editor/content/images/grabber.gif
* @param aElement [IN] the element
*/
void showGrabberOnElement(in nsIDOMElement aElement);
/**
* hide the grabber if it shown.
*/
void hideGrabber();
/**
* refreshes the grabber if it shown, possibly updating its position or
* even hiding it.
*/
void refreshGrabber();
};