gecko-dev/dom/base/nsISelectionPrivate.idl
Andrew McCreight 58abe33226 Bug 1216885 - Make nsISelectionPrivate not inherit from nsISelection. r=smaug
nsISelectionPrivate is accessible to script, while nsISelection is
not, so making the former inherit from the latter means script doesn't
have a complete view of the inheritance chain so the XPIDL compiler
produces an error.

It turns out that nothing in script relies on this inheritance, which
makes sense because I'm not sure how it would even work, so just
remove it.

MozReview-Commit-ID: 3Py2T7cprlD

--HG--
extra : rebase_source : 89fac3ad0f7a30c1c71da79d554ebfa153d5fb33
2017-09-11 15:19:22 -07:00

177 lines
7.2 KiB
Plaintext

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 "nsISelection.idl"
interface nsRange;
interface nsIDOMNode;
interface nsISelectionListener;
interface nsIContent;
interface nsINode;
%{C++
class nsIFrame;
struct nsPoint;
struct ScrollAxis;
#include "nsDirection.h"
#include "nsIPresShell.h" // TODO: Remove this include
#include "nsTArrayForwardDeclare.h"
#include "mozilla/EventForwards.h"
%}
[ptr] native nsIFrame(nsIFrame);
[ptr] native RangeArray(nsTArray<nsRange*>);
[ref] native nsPointRef(nsPoint);
native nsDirection(nsDirection);
native ScrollAxis(nsIPresShell::ScrollAxis);
[scriptable, builtinclass, uuid(0c9f4f74-ee7e-4fe9-be6b-0ba856368178)]
interface nsISelectionPrivate : nsISupports
{
const short ENDOFPRECEDINGLINE=0;
const short STARTOFNEXTLINE=1;
attribute boolean interlinePosition;
[noscript] attribute nsIContent ancestorLimiter;
DOMString toStringWithFormat(in string formatType, in unsigned long flags, in int32_t wrapColumn);
void addSelectionListener(in nsISelectionListener newListener);
void removeSelectionListener(in nsISelectionListener listenerToRemove);
/* Table selection stuff
We should probably move this and table-related
items in nsFrameSelection to a
new nsITableSelection interface
*/
const long TABLESELECTION_NONE = 0;
const long TABLESELECTION_CELL = 1;
const long TABLESELECTION_ROW = 2;
const long TABLESELECTION_COLUMN = 3;
const long TABLESELECTION_TABLE = 4;
const long TABLESELECTION_ALLCELLS = 5;
/** Test if supplied range points to a single table element:
* Result is one of above constants. "None" means
* a table element isn't selected.
*/
[noscript] long getTableSelectionType(in nsIDOMRange range);
/* canCacheFrameOffset
* Frame Offset cache can be used just during calling nsEditor::EndPlaceHolderTransaction.
* EndPlaceHolderTransaction will give rise to reflow/refreshing view/scroll, and call times
* of nsTextFrame::GetPointFromOffset whose return value is to be cached.
* see bugs 35296 and 199412
*/
[noscript] attribute boolean canCacheFrameOffset;
/* GetCachedOffsetForFrame
* Returns cached value for nsTextFrame::GetPointFromOffset.
*/
[noscript] void getCachedFrameOffset(in nsIFrame aFrame, in int32_t inOffset, in nsPointRef aPoint);
/**
* Get the direction of the selection.
*/
[noscript, notxpcom] nsDirection getSelectionDirection();
[noscript, notxpcom] void setSelectionDirection(in nsDirection aDirection);
/**
* Returns the type of the selection (see nsISelectionController for
* available constants).
*/
readonly attribute short type;
/**
* Return array of ranges intersecting with the given DOM interval.
*/
void GetRangesForInterval(
in nsIDOMNode beginNode, in int32_t beginOffset,
in nsIDOMNode endNode, in int32_t endOffset,
in boolean allowAdjacent,
out uint32_t resultCount,
[retval, array, size_is(resultCount)] out nsIDOMRange results);
[noscript] void GetRangesForIntervalArray(
in nsINode beginNode, in int32_t beginOffset,
in nsINode endNode, in int32_t endOffset,
in boolean allowAdjacent,
in RangeArray results);
/**
* Scrolls a region of the selection, so that it is visible in
* the scrolled view.
*
* @param aRegion - the region inside the selection to scroll into view
* (see selection region constants defined in
* nsISelectionController).
* @param aIsSynchronous - when true, scrolls the selection into view
* before returning. If false, posts a request which
* is processed at some point after the method returns.
* @param aVPercent - how to align the frame vertically.
* @param aHPercent - how to align the frame horizontally.
*/
void scrollIntoView(in short aRegion, in boolean aIsSynchronous,
in int16_t aVPercent,
in int16_t aHPercent);
/**
* Scrolls a region of the selection, so that it is visible in
* the scrolled view.
*
* @param aRegion - the region inside the selection to scroll into view
* (see selection region constants defined in
* nsISelectionController).
* @param aIsSynchronous - when true, scrolls the selection into view
* before returning. If false, posts a request which
* is processed at some point after the method returns.
* @param aVertical - how to align the frame vertically and when.
* See nsIPresShell.h:ScrollAxis for details.
* @param aHorizontal - how to align the frame horizontally and when.
* See nsIPresShell.h:ScrollAxis for details.
*/
[noscript] void scrollIntoViewInternal(in short aRegion,
in boolean aIsSynchronous,
in ScrollAxis aVertical,
in ScrollAxis aHorizontal);
/**
* Modifies the cursor Bidi level after a change in keyboard direction
* @param langRTL is PR_TRUE if the new language is right-to-left or
* PR_FALSE if the new language is left-to-right.
*/
[noscript] void selectionLanguageChange(in boolean langRTL);
/**
* setColors() sets custom colors for the selection.
* Currently, this is supported only when the selection type is SELECTION_FIND.
* Otherwise, throws an exception.
*
* @param aForegroundColor The foreground color of the selection.
* If this is "currentColor", foreground color
* isn't changed by this selection.
* @param aBackgroundColor The background color of the selection.
* If this is "transparent", background color is
* never painted.
* @param aAltForegroundColor The alternative foreground color of the
* selection.
* If aBackgroundColor doesn't have sufficient
* contrast with its around or foreground color
* if "currentColor" is specified, alternative
* colors are used if it have higher contrast.
* @param aAltBackgroundColor The alternative background color of the
* selection.
*/
void setColors(in DOMString aForegroundColor,
in DOMString aBackgroundColor,
in DOMString aAltForegroundColor,
in DOMString aAltBackgroundColor);
/**
* resetColors() forget the customized colors which were set by setColors().
*/
void resetColors();
};