diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Slit.hh | 87 |
1 files changed, 38 insertions, 49 deletions
diff --git a/src/Slit.hh b/src/Slit.hh index b5135d8..154d345 100644 --- a/src/Slit.hh +++ b/src/Slit.hh | |||
@@ -25,85 +25,81 @@ | |||
25 | #ifndef SLIT_HH | 25 | #ifndef SLIT_HH |
26 | #define SLIT_HH | 26 | #define SLIT_HH |
27 | 27 | ||
28 | #include "Basemenu.hh" | ||
29 | |||
28 | #include <X11/Xlib.h> | 30 | #include <X11/Xlib.h> |
29 | #include <X11/Xutil.h> | 31 | #include <X11/Xutil.h> |
30 | 32 | ||
31 | // forward declaration | ||
32 | class Slit; | ||
33 | class Slitmenu; | ||
34 | |||
35 | #include "Basemenu.hh" | ||
36 | |||
37 | #include <list> | 33 | #include <list> |
38 | #include <string> | 34 | #include <string> |
35 | #include <memory> | ||
36 | |||
37 | // forward declaration | ||
38 | class Slit; | ||
39 | 39 | ||
40 | class Slitmenu : public Basemenu { | 40 | class Slitmenu : public Basemenu { |
41 | public: | 41 | public: |
42 | explicit Slitmenu(Slit &theslist); | 42 | explicit Slitmenu(Slit &theslist); |
43 | virtual ~Slitmenu(); | 43 | virtual ~Slitmenu(); |
44 | 44 | ||
45 | inline Basemenu *getDirectionmenu() { return directionmenu; } | 45 | const Basemenu &getDirectionmenu() const { return m_directionmenu; } |
46 | inline Basemenu *getPlacementmenu() { return placementmenu; } | 46 | const Basemenu &getPlacementmenu() const { return m_placementmenu; } |
47 | |||
47 | #ifdef XINERAMA | 48 | #ifdef XINERAMA |
48 | inline Basemenu *getHeadmenu() { return headmenu; } | 49 | const Basemenu *getHeadmenu() const { return m_headmenu.get(); } |
49 | #endif // XINERAMA | 50 | #endif // XINERAMA |
50 | 51 | ||
51 | void reconfigure(); | 52 | void reconfigure(); |
52 | 53 | ||
54 | protected: | ||
55 | virtual void itemSelected(int button, unsigned int index); | ||
56 | virtual void internal_hide(); | ||
57 | |||
53 | private: | 58 | private: |
54 | class Directionmenu : public Basemenu { | 59 | class Directionmenu : public Basemenu { |
55 | private: | 60 | public: |
56 | Slitmenu *slitmenu; | 61 | Directionmenu(Slitmenu &sm); |
57 | 62 | ||
58 | protected: | 63 | protected: |
59 | virtual void itemSelected(int button, unsigned int index); | 64 | virtual void itemSelected(int button, unsigned int index); |
60 | 65 | ||
61 | public: | 66 | private: |
62 | Directionmenu(Slitmenu *); | 67 | Slitmenu &slitmenu; |
63 | }; | 68 | }; |
64 | 69 | ||
65 | class Placementmenu : public Basemenu { | 70 | class Placementmenu : public Basemenu { |
66 | private: | 71 | public: |
67 | Slitmenu *slitmenu; | 72 | Placementmenu(Slitmenu &sm); |
68 | 73 | ||
69 | protected: | 74 | protected: |
70 | virtual void itemSelected(int button, unsigned int index); | 75 | virtual void itemSelected(int button, unsigned int index); |
71 | 76 | ||
72 | public: | 77 | private: |
73 | Placementmenu(Slitmenu *); | 78 | Slitmenu &slitmenu; |
74 | }; | 79 | }; |
75 | 80 | ||
81 | Slit &slit; | ||
82 | |||
76 | #ifdef XINERAMA | 83 | #ifdef XINERAMA |
77 | class Headmenu : public Basemenu { | 84 | class Headmenu : public Basemenu { |
78 | public: | 85 | public: |
79 | Headmenu(Slitmenu *); | 86 | Headmenu(Slitmenu &sm); |
80 | private: | ||
81 | Slitmenu *slitmenu; | ||
82 | |||
83 | protected: | 87 | protected: |
84 | virtual void itemSelected(int button, unsigned int index); | 88 | virtual void itemSelected(int button, unsigned int index); |
85 | 89 | private: | |
90 | Slitmenu &slitmenu; | ||
86 | }; | 91 | }; |
92 | friend class Headmenu; | ||
93 | std::auto_ptr<Headmenu> m_headmenu; | ||
87 | #endif // XINERAMA | 94 | #endif // XINERAMA |
88 | 95 | ||
89 | Directionmenu *directionmenu; | 96 | Placementmenu m_placementmenu; |
90 | Placementmenu *placementmenu; | 97 | Directionmenu m_directionmenu; |
91 | #ifdef XINERAMA | ||
92 | Headmenu *headmenu; | ||
93 | #endif // XINERAMA | ||
94 | Slit &slit; | ||
95 | 98 | ||
96 | friend class Directionmenu; | ||
97 | friend class Placementmenu; | ||
98 | #ifdef XINERAMA | ||
99 | friend class Headmenu; | ||
100 | #endif // XINERAMA | ||
101 | friend class Slit; | ||
102 | 99 | ||
103 | 100 | ||
104 | protected: | 101 | friend class Directionmenu; |
105 | virtual void itemSelected(int button, unsigned int index); | 102 | friend class Placementmenu; |
106 | virtual void internal_hide(); | ||
107 | }; | 103 | }; |
108 | 104 | ||
109 | 105 | ||
@@ -125,14 +121,16 @@ public: | |||
125 | 121 | ||
126 | inline unsigned int width() const { return frame.width; } | 122 | inline unsigned int width() const { return frame.width; } |
127 | inline unsigned int height() const { return frame.height; } | 123 | inline unsigned int height() const { return frame.height; } |
128 | 124 | void setOnTop(bool val); | |
125 | void setAutoHide(bool val); | ||
129 | void addClient(Window clientwin); | 126 | void addClient(Window clientwin); |
130 | void removeClient(Window clientwin, bool = true); | 127 | void removeClient(Window clientwin, bool = true); |
131 | void reconfigure(); | 128 | void reconfigure(); |
132 | void reposition(); | 129 | void reposition(); |
133 | void shutdown(); | 130 | void shutdown(); |
134 | void saveClientList(); | 131 | void saveClientList(); |
135 | 132 | BScreen *screen() { return m_screen; } | |
133 | const BScreen *screen() const { return m_screen; } | ||
136 | /** | 134 | /** |
137 | @name eventhandlers | 135 | @name eventhandlers |
138 | */ | 136 | */ |
@@ -182,10 +180,7 @@ private: | |||
182 | 180 | ||
183 | bool on_top, hidden, do_auto_hide; | 181 | bool on_top, hidden, do_auto_hide; |
184 | 182 | ||
185 | Display *display; ///< display connection | 183 | BScreen *m_screen; |
186 | |||
187 | Fluxbox *fluxbox; ///< obsolete | ||
188 | BScreen *screen; | ||
189 | BTimer timer; | 184 | BTimer timer; |
190 | 185 | ||
191 | typedef std::list<SlitClient *> SlitClients; | 186 | typedef std::list<SlitClient *> SlitClients; |
@@ -202,12 +197,6 @@ private: | |||
202 | unsigned int width, height; | 197 | unsigned int width, height; |
203 | } frame; | 198 | } frame; |
204 | 199 | ||
205 | friend class Slitmenu; | ||
206 | friend class Slitmenu::Directionmenu; | ||
207 | friend class Slitmenu::Placementmenu; | ||
208 | #ifdef XINERAMA | ||
209 | friend class Slitmenu::Headmenu; | ||
210 | #endif // XINERAMA | ||
211 | }; | 200 | }; |
212 | 201 | ||
213 | 202 | ||