diff options
author | fluxgen <fluxgen> | 2005-04-29 02:52:36 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2005-04-29 02:52:36 (GMT) |
commit | c7eb5b03323d3b1d4df30977ed69e59aad0a3392 (patch) | |
tree | ea91bb7b6fa787cc1d8c0a88c6ee4c5dfdc5d76d /src/WinClient.hh | |
parent | 40d026ff99bab25b7aa52e8e6c413277eb27006b (diff) | |
download | fluxbox-c7eb5b03323d3b1d4df30977ed69e59aad0a3392.zip fluxbox-c7eb5b03323d3b1d4df30977ed69e59aad0a3392.tar.bz2 |
transient window fix
Diffstat (limited to 'src/WinClient.hh')
-rw-r--r-- | src/WinClient.hh | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/WinClient.hh b/src/WinClient.hh index 49e1931..deeffd5 100644 --- a/src/WinClient.hh +++ b/src/WinClient.hh | |||
@@ -94,6 +94,7 @@ public: | |||
94 | void setGroupLeftWindow(Window win); | 94 | void setGroupLeftWindow(Window win); |
95 | 95 | ||
96 | void saveBlackboxAttribs(FluxboxWindow::BlackboxAttributes &blackbox_attribs); | 96 | void saveBlackboxAttribs(FluxboxWindow::BlackboxAttributes &blackbox_attribs); |
97 | void setFluxboxWindow(FluxboxWindow *win); | ||
97 | 98 | ||
98 | // does this client have a pending unmap or destroy event? | 99 | // does this client have a pending unmap or destroy event? |
99 | bool validateClient() const; | 100 | bool validateClient() const; |
@@ -164,7 +165,7 @@ public: | |||
164 | unsigned long initial_state, normal_hint_flags, wm_hint_flags; | 165 | unsigned long initial_state, normal_hint_flags, wm_hint_flags; |
165 | 166 | ||
166 | 167 | ||
167 | FluxboxWindow *m_win; | 168 | |
168 | class WinClientSubj: public FbTk::Subject { | 169 | class WinClientSubj: public FbTk::Subject { |
169 | public: | 170 | public: |
170 | explicit WinClientSubj(WinClient &client):m_winclient(client) { } | 171 | explicit WinClientSubj(WinClient &client):m_winclient(client) { } |
@@ -176,6 +177,11 @@ public: | |||
176 | enum FocusMode { F_NOINPUT = 0, F_PASSIVE, F_LOCALLYACTIVE, F_GLOBALLYACTIVE }; | 177 | enum FocusMode { F_NOINPUT = 0, F_PASSIVE, F_LOCALLYACTIVE, F_GLOBALLYACTIVE }; |
177 | 178 | ||
178 | private: | 179 | private: |
180 | /// removes client from any waiting list and clears empty waiting lists | ||
181 | void removeTransientFromWaitingList(); | ||
182 | |||
183 | FluxboxWindow *m_win; | ||
184 | |||
179 | // number of transients which we are modal for | 185 | // number of transients which we are modal for |
180 | // or indicates that we are modal if don't have any transients | 186 | // or indicates that we are modal if don't have any transients |
181 | int m_modal; | 187 | int m_modal; |
@@ -195,6 +201,19 @@ private: | |||
195 | BScreen &m_screen; | 201 | BScreen &m_screen; |
196 | 202 | ||
197 | Strut *m_strut; | 203 | Strut *m_strut; |
204 | // map transient_for X window to winclient transient | ||
205 | // (used if transient_for FbWindow was created after transient) | ||
206 | // Since a lot of transients can be created before transient_for | ||
207 | // we need to map transient_for window to a list of transients | ||
208 | // | ||
209 | // Stuff to worry about: | ||
210 | // 1) If transients die before the transient_for is created | ||
211 | // 2) If transients changes to a new transient_for before old transient_for is created | ||
212 | // ( 3) Transient_for is never created | ||
213 | // This is not a big deal since the key value will be cleared | ||
214 | // once the list is empty ) | ||
215 | typedef std::map<Window, TransientList> TransientWaitMap; | ||
216 | static TransientWaitMap s_transient_wait; | ||
198 | 217 | ||
199 | }; | 218 | }; |
200 | 219 | ||