1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include
"nsISupports.idl"
8 interface nsIDOMElement
;
10 interface nsIDOMEvent
;
11 interface nsIDOMClientRect
;
13 [scriptable
, uuid(b1192cac
-467b
-42ca
-88d6
-fcdec5bb4ef7
)]
14 interface nsIPopupBoxObject
: nsISupports
17 * This method is deprecated. Use openPopup or openPopupAtScreen instead.
19 void showPopup
(in nsIDOMElement srcContent
, in nsIDOMElement popupContent
,
20 in long xpos
, in long ypos
,
21 in wstring popupType
, in wstring anchorAlignment
,
22 in wstring popupAlignment
);
25 * Hide the popup if it is open.
30 * Allow the popup to automatically position itself.
32 attribute
boolean autoPosition
;
35 * If keyboard navigation is enabled, the keyboard may be used to navigate
36 * the menuitems on the popup. Enabling keyboard navigation is the default
37 * behaviour and will install capturing key event listeners on the popup
38 * that do not propagate key events to the contents. If you wish to place
39 * elements in a popup which accept key events, such as textboxes, keyboard
40 * navigation should be disabled.
42 * Setting ignorekeys="true" on the popup element also disables keyboard
43 * navigation, and is recommended over calling this method.
45 void enableKeyboardNavigator
(in boolean enableKeyboardNavigator
);
48 * Enable automatic popup dismissal. This only has effect when called
51 void enableRollup
(in boolean enableRollup
);
54 * Control whether the event that caused the popup to be automatically
55 * dismissed ("rolled up") should be consumed, or dispatched as a
56 * normal event. This should be set immediately before calling showPopup()
57 * if non-default behavior is desired.
59 const uint32_t ROLLUP_DEFAULT
= 0; /* widget/platform default */
60 const uint32_t ROLLUP_CONSUME
= 1; /* consume the rollup event */
61 const uint32_t ROLLUP_NO_CONSUME
= 2; /* don't consume the rollup event */
62 void setConsumeRollupEvent
(in uint32_t consume
);
65 * Size the popup to the given dimensions
67 void sizeTo
(in long width
, in long height
);
70 * Move the popup to a point on screen in CSS pixels.
72 void moveTo
(in long left
, in long top
);
75 * Open the popup relative to a specified node at a specific location.
77 * The popup may be either anchored to another node or opened freely.
78 * To anchor a popup to a node, supply an anchor node and set the position
79 * to a string indicating the manner in which the popup should be anchored.
80 * Possible values for position are:
81 * before_start, before_end, after_start, after_end,
82 * start_before, start_after, end_before, end_after,
83 * overlap, after_pointer
85 * The anchor node does not need to be in the same document as the popup.
87 * If the attributesOverride argument is true, the popupanchor, popupalign
88 * and position attributes on the popup node override the position value
89 * argument. If attributesOverride is false, the attributes are only used
90 * if position is empty.
92 * For an anchored popup, the x and y arguments may be used to offset the
93 * popup from its anchored position by some distance, measured in CSS pixels.
94 * x increases to the right and y increases down. Negative values may also
95 * be used to move to the left and upwards respectively.
97 * Unanchored popups may be created by supplying null as the anchor node.
98 * An unanchored popup appears at the position specified by x and y,
99 * relative to the viewport of the document containing the popup node. In
100 * this case, position and attributesOverride are ignored.
102 * @param anchorElement the node to anchor the popup to, may be null
103 * @param position manner is which to anchor the popup to node
104 * @param x horizontal offset
105 * @param y vertical offset
106 * @param isContextMenu true for context menus, false for other popups
107 * @param attributesOverride true if popup node attributes override position
108 * @param triggerEvent the event that triggered this popup (mouse click for example)
110 void openPopup
(in nsIDOMElement anchorElement
,
112 in long x
, in long y
,
113 in boolean isContextMenu
,
114 in boolean attributesOverride
,
115 in nsIDOMEvent triggerEvent
);
118 * Open the popup at a specific screen position specified by x and y. This
119 * position may be adjusted if it would cause the popup to be off of the
120 * screen. The x and y coordinates are measured in CSS pixels, and like all
121 * screen coordinates, are given relative to the top left of the primary
124 * @param isContextMenu true for context menus, false for other popups
125 * @param x horizontal screen position
126 * @param y vertical screen position
127 * @param triggerEvent the event that triggered this popup (mouse click for example)
129 void openPopupAtScreen
(in long x
, in long y
,
130 in boolean isContextMenu
,
131 in nsIDOMEvent triggerEvent
);
134 * Returns the state of the popup:
135 * closed - the popup is closed
136 * open - the popup is open
137 * showing - the popup is in the process of being shown
138 * hiding - the popup is in the process of being hidden
140 readonly attribute AString popupState
;
143 * The node that triggered the popup. If the popup is not open, will return
146 readonly attribute nsIDOMNode triggerNode
;
149 * Retrieve the anchor that was specified to openPopup or for menupopups in a
150 * menu, the parent menu.
152 readonly attribute nsIDOMElement anchorNode
;
155 * Retrieve the screen rectangle of the popup, including the area occupied by
156 * any titlebar or borders present.
158 nsIDOMClientRect getOuterScreenRect
();
161 * Move an open popup to the given anchor position. The arguments have the same
162 * meaning as the corresponding argument to openPopup. This method has no effect
163 * on popups that are not open.
165 void moveToAnchor
(in nsIDOMElement anchorElement
,
167 in long x
, in long y
,
168 in boolean attributesOverride
);
170 /** Returns the alignment position where the popup has appeared relative to its
171 * anchor node or point, accounting for any flipping that occurred.
173 readonly attribute AString alignmentPosition
;
174 readonly attribute
long alignmentOffset
;
181 NS_NewPopupBoxObject
(nsIBoxObject
** aResult
);