aboutsummaryrefslogtreecommitdiff
path: root/src/ClientMenu.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/ClientMenu.hh')
-rw-r--r--src/ClientMenu.hh60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/ClientMenu.hh b/src/ClientMenu.hh
new file mode 100644
index 0000000..b6ea2e5
--- /dev/null
+++ b/src/ClientMenu.hh
@@ -0,0 +1,60 @@
1// ClientMenu.hh
2// Copyright (c) 2007 Fluxbox Team (fluxgen at fluxbox dot org)
3//
4// Permission is hereby granted, free of charge, to any person obtaining a
5// copy of this software and associated documentation files (the "Software"),
6// to deal in the Software without restriction, including without limitation
7// the rights to use, copy, modify, merge, publish, distribute, sublicense,
8// and/or sell copies of the Software, and to permit persons to whom the
9// Software is furnished to do so, subject to the following conditions:
10//
11// The above copyright notice and this permission notice shall be included in
12// all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20// DEALINGS IN THE SOFTWARE.
21
22// $Id$
23
24#ifndef CLIENTMENU_HH
25#define CLIENTMENU_HH
26
27#include <list>
28
29#include "FbMenu.hh"
30
31class BScreen;
32class FluxboxWindow;
33/**
34 * A menu holding a set of client menus.
35 * @see WorkspaceMenu
36 */
37class ClientMenu: public FbMenu {
38public:
39
40 typedef std::list<FluxboxWindow *> Focusables;
41
42 /**
43 * @param screen the screen to show this menu on
44 * @param client a list of clients to show in this menu
45 * @param refresh the refresh subject to listen to
46 */
47 ClientMenu(BScreen &screen,
48 Focusables &clients, FbTk::Subject *refresh);
49
50private:
51 /// refresh the entire menu
52 void refreshMenu();
53 /// called when receiving a subject signal
54 void update(FbTk::Subject *subj);
55
56 Focusables &m_list; ///< clients in the menu
57 FbTk::Subject *m_refresh_sig; ///< signal to listen to
58};
59
60#endif // CLIENTMENU_HH