aboutsummaryrefslogtreecommitdiff
path: root/src/WinClient.hh
diff options
context:
space:
mode:
authorfluxgen <fluxgen>2005-04-29 02:52:36 (GMT)
committerfluxgen <fluxgen>2005-04-29 02:52:36 (GMT)
commitc7eb5b03323d3b1d4df30977ed69e59aad0a3392 (patch)
treeea91bb7b6fa787cc1d8c0a88c6ee4c5dfdc5d76d /src/WinClient.hh
parent40d026ff99bab25b7aa52e8e6c413277eb27006b (diff)
downloadfluxbox_pavel-c7eb5b03323d3b1d4df30977ed69e59aad0a3392.zip
fluxbox_pavel-c7eb5b03323d3b1d4df30977ed69e59aad0a3392.tar.bz2
transient window fix
Diffstat (limited to 'src/WinClient.hh')
-rw-r--r--src/WinClient.hh21
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
178private: 179private:
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