aboutsummaryrefslogtreecommitdiff
path: root/src/fluxbox.hh
diff options
context:
space:
mode:
authorfluxgen <fluxgen>2003-12-30 20:56:41 (GMT)
committerfluxgen <fluxgen>2003-12-30 20:56:41 (GMT)
commit3490c73f570cb43fcdea5c2f8770a379d721a73d (patch)
treec90fdca53a52d99bd5ef5f02356ab13f33eea639 /src/fluxbox.hh
parent4a8a7a32d4e3df3ffa7dc68482ff8f1053d257eb (diff)
downloadfluxbox_pavel-3490c73f570cb43fcdea5c2f8770a379d721a73d.zip
fluxbox_pavel-3490c73f570cb43fcdea5c2f8770a379d721a73d.tar.bz2
fixed focus issue
Diffstat (limited to 'src/fluxbox.hh')
-rw-r--r--src/fluxbox.hh41
1 files changed, 7 insertions, 34 deletions
diff --git a/src/fluxbox.hh b/src/fluxbox.hh
index 3056f4c..a02ece0 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.79 2003/12/21 23:24:25 fluxgen Exp $ 25// $Id: fluxbox.hh,v 1.80 2003/12/30 20:56:40 fluxgen Exp $
26 26
27#ifndef FLUXBOX_HH 27#ifndef FLUXBOX_HH
28#define FLUXBOX_HH 28#define FLUXBOX_HH
@@ -149,11 +149,13 @@ public:
149 inline unsigned int getCacheLife() const { return *m_rc_cache_life * 60000; } 149 inline unsigned int getCacheLife() const { return *m_rc_cache_life * 60000; }
150 inline unsigned int getCacheMax() const { return *m_rc_cache_max; } 150 inline unsigned int getCacheMax() const { return *m_rc_cache_max; }
151 151
152 inline void maskWindowEvents(Window w, FluxboxWindow *bw)
153 { m_masked = w; m_masked_window = bw; }
154
152 void watchKeyRelease(BScreen &screen, unsigned int mods); 155 void watchKeyRelease(BScreen &screen, unsigned int mods);
153 156
154 void setFocusedWindow(WinClient *w); 157 void setFocusedWindow(WinClient *w);
155 // focus revert gets delayed until the end of the event handle 158 void revertFocus(BScreen &screen);
156 void revertFocus(BScreen &screen, bool wait_for_end = true);
157 void shutdown(); 159 void shutdown();
158 void load_rc(BScreen &scr); 160 void load_rc(BScreen &scr);
159 void loadRootCommand(BScreen &scr); 161 void loadRootCommand(BScreen &scr);
@@ -202,21 +204,6 @@ public:
202 // screen we are watching for modifier changes 204 // screen we are watching for modifier changes
203 BScreen *watchingScreen() { return m_watching_screen; } 205 BScreen *watchingScreen() { return m_watching_screen; }
204 const XEvent &lastEvent() const { return m_last_event; } 206 const XEvent &lastEvent() const { return m_last_event; }
205
206 /**
207 * Allows people to create special event exclusions/redirects
208 * useful for getting around X followup events, or for
209 * effectively grabbing things
210 * The ignore is automatically removed when it finds the stop_win
211 * with an event matching the stop_type
212 * ignore None means all windows
213 */
214 void addRedirectEvent(BScreen *screen, long catch_type, Window catch_win,
215 long stop_type, Window stop_win, Window redirect_win);
216
217 // So that an object may remove the ignore on its own
218 void removeRedirectEvent(long stop_type, Window stop_win);
219
220private: 207private:
221 208
222 typedef struct MenuTimestamp { 209 typedef struct MenuTimestamp {
@@ -259,7 +246,6 @@ private:
259 FbTk::Resource<TitlebarList> m_rc_titlebar_left, m_rc_titlebar_right; 246 FbTk::Resource<TitlebarList> m_rc_titlebar_left, m_rc_titlebar_right;
260 FbTk::Resource<unsigned int> m_rc_cache_life, m_rc_cache_max; 247 FbTk::Resource<unsigned int> m_rc_cache_life, m_rc_cache_max;
261 FbTk::Resource<time_t> m_rc_auto_raise_delay; 248 FbTk::Resource<time_t> m_rc_auto_raise_delay;
262
263 249
264 std::map<Window, WinClient *> m_window_search; 250 std::map<Window, WinClient *> m_window_search;
265 std::map<Window, FluxboxWindow *> m_window_search_group; 251 std::map<Window, FluxboxWindow *> m_window_search_group;
@@ -275,19 +261,8 @@ private:
275 ScreenList m_screen_list; 261 ScreenList m_screen_list;
276 262
277 WinClient *m_focused_window; 263 WinClient *m_focused_window;
264 FluxboxWindow *m_masked_window;
278 265
279 typedef struct RedirectEvent {
280 BScreen *screen;
281 long catch_type;
282 Window catch_win;
283 long stop_type;
284 Window stop_win;
285 Window redirect_win;
286 } RedirectEvent;
287
288 typedef std::list<RedirectEvent *> RedirectEvents;
289
290 RedirectEvents m_redirect_events;
291 BScreen *m_mousescreen, *m_keyscreen; 266 BScreen *m_mousescreen, *m_keyscreen;
292 BScreen *m_watching_screen; 267 BScreen *m_watching_screen;
293 unsigned int m_watch_keyrelease; 268 unsigned int m_watch_keyrelease;
@@ -296,6 +271,7 @@ private:
296 271
297 bool m_reconfigure_wait, m_reread_menu_wait; 272 bool m_reconfigure_wait, m_reread_menu_wait;
298 Time m_last_time; 273 Time m_last_time;
274 Window m_masked;
299 std::string m_rc_file; ///< resource filename 275 std::string m_rc_file; ///< resource filename
300 char **m_argv; 276 char **m_argv;
301 int m_argc; 277 int m_argc;
@@ -320,9 +296,6 @@ private:
320 const char *m_RC_PATH; 296 const char *m_RC_PATH;
321 const char *m_RC_INIT_FILE; 297 const char *m_RC_INIT_FILE;
322 Atom m_kwm1_dockwindow, m_kwm2_dockwindow; 298 Atom m_kwm1_dockwindow, m_kwm2_dockwindow;
323
324 // each event can only affect one screen (right?)
325 BScreen *m_focus_revert_screen;
326}; 299};
327 300
328 301