Backout a74bd5095902, Bug 959405 - Please update the Buri Moz-central, 1.3, 1.2 with...
[gecko.git] / layout / forms / nsIComboboxControlFrame.h
bloba55ef351a2562e850587ab79a085bbdb93b79a5b
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"
10 #include "nsFont.h"
12 class nsString;
13 class nsIContent;
14 class nsCSSFrameConstructor;
16 /**
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
23 public:
24 NS_DECL_QUERYFRAME_TARGET(nsIComboboxControlFrame)
26 /**
27 * Indicates whether the list is dropped down
29 virtual bool IsDroppedDown() = 0;
31 /**
32 * Shows or hides the drop down
34 virtual void ShowDropDown(bool aDoDropDown) = 0;
36 /**
37 * Gets the Drop Down List
39 virtual nsIFrame* GetDropDown() = 0;
41 /**
42 * Sets the Drop Down List
44 virtual void SetDropDown(nsIFrame* aDropDownFrame) = 0;
46 /**
47 * Tells the combobox to roll up
49 virtual void RollupFromList() = 0;
51 /**
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;
58 /**
59 * Method for the listbox to set and get the recent index
61 virtual int32_t UpdateRecentIndex(int32_t aIndex) = 0;
63 /**
64 * Notification that the content has been reset
66 virtual void OnContentReset() = 0;
68 /**
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;
87 #endif