Merge lp:~jamalta/unity/683261-autohide-quicklist into lp:unity

Proposed by Jamal Fanaian
Status: Merged
Merged at revision: 696
Proposed branch: lp:~jamalta/unity/683261-autohide-quicklist
Merge into: lp:unity
Diff against target: 557 lines (+233/-125)
8 files modified
src/Launcher.cpp (+19/-18)
src/Launcher.h (+2/-6)
src/LauncherIcon.cpp (+14/-32)
src/LauncherIcon.h (+0/-3)
src/QuicklistManager.cpp (+109/-0)
src/QuicklistManager.h (+52/-0)
src/QuicklistView.cpp (+34/-66)
src/QuicklistView.h (+3/-0)
To merge this branch: bzr merge lp:~jamalta/unity/683261-autohide-quicklist
Reviewer Review Type Date Requested Status
Jason Smith (community) Approve
Review via email: mp+43288@code.launchpad.net

Description of the change

Created QuicklistManager which is now responsible for handling Hiding and Showing a QuicklistView. Launcher uses QuicklistManager to figure out whether a QuicklistView is currently open before autohiding.

To post a comment you must log in.
Revision history for this message
Jason Smith (jassmith) wrote :

+2

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/Launcher.cpp'
--- src/Launcher.cpp 2010-12-09 13:30:37 +0000
+++ src/Launcher.cpp 2010-12-09 20:57:22 +0000
@@ -35,6 +35,7 @@
35#include "Launcher.h"35#include "Launcher.h"
36#include "LauncherIcon.h"36#include "LauncherIcon.h"
37#include "LauncherModel.h"37#include "LauncherModel.h"
38#include "QuicklistManager.h"
38#include "QuicklistView.h"39#include "QuicklistView.h"
3940
40#define ANIM_DURATION_SHORT 12541#define ANIM_DURATION_SHORT 125
@@ -190,6 +191,9 @@
190 OnMouseMove.connect(sigc::mem_fun(this, &Launcher::RecvMouseMove));191 OnMouseMove.connect(sigc::mem_fun(this, &Launcher::RecvMouseMove));
191 OnMouseWheel.connect(sigc::mem_fun(this, &Launcher::RecvMouseWheel));192 OnMouseWheel.connect(sigc::mem_fun(this, &Launcher::RecvMouseWheel));
192193
194 QuicklistManager::Default ()->quicklist_opened.connect (sigc::mem_fun(this, &Launcher::RecvQuicklistOpened));
195 QuicklistManager::Default ()->quicklist_closed.connect (sigc::mem_fun(this, &Launcher::RecvQuicklistClosed));
196
193 m_ActiveTooltipIcon = NULL;197 m_ActiveTooltipIcon = NULL;
194 m_ActiveMenuIcon = NULL;198 m_ActiveMenuIcon = NULL;
195199
@@ -843,7 +847,7 @@
843void847void
844Launcher::EnsureHiddenState ()848Launcher::EnsureHiddenState ()
845{849{
846 if (!_mouse_inside_trigger && !_mouse_inside_launcher && _window_over_launcher)850 if (!_mouse_inside_trigger && !_mouse_inside_launcher && _window_over_launcher && !QuicklistManager::Default ()->Current())
847 SetHidden (true);851 SetHidden (true);
848 else852 else
849 SetHidden (false);853 SetHidden (false);
@@ -1615,6 +1619,20 @@
1615{1619{
1616}1620}
16171621
1622void Launcher::RecvQuicklistOpened (QuicklistView *quicklist)
1623{
1624 EventLogic ();
1625 EnsureAnimation ();
1626}
1627
1628void Launcher::RecvQuicklistClosed (QuicklistView *quicklist)
1629{
1630 SetupAutohideTimer ();
1631
1632 EventLogic ();
1633 EnsureAnimation ();
1634}
1635
1618void Launcher::EventLogic ()1636void Launcher::EventLogic ()
1619{1637{
1620 if (_launcher_action_state == ACTION_DRAG_LAUNCHER)1638 if (_launcher_action_state == ACTION_DRAG_LAUNCHER)
@@ -1954,20 +1972,3 @@
1954// glEnd();1972// glEnd();
1955}1973}
19561974
1957void Launcher::SetActiveQuicklist (QuicklistView *quicklist)
1958{
1959 // Assert: _active_quicklist should be 0
1960 _active_quicklist = quicklist;
1961}
1962
1963QuicklistView *Launcher::GetActiveQuicklist ()
1964{
1965 return _active_quicklist;
1966}
1967
1968void Launcher::CancelActiveQuicklist (QuicklistView *quicklist)
1969{
1970 if (_active_quicklist == quicklist)
1971 _active_quicklist = 0;
1972}
1973
19741975
=== modified file 'src/Launcher.h'
--- src/Launcher.h 2010-12-07 16:05:52 +0000
+++ src/Launcher.h 2010-12-09 20:57:22 +0000
@@ -73,12 +73,8 @@
73 virtual void RecvMouseMove(int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags);73 virtual void RecvMouseMove(int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags);
74 virtual void RecvMouseWheel(int x, int y, int wheel_delta, unsigned long button_flags, unsigned long key_flags);74 virtual void RecvMouseWheel(int x, int y, int wheel_delta, unsigned long button_flags, unsigned long key_flags);
7575
76 //! Called by LauncherIcon to signal that a Quicklist is becoming active.76 virtual void RecvQuicklistOpened (QuicklistView *quicklist);
77 void SetActiveQuicklist (QuicklistView *quicklist);77 virtual void RecvQuicklistClosed (QuicklistView *quicklist);
78 //! Get the active qicklist
79 QuicklistView *GetActiveQuicklist ();
80 //! Called by LauncherIcon to signal that a Quicklist is becoming unactive.
81 void CancelActiveQuicklist (QuicklistView *quicklist);
8278
83protected:79protected:
84 // Introspectable methods80 // Introspectable methods
8581
=== modified file 'src/LauncherIcon.cpp'
--- src/LauncherIcon.cpp 2010-12-07 23:19:18 +0000
+++ src/LauncherIcon.cpp 2010-12-09 20:57:22 +0000
@@ -31,6 +31,7 @@
31#include "LauncherIcon.h"31#include "LauncherIcon.h"
32#include "Launcher.h"32#include "Launcher.h"
3333
34#include "QuicklistManager.h"
34#include "QuicklistMenuItem.h"35#include "QuicklistMenuItem.h"
35#include "QuicklistMenuItemLabel.h"36#include "QuicklistMenuItemLabel.h"
36#include "QuicklistMenuItemSeparator.h"37#include "QuicklistMenuItemSeparator.h"
@@ -66,9 +67,9 @@
66 _sort_priority = 0;67 _sort_priority = 0;
6768
68 _quicklist = new QuicklistView ();69 _quicklist = new QuicklistView ();
69 _quicklist->sigVisible.connect (sigc::mem_fun (this, &LauncherIcon::RecvShowQuicklist));
70 _quicklist->sigHidden.connect (sigc::mem_fun (this, &LauncherIcon::RecvHideQuicklist));
71 _quicklist_is_initialized = false;70 _quicklist_is_initialized = false;
71
72 QuicklistManager::Default ()->RegisterQuicklist (_quicklist);
72 73
73 // Add to introspection74 // Add to introspection
74 AddChild (_quicklist);75 AddChild (_quicklist);
@@ -292,7 +293,7 @@
292void293void
293LauncherIcon::RecvMouseEnter ()294LauncherIcon::RecvMouseEnter ()
294{295{
295 if (_launcher->GetActiveQuicklist ())296 if (QuicklistManager::Default ()->Current ())
296 {297 {
297 // A quicklist is active298 // A quicklist is active
298 return;299 return;
@@ -318,24 +319,21 @@
318{319{
319 if (button == 3)320 if (button == 3)
320 {321 {
321 if (_launcher->GetActiveQuicklist () == _quicklist)322 if (QuicklistManager::Default ()->Current ())
322 {323 {
323 // this quicklist is already active324 // We probably should let QuicklistManager deal with this case...
324 return;325 QuicklistManager::Default ()->HideQuicklist (QuicklistManager::Default ()->Current());
325 }326
326
327 if (_launcher->GetActiveQuicklist ())
328 {
329 // Hide the active quicklist. This will prevent it from Ungrabing the pointer in 327 // Hide the active quicklist. This will prevent it from Ungrabing the pointer in
330 // QuicklistView::RecvMouseDownOutsideOfQuicklist or void QuicklistView::RecvMouseClick.328 // QuicklistView::RecvMouseDownOutsideOfQuicklist or void QuicklistView::RecvMouseClick.
331 // So the new quicklist that is about to be set as active will keep the grab of the pointer.329 // So the new quicklist that is about to be set as active will keep the grab of the pointer.
332 // Also disable theinput window.330 // Also disable theinput window.
333 _launcher->GetActiveQuicklist ()->EnableInputWindow (false);331 //QuicklistManager::Default ()->Current ()->EnableInputWindow (false);
334 _launcher->GetActiveQuicklist ()->CaptureMouseDownAnyWhereElse (false);332 //QuicklistManager::Default ()->Current ()->CaptureMouseDownAnyWhereElse (false);
335 // This call must be last, because after, _launcher->GetActiveQuicklist () will return Null.333 // This call must be last, because after, _launcher->GetActiveQuicklist () will return Null.
336 // the launcher listen to the sigHidden signal emitted by the BaseWindow when it becomes invisible334 // the launcher listen to the sigHidden signal emitted by the BaseWindow when it becomes invisible
337 // and it set the active window to Null.335 // and it set the active window to Null.
338 _launcher->GetActiveQuicklist ()->ShowWindow (false);336 //QuicklistManager::Default ()->Current ()->ShowWindow (false);
339 }337 }
340 338
341 _tooltip->ShowWindow (false);339 _tooltip->ShowWindow (false);
@@ -378,14 +376,8 @@
378 376
379 int tip_x = _launcher->GetBaseWidth () + 1; //icon_x + icon_w;377 int tip_x = _launcher->GetBaseWidth () + 1; //icon_x + icon_w;
380 int tip_y = _center.y;378 int tip_y = _center.y;
381 _quicklist->ShowQuicklistWithTipAt (tip_x, tip_y);379 QuicklistManager::Default ()->ShowQuicklist (_quicklist, tip_x, tip_y);
382
383 _quicklist->EnableInputWindow (true, 1);
384 _quicklist->GrabPointer ();
385
386 nux::GetWindowCompositor ().SetAlwaysOnFrontWindow (_quicklist);380 nux::GetWindowCompositor ().SetAlwaysOnFrontWindow (_quicklist);
387
388 _quicklist->NeedRedraw ();
389 }381 }
390}382}
391383
@@ -398,16 +390,6 @@
398 }390 }
399}391}
400392
401void LauncherIcon::RecvShowQuicklist (nux::BaseWindow *quicklist)
402{
403 _launcher->SetActiveQuicklist (_quicklist);
404}
405
406void LauncherIcon::RecvHideQuicklist (nux::BaseWindow *quicklist)
407{
408 _launcher->CancelActiveQuicklist (_quicklist);
409}
410
411void LauncherIcon::HideTooltip ()393void LauncherIcon::HideTooltip ()
412{394{
413 _tooltip->ShowWindow (false);395 _tooltip->ShowWindow (false);
@@ -437,7 +419,7 @@
437 int tip_y = _center.y;419 int tip_y = _center.y;
438 420
439 if (_quicklist->IsVisible ())421 if (_quicklist->IsVisible ())
440 _quicklist->ShowQuicklistWithTipAt (tip_x, tip_y);422 QuicklistManager::Default ()->ShowQuicklist (_quicklist, tip_x, tip_y);
441 else if (_tooltip->IsVisible ())423 else if (_tooltip->IsVisible ())
442 _tooltip->ShowTooltipWithTipAt (tip_x, tip_y);424 _tooltip->ShowTooltipWithTipAt (tip_x, tip_y);
443 425
444426
=== modified file 'src/LauncherIcon.h'
--- src/LauncherIcon.h 2010-12-07 23:19:18 +0000
+++ src/LauncherIcon.h 2010-12-09 20:57:22 +0000
@@ -80,9 +80,6 @@
80 void RecvMouseDown (int button);80 void RecvMouseDown (int button);
81 void RecvMouseUp (int button);81 void RecvMouseUp (int button);
82 82
83 void RecvShowQuicklist (nux::BaseWindow *quicklist);
84 void RecvHideQuicklist (nux::BaseWindow *quicklist);
85
86 void HideTooltip ();83 void HideTooltip ();
87 84
88 void SetCenter (nux::Point3 center);85 void SetCenter (nux::Point3 center);
8986
=== added file 'src/QuicklistManager.cpp'
--- src/QuicklistManager.cpp 1970-01-01 00:00:00 +0000
+++ src/QuicklistManager.cpp 2010-12-09 20:57:22 +0000
@@ -0,0 +1,109 @@
1/*
2 * Copyright (C) 2010 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Jamal Fanaian <j@jamalfanaian.com>
17 */
18
19#include "Nux/Nux.h"
20#include "Nux/BaseWindow.h"
21#include "Nux/VLayout.h"
22#include "Nux/WindowCompositor.h"
23#include "QuicklistView.h"
24#include "QuicklistManager.h"
25
26QuicklistManager * QuicklistManager::_default = 0;
27
28/* static */
29QuicklistManager *QuicklistManager::Default ()
30{
31 if (!_default)
32 _default = new QuicklistManager ();
33 return _default;
34}
35
36QuicklistManager::QuicklistManager ()
37{
38 _current_quicklist = 0;
39}
40
41QuicklistManager::~QuicklistManager ()
42{
43}
44
45QuicklistView *QuicklistManager::Current ()
46{
47 return _current_quicklist;
48}
49
50void QuicklistManager::RegisterQuicklist (QuicklistView *quicklist)
51{
52 std::list<QuicklistView*>::iterator it;
53
54 if (std::find (_quicklist_list.begin(), _quicklist_list.end(), quicklist) != _quicklist_list.end()) {
55 // quicklist has already been registered
56 g_warning ("Attempted to register a quicklist that was previously registered");
57 return;
58 }
59
60 _quicklist_list.push_back (quicklist);
61
62 quicklist->sigVisible.connect (sigc::mem_fun (this, &QuicklistManager::RecvShowQuicklist));
63 quicklist->sigHidden.connect (sigc::mem_fun (this, &QuicklistManager::RecvHideQuicklist));
64}
65
66void QuicklistManager::ShowQuicklist (QuicklistView *quicklist, int tip_x,
67 int tip_y, bool hide_existing_if_open)
68{
69 if (_current_quicklist == quicklist)
70 {
71 // this quicklist is already active
72 // do we want to still redraw in case the position has changed?
73 return;
74 }
75
76 if (hide_existing_if_open && _current_quicklist)
77 {
78 HideQuicklist (_current_quicklist);
79 }
80
81 quicklist->ShowQuicklistWithTipAt (tip_x, tip_y);
82}
83
84void QuicklistManager::HideQuicklist (QuicklistView *quicklist)
85{
86 quicklist->Hide();
87}
88
89void QuicklistManager::RecvShowQuicklist (nux::BaseWindow *window)
90{
91 QuicklistView *quicklist = (QuicklistView*) window;
92
93 _current_quicklist = quicklist;
94
95 quicklist_opened.emit (quicklist);
96}
97
98void QuicklistManager::RecvHideQuicklist (nux::BaseWindow *window)
99{
100 QuicklistView *quicklist = (QuicklistView*) window;
101
102 if (_current_quicklist == quicklist)
103 {
104 _current_quicklist = 0;
105 }
106
107 quicklist_closed.emit (quicklist);
108}
109
0110
=== added file 'src/QuicklistManager.h'
--- src/QuicklistManager.h 1970-01-01 00:00:00 +0000
+++ src/QuicklistManager.h 2010-12-09 20:57:22 +0000
@@ -0,0 +1,52 @@
1/*
2 * Copyright (C) 2010 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Jamal Fanaian <j@jamalfanaian.com>
17 */
18
19#ifndef QUICKLISTMANAGER_H
20#define QUICKLISTMANAGER_H
21
22class QuicklistManager : public sigc::trackable
23{
24public:
25 static QuicklistManager *Default ();
26
27 QuicklistManager ();
28
29 ~QuicklistManager ();
30
31 QuicklistView *Current ();
32
33 void RegisterQuicklist (QuicklistView *quicklist);
34 void ShowQuicklist (QuicklistView *quicklist, int tip_x, int tip_y, bool hide_existing_if_open = true);
35 void HideQuicklist (QuicklistView *quicklist);
36
37 void RecvShowQuicklist (nux::BaseWindow *window);
38 void RecvHideQuicklist (nux::BaseWindow *window);
39
40 sigc::signal<void, QuicklistView*> quicklist_opened;
41 sigc::signal<void, QuicklistView*> quicklist_closed;
42
43private:
44 static QuicklistManager *_default;
45
46 std::list<QuicklistView*> _quicklist_list;
47 QuicklistView *_current_quicklist;
48
49};
50
51#endif
52
053
=== modified file 'src/QuicklistView.cpp'
--- src/QuicklistView.cpp 2010-12-09 10:55:58 +0000
+++ src/QuicklistView.cpp 2010-12-09 20:57:22 +0000
@@ -151,7 +151,7 @@
151 SetBaseX (x);151 SetBaseX (x);
152 SetBaseY (y);152 SetBaseY (y);
153 153
154 ShowWindow (true);154 Show ();
155}155}
156156
157void QuicklistView::ShowWindow (bool b, bool start_modal)157void QuicklistView::ShowWindow (bool b, bool start_modal)
@@ -159,6 +159,31 @@
159 BaseWindow::ShowWindow (b, start_modal);159 BaseWindow::ShowWindow (b, start_modal);
160}160}
161161
162void QuicklistView::Show ()
163{
164 if (!IsVisible())
165 {
166 // FIXME: ShowWindow shouldn't need to be called first
167 ShowWindow (true);
168 EnableInputWindow (true, 1);
169 GrabPointer ();
170 NeedRedraw ();
171 }
172}
173
174void QuicklistView::Hide ()
175{
176 if (IsVisible() && !_enable_quicklist_for_testing)
177 {
178 CancelItemsPrelightStatus ();
179 CaptureMouseDownAnyWhereElse (false);
180 ForceStopFocus (1, 1);
181 UnGrabPointer ();
182 EnableInputWindow (false);
183 ShowWindow (false);
184 }
185}
186
162long QuicklistView::ProcessEvent (nux::IEvent& ievent, long TraverseInfo, long ProcessEventInfo)187long QuicklistView::ProcessEvent (nux::IEvent& ievent, long TraverseInfo, long ProcessEventInfo)
163{188{
164 long ret = TraverseInfo;189 long ret = TraverseInfo;
@@ -198,36 +223,14 @@
198 else223 else
199 {224 {
200 _mouse_down = false;225 _mouse_down = false;
201 if (IsVisible ())226 Hide ();
202 {
203 if (!_enable_quicklist_for_testing)
204 {
205 CancelItemsPrelightStatus ();
206 CaptureMouseDownAnyWhereElse (false);
207 ForceStopFocus (1, 1);
208 UnGrabPointer ();
209 EnableInputWindow (false);
210 ShowWindow (false);
211 }
212 }
213 return nux::eMouseEventSolved;227 return nux::eMouseEventSolved;
214 }228 }
215 }229 }
216 else if ((ievent.e_event == nux::NUX_MOUSE_RELEASED) && _mouse_down)230 else if ((ievent.e_event == nux::NUX_MOUSE_RELEASED) && _mouse_down)
217 {231 {
218 _mouse_down = false;232 _mouse_down = false;
219 if (IsVisible ())233 Hide ();
220 {
221 if (!_enable_quicklist_for_testing)
222 {
223 CancelItemsPrelightStatus ();
224 CaptureMouseDownAnyWhereElse (false);
225 ForceStopFocus (1, 1);
226 UnGrabPointer ();
227 EnableInputWindow (false);
228 ShowWindow (false);
229 }
230 }
231 return nux::eMouseEventSolved;234 return nux::eMouseEventSolved;
232 }235 }
233236
@@ -418,15 +421,7 @@
418 // Check if the mouse was released over an item and emit the signal421 // Check if the mouse was released over an item and emit the signal
419 CheckAndEmitItemSignal (x + item->GetBaseX (), y + item->GetBaseY ());422 CheckAndEmitItemSignal (x + item->GetBaseX (), y + item->GetBaseY ());
420423
421 if (!_enable_quicklist_for_testing)424 Hide ();
422 {
423 CancelItemsPrelightStatus ();
424 CaptureMouseDownAnyWhereElse (false);
425 ForceStopFocus (1, 1);
426 UnGrabPointer ();
427 EnableInputWindow (false);
428 ShowWindow (false);
429 }
430 }425 }
431}426}
432427
@@ -474,17 +469,9 @@
474 {469 {
475 // Check if the mouse was released over an item and emit the signal470 // Check if the mouse was released over an item and emit the signal
476 CheckAndEmitItemSignal (x + item->GetBaseX (), y + item->GetBaseY ());471 CheckAndEmitItemSignal (x + item->GetBaseX (), y + item->GetBaseY ());
477472
478 if (!_enable_quicklist_for_testing)473 Hide ();
479 {474 }
480 CancelItemsPrelightStatus ();
481 CaptureMouseDownAnyWhereElse (false);
482 ForceStopFocus (1, 1);
483 UnGrabPointer ();
484 EnableInputWindow (false);
485 ShowWindow (false);
486 }
487 }
488}475}
489476
490void QuicklistView::CancelItemsPrelightStatus ()477void QuicklistView::CancelItemsPrelightStatus ()
@@ -570,15 +557,7 @@
570{557{
571 if (IsVisible ())558 if (IsVisible ())
572 {559 {
573 if (!_enable_quicklist_for_testing)560 Hide ();
574 {
575 CancelItemsPrelightStatus ();
576 CaptureMouseDownAnyWhereElse (false);
577 ForceStopFocus (1, 1);
578 UnGrabPointer ();
579 EnableInputWindow (false);
580 ShowWindow (false);
581 }
582 }561 }
583}562}
584563
@@ -594,18 +573,7 @@
594 573
595void QuicklistView::RecvMouseDownOutsideOfQuicklist (int x, int y, unsigned long button_flags, unsigned long key_flags)574void QuicklistView::RecvMouseDownOutsideOfQuicklist (int x, int y, unsigned long button_flags, unsigned long key_flags)
596{575{
597 if (IsVisible ())576 Hide ();
598 {
599 if (!_enable_quicklist_for_testing)
600 {
601 CancelItemsPrelightStatus ();
602 CaptureMouseDownAnyWhereElse (false);
603 ForceStopFocus (1, 1);
604 UnGrabPointer ();
605 EnableInputWindow (false);
606 ShowWindow (false);
607 }
608 }
609}577}
610578
611void QuicklistView::RemoveAllMenuItem ()579void QuicklistView::RemoveAllMenuItem ()
612580
=== modified file 'src/QuicklistView.h'
--- src/QuicklistView.h 2010-12-09 10:55:58 +0000
+++ src/QuicklistView.h 2010-12-09 20:57:22 +0000
@@ -80,6 +80,9 @@
8080
81 void ShowQuicklistWithTipAt (int anchor_tip_x, int anchor_tip_y);81 void ShowQuicklistWithTipAt (int anchor_tip_x, int anchor_tip_y);
82 virtual void ShowWindow (bool b, bool StartModal = false);82 virtual void ShowWindow (bool b, bool StartModal = false);
83
84 void Show ();
85 void Hide ();
83 86
84 int GetNumItems ();87 int GetNumItems ();
85 QuicklistMenuItem* GetNthItems (int index);88 QuicklistMenuItem* GetNthItems (int index);