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 #ifndef nsIComboboxControlFrame_h___
7 #define nsIComboboxControlFrame_h___
9 #include "nsQueryFrame.h"
14 class nsCSSFrameConstructor
;
17 * nsIComboboxControlFrame is the common interface for frames of form controls. It
18 * provides a uniform way of creating widgets, resizing, and painting.
19 * @see nsLeafFrame and its base classes for more info
21 class nsIComboboxControlFrame
: public nsQueryFrame
24 NS_DECL_QUERYFRAME_TARGET(nsIComboboxControlFrame
)
27 * Indicates whether the list is dropped down
29 virtual bool IsDroppedDown() = 0;
32 * Shows or hides the drop down
34 virtual void ShowDropDown(bool aDoDropDown
) = 0;
37 * Gets the Drop Down List
39 virtual nsIFrame
* GetDropDown() = 0;
42 * Sets the Drop Down List
44 virtual void SetDropDown(nsIFrame
* aDropDownFrame
) = 0;
47 * Tells the combobox to roll up
49 virtual void RollupFromList() = 0;
52 * Redisplay the selected text (will do nothing if text has not changed).
53 * This method might destroy this frame or any others that happen to be
54 * around. It might even run script.
56 NS_IMETHOD
RedisplaySelectedText() = 0;
59 * Method for the listbox to set and get the recent index
61 virtual int32_t UpdateRecentIndex(int32_t aIndex
) = 0;
64 * Notification that the content has been reset
66 virtual void OnContentReset() = 0;
69 * This returns the index of the item that is currently being displayed
70 * in the display area. It may differ from what the currently Selected index
71 * is in in the dropdown.
73 * Detailed explanation:
74 * When the dropdown is dropped down via a mouse click and the user moves the mouse
75 * up and down without clicking, the currently selected item is being tracking inside
76 * the dropdown, but the combobox is not being updated. When the user selects items
77 * with the arrow keys, the combobox is being updated. So when the user clicks outside
78 * the dropdown and it needs to roll up it has to decide whether to keep the current
79 * selection or not. This method is used to get the current index in the combobox to
80 * compare it to the current index in the dropdown to see if the combox has been updated
81 * and that way it knows whether to "cancel" the current selection residing in the
82 * dropdown. Or whether to leave the selection alone.
84 virtual int32_t GetIndexOfDisplayArea() = 0;