aboutsummaryrefslogtreecommitdiff
path: root/src/fluxbox.hh
diff options
context:
space:
mode:
authorakir <akir>2004-10-18 01:26:54 (GMT)
committerakir <akir>2004-10-18 01:26:54 (GMT)
commit496d73d89994d868f5dc45a5ea6cefe40a74f148 (patch)
treef8a9b4102403e4d58082d17d7dbc406ea3360f81 /src/fluxbox.hh
parent2760b03b2e0a7ee93e4ce70daf73faa609076dff (diff)
downloadfluxbox-496d73d89994d868f5dc45a5ea6cefe40a74f148.zip
fluxbox-496d73d89994d868f5dc45a5ea6cefe40a74f148.tar.bz2
rewritten fluxbox-restart code, all destructors are called before the
new program is started. the former method didnt do that.
Diffstat (limited to 'src/fluxbox.hh')
-rw-r--r--src/fluxbox.hh34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/fluxbox.hh b/src/fluxbox.hh
index 0b67b44..021619b 100644
--- a/src/fluxbox.hh
+++ b/src/fluxbox.hh
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: fluxbox.hh,v 1.92 2004/10/10 16:06:24 akir Exp $ 25// $Id: fluxbox.hh,v 1.93 2004/10/18 01:26:54 akir Exp $
26 26
27#ifndef FLUXBOX_HH 27#ifndef FLUXBOX_HH
28#define FLUXBOX_HH 28#define FLUXBOX_HH
@@ -83,7 +83,7 @@ public:
83 Fluxbox(int argc, char **argv, const char * dpy_name= 0, 83 Fluxbox(int argc, char **argv, const char * dpy_name= 0,
84 const char *rcfilename = 0); 84 const char *rcfilename = 0);
85 virtual ~Fluxbox(); 85 virtual ~Fluxbox();
86 86
87 static Fluxbox *instance() { return s_singleton; } 87 static Fluxbox *instance() { return s_singleton; }
88 /// main event loop 88 /// main event loop
89 void eventLoop(); 89 void eventLoop();
@@ -98,7 +98,7 @@ public:
98 WinClient *searchWindow(Window); 98 WinClient *searchWindow(Window);
99 inline WinClient *getFocusedWindow() { return m_focused_window; } 99 inline WinClient *getFocusedWindow() { return m_focused_window; }
100 100
101 101
102 BScreen *searchScreen(Window w); 102 BScreen *searchScreen(Window w);
103 103
104 inline unsigned int getDoubleClickInterval() const { return *m_rc_double_click_interval; } 104 inline unsigned int getDoubleClickInterval() const { return *m_rc_double_click_interval; }
@@ -138,7 +138,7 @@ public:
138 inline int getNum() const { return m_num; } 138 inline int getNum() const { return m_num; }
139 139
140 Layer &operator=(int num) { m_num = num; return *this; } 140 Layer &operator=(int num) { m_num = num; return *this; }
141 141
142 private: 142 private:
143 int m_num; 143 int m_num;
144 }; 144 };
@@ -193,17 +193,20 @@ public:
193 void checkMenu(); 193 void checkMenu();
194 194
195 void hideExtraMenus(BScreen &screen); 195 void hideExtraMenus(BScreen &screen);
196 196
197 /// handle any system signal sent to the application 197 /// handle any system signal sent to the application
198 void handleSignal(int signum); 198 void handleSignal(int signum);
199 void update(FbTk::Subject *changed); 199 void update(FbTk::Subject *changed);
200 200
201 void attachSignals(FluxboxWindow &win); 201 void attachSignals(FluxboxWindow &win);
202 void attachSignals(WinClient &winclient); 202 void attachSignals(WinClient &winclient);
203 203
204 void timed_reconfigure(); 204 void timed_reconfigure();
205 205
206 bool isStartup() const { return m_starting; } 206 bool isStartup() const { return m_starting; }
207 bool isRestarting() const { return m_restarting; }
208
209 const std::string &getRestartArgument() const { return m_restart_argument; }
207 210
208 /// get screen from number 211 /// get screen from number
209 BScreen *findScreen(int num); 212 BScreen *findScreen(int num);
@@ -221,6 +224,7 @@ public:
221 // screen we are watching for modifier changes 224 // screen we are watching for modifier changes
222 BScreen *watchingScreen() { return m_watching_screen; } 225 BScreen *watchingScreen() { return m_watching_screen; }
223 const XEvent &lastEvent() const { return m_last_event; } 226 const XEvent &lastEvent() const { return m_last_event; }
227
224private: 228private:
225 229
226 typedef struct MenuTimestamp { 230 typedef struct MenuTimestamp {
@@ -232,24 +236,24 @@ private:
232 236
233 std::string getRcFilename(); 237 std::string getRcFilename();
234 void load_rc(); 238 void load_rc();
235
236 void reload_rc(); 239 void reload_rc();
240
237 void real_rereadMenu(); 241 void real_rereadMenu();
238 void real_reconfigure(); 242 void real_reconfigure();
239 243
240 void handleEvent(XEvent *xe); 244 void handleEvent(XEvent *xe);
241 245
242 void setupConfigFiles(); 246 void setupConfigFiles();
243 void handleButtonEvent(XButtonEvent &be); 247 void handleButtonEvent(XButtonEvent &be);
244 void handleUnmapNotify(XUnmapEvent &ue); 248 void handleUnmapNotify(XUnmapEvent &ue);
245 void handleClientMessage(XClientMessageEvent &ce); 249 void handleClientMessage(XClientMessageEvent &ce);
246 void handleKeyEvent(XKeyEvent &ke); 250 void handleKeyEvent(XKeyEvent &ke);
247 void setTitlebar(std::vector<Fluxbox::Titlebar>& dir, const char *arg); 251 void setTitlebar(std::vector<Fluxbox::Titlebar>& dir, const char *arg);
248 252
249 std::auto_ptr<FbAtoms> m_fbatoms; 253 std::auto_ptr<FbAtoms> m_fbatoms;
250 254
251 FbTk::ResourceManager m_resourcemanager, &m_screen_rm; 255 FbTk::ResourceManager m_resourcemanager, &m_screen_rm;
252 256
253 //--- Resources 257 //--- Resources
254 258
255 FbTk::Resource<bool> m_rc_tabs, m_rc_ignoreborder; 259 FbTk::Resource<bool> m_rc_tabs, m_rc_ignoreborder;
@@ -258,11 +262,11 @@ private:
258 m_rc_double_click_interval, m_rc_update_delay_time, 262 m_rc_double_click_interval, m_rc_update_delay_time,
259 m_rc_tabs_padding, 263 m_rc_tabs_padding,
260 m_rc_focused_tab_min_width; 264 m_rc_focused_tab_min_width;
261 FbTk::Resource<std::string> m_rc_stylefile, 265 FbTk::Resource<std::string> m_rc_stylefile,
262 m_rc_menufile, m_rc_keyfile, m_rc_slitlistfile, 266 m_rc_menufile, m_rc_keyfile, m_rc_slitlistfile,
263 m_rc_groupfile; 267 m_rc_groupfile;
264 268
265 269
266 FbTk::Resource<TitlebarList> m_rc_titlebar_left, m_rc_titlebar_right; 270 FbTk::Resource<TitlebarList> m_rc_titlebar_left, m_rc_titlebar_right;
267 FbTk::Resource<TabsAttachArea> m_rc_tabs_attach_area; 271 FbTk::Resource<TabsAttachArea> m_rc_tabs_attach_area;
268 FbTk::Resource<unsigned int> m_rc_cache_life, m_rc_cache_max; 272 FbTk::Resource<unsigned int> m_rc_cache_life, m_rc_cache_max;
@@ -277,7 +281,7 @@ private:
277 // The group leader (which may not be mapped, so may not have a WinClient) 281 // The group leader (which may not be mapped, so may not have a WinClient)
278 // will have it's window being the group index 282 // will have it's window being the group index
279 std::multimap<Window, WinClient *> m_group_search; 283 std::multimap<Window, WinClient *> m_group_search;
280 284
281 std::list<MenuTimestamp *> m_menu_timestamps; 285 std::list<MenuTimestamp *> m_menu_timestamps;
282 typedef std::list<BScreen *> ScreenList; 286 typedef std::list<BScreen *> ScreenList;
283 ScreenList m_screen_list; 287 ScreenList m_screen_list;
@@ -297,6 +301,9 @@ private:
297 std::string m_rc_file; ///< resource filename 301 std::string m_rc_file; ///< resource filename
298 char **m_argv; 302 char **m_argv;
299 int m_argc; 303 int m_argc;
304
305 std::string m_restart_argument; ///< what to restart
306
300 XEvent m_last_event; 307 XEvent m_last_event;
301 308
302 FbTk::Timer m_reconfig_timer; ///< when we execute reconfig command we must wait at least to next event round 309 FbTk::Timer m_reconfig_timer; ///< when we execute reconfig command we must wait at least to next event round
@@ -315,6 +322,7 @@ private:
315 Toolbars m_toolbars; 322 Toolbars m_toolbars;
316 323
317 bool m_starting; 324 bool m_starting;
325 bool m_restarting;
318 bool m_shutdown; 326 bool m_shutdown;
319 int m_server_grabs; 327 int m_server_grabs;
320 int m_randr_event_type; ///< the type number of randr event 328 int m_randr_event_type; ///< the type number of randr event