diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ToolbarHandler.cc | 117 |
1 files changed, 17 insertions, 100 deletions
diff --git a/src/ToolbarHandler.cc b/src/ToolbarHandler.cc index 6a3cd0b..59215e4 100644 --- a/src/ToolbarHandler.cc +++ b/src/ToolbarHandler.cc | |||
@@ -20,7 +20,7 @@ | |||
20 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 20 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
21 | // DEALINGS IN THE SOFTWARE. | 21 | // DEALINGS IN THE SOFTWARE. |
22 | 22 | ||
23 | // $Id: ToolbarHandler.cc,v 1.26 2003/07/25 10:03:55 rathnor Exp $ | 23 | // $Id: ToolbarHandler.cc,v 1.27 2003/08/11 20:51:32 fluxgen Exp $ |
24 | 24 | ||
25 | /** | 25 | /** |
26 | * The ToolbarHandler class acts as a rough interface to the toolbar. | 26 | * The ToolbarHandler class acts as a rough interface to the toolbar. |
@@ -191,13 +191,11 @@ void ToolbarHandler::setMode(ToolbarMode newmode, bool initialise) { | |||
191 | 191 | ||
192 | 192 | ||
193 | if (newmode == NONE) { | 193 | if (newmode == NONE) { |
194 | // disableIconBar will clean up | 194 | //!! TODO disable iconbar |
195 | m_toolbar->disableIconBar(); | ||
196 | } else { | 195 | } else { |
197 | // rebuild it | 196 | // rebuild it |
198 | // be sure the iconbar is on | 197 | // be sure the iconbar is on |
199 | m_toolbar->enableIconBar(); | 198 | //!! TODO enable iconbar |
200 | m_toolbar->delAllIcons(); | ||
201 | } | 199 | } |
202 | 200 | ||
203 | if (initialise) | 201 | if (initialise) |
@@ -208,75 +206,28 @@ void ToolbarHandler::initForScreen(BScreen &screen) { | |||
208 | if (&m_screen != &screen) | 206 | if (&m_screen != &screen) |
209 | return; | 207 | return; |
210 | 208 | ||
211 | if (m_toolbar.get() != 0) | ||
212 | m_toolbar->disableUpdates(); | ||
213 | |||
214 | switch (mode()) { | 209 | switch (mode()) { |
215 | case OFF: | 210 | case OFF: |
216 | break; | 211 | break; |
217 | case NONE: | 212 | case NONE: |
218 | break; | 213 | break; |
219 | case ALLWINDOWS: { | 214 | case ALLWINDOWS: |
220 | BScreen::Workspaces::const_iterator workspace_it = m_screen.getWorkspacesList().begin(); | 215 | //!! TODO: change iconbar mode |
221 | BScreen::Workspaces::const_iterator workspace_it_end = m_screen.getWorkspacesList().end(); | 216 | |
222 | for (; workspace_it != workspace_it_end; ++workspace_it) { | ||
223 | Workspace::Windows &wins = (*workspace_it)->windowList(); | ||
224 | Workspace::Windows::iterator wit = wins.begin(); | ||
225 | Workspace::Windows::iterator wit_end = wins.end(); | ||
226 | for (; wit != wit_end; ++wit) { | ||
227 | |||
228 | if (!m_toolbar->containsIcon(**wit) && *wit != 0) | ||
229 | m_toolbar->addIcon(*wit); | ||
230 | /* | ||
231 | FluxboxWindow::ClientList::iterator cit = (*wit)->clientList().begin(); | ||
232 | FluxboxWindow::ClientList::iterator cit_end = (*wit)->clientList().end(); | ||
233 | for (; cit != cit_end; ++cit) | ||
234 | m_toolbar->addIcon(*(*cit)); | ||
235 | */ | ||
236 | } | ||
237 | } | ||
238 | } | ||
239 | // fall through and add icons | 217 | // fall through and add icons |
240 | case LASTMODE: | 218 | case LASTMODE: |
241 | case ICONS: { | 219 | case ICONS: |
242 | BScreen::Icons &iconlist = m_screen.getIconList(); | 220 | //!! TODO: update iconbar mode |
243 | BScreen::Icons::iterator iconit = iconlist.begin(); | ||
244 | BScreen::Icons::iterator iconit_end = iconlist.end(); | ||
245 | for(; iconit != iconit_end; ++iconit) { | ||
246 | if (*iconit == 0) | ||
247 | continue; | ||
248 | m_toolbar->addIcon(*iconit); | ||
249 | } | ||
250 | } | ||
251 | break; | 221 | break; |
252 | case WORKSPACE: { | 222 | case WORKSPACE: |
253 | Workspace::Windows &wins = m_screen.currentWorkspace()->windowList(); | 223 | //!! TODO: update iconbar mode |
254 | Workspace::Windows::iterator wit = wins.begin(); | 224 | |
255 | Workspace::Windows::iterator wit_end = wins.end(); | ||
256 | for (; wit != wit_end; ++wit) { | ||
257 | |||
258 | if (!m_toolbar->containsIcon(**wit) && *wit != 0) | ||
259 | m_toolbar->addIcon(*wit); | ||
260 | } | ||
261 | } | ||
262 | // fall through and add icons for this workspace | 225 | // fall through and add icons for this workspace |
263 | case WORKSPACEICONS: { | 226 | case WORKSPACEICONS: |
264 | m_current_workspace = m_screen.currentWorkspaceID(); | 227 | //!! TODO: update iconbar mode |
265 | |||
266 | BScreen::Icons &wiconlist = m_screen.getIconList(); | ||
267 | BScreen::Icons::iterator iconit = wiconlist.begin(); | ||
268 | BScreen::Icons::iterator iconit_end = wiconlist.end(); | ||
269 | for(; iconit != iconit_end; ++iconit) { | ||
270 | if ((*iconit)->workspaceNumber() == m_current_workspace) | ||
271 | m_toolbar->addIcon(*iconit); | ||
272 | } | ||
273 | } | ||
274 | break; | 228 | break; |
275 | } | 229 | } |
276 | 230 | ||
277 | if (m_toolbar.get() != 0) | ||
278 | m_toolbar->enableUpdates(); | ||
279 | |||
280 | } | 231 | } |
281 | 232 | ||
282 | void ToolbarHandler::setupFrame(FluxboxWindow &win) { | 233 | void ToolbarHandler::setupFrame(FluxboxWindow &win) { |
@@ -288,20 +239,14 @@ void ToolbarHandler::setupFrame(FluxboxWindow &win) { | |||
288 | case NONE: | 239 | case NONE: |
289 | break; | 240 | break; |
290 | case WORKSPACE: | 241 | case WORKSPACE: |
291 | if (win.workspaceNumber() == m_current_workspace) | ||
292 | m_toolbar->addIcon(&win); | ||
293 | break; | 242 | break; |
294 | case WORKSPACEICONS: | 243 | case WORKSPACEICONS: |
295 | if (win.workspaceNumber() != m_current_workspace) | 244 | break; |
296 | break; | ||
297 | // else fall through and add the icon | 245 | // else fall through and add the icon |
298 | case LASTMODE: | 246 | case LASTMODE: |
299 | case ICONS: | 247 | case ICONS: |
300 | if (win.isIconic()) | ||
301 | m_toolbar->addIcon(&win); | ||
302 | break; | 248 | break; |
303 | case ALLWINDOWS: | 249 | case ALLWINDOWS: |
304 | m_toolbar->addIcon(&win); | ||
305 | break; | 250 | break; |
306 | } | 251 | } |
307 | } | 252 | } |
@@ -321,16 +266,10 @@ void ToolbarHandler::updateFrameClose(FluxboxWindow &win) { | |||
321 | // else fall through and remove the icon | 266 | // else fall through and remove the icon |
322 | case LASTMODE: | 267 | case LASTMODE: |
323 | case ICONS: | 268 | case ICONS: |
324 | if (win.isIconic()) { | ||
325 | m_toolbar->delIcon(&win); | ||
326 | } | ||
327 | break; | 269 | break; |
328 | case WORKSPACE: | 270 | case WORKSPACE: |
329 | if (win.isStuck() || win.workspaceNumber() == m_current_workspace) | ||
330 | m_toolbar->delIcon(&win); | ||
331 | break; | 271 | break; |
332 | case ALLWINDOWS: | 272 | case ALLWINDOWS: |
333 | m_toolbar->delIcon(&win); | ||
334 | break; | 273 | break; |
335 | } | 274 | } |
336 | } | 275 | } |
@@ -352,15 +291,6 @@ void ToolbarHandler::updateState(FluxboxWindow &win) { | |||
352 | // else fall through and do the same as icons (knowing it is the right ws) | 291 | // else fall through and do the same as icons (knowing it is the right ws) |
353 | case LASTMODE: | 292 | case LASTMODE: |
354 | case ICONS: | 293 | case ICONS: |
355 | // if the window is iconic (it mustn't have been before), then add it | ||
356 | // else remove it | ||
357 | if (win.isIconic()) { | ||
358 | if (!m_toolbar->containsIcon(win)) { | ||
359 | m_toolbar->addIcon(&win); | ||
360 | } | ||
361 | } else { | ||
362 | m_toolbar->delIcon(&win); | ||
363 | } | ||
364 | break; | 294 | break; |
365 | } | 295 | } |
366 | } | 296 | } |
@@ -376,17 +306,9 @@ void ToolbarHandler::updateWorkspace(FluxboxWindow &win) { | |||
376 | return; | 306 | return; |
377 | 307 | ||
378 | if (win.workspaceNumber() == m_current_workspace) { | 308 | if (win.workspaceNumber() == m_current_workspace) { |
379 | //!! TODO | 309 | |
380 | // this shouldn't be needed, but is until Workspaces get fixed so that | ||
381 | // you only move between them, you don't 'add' and 'remove' | ||
382 | // alternatively, fix reassocaiteWindow so that the iconic stuff is | ||
383 | // done elsewhere | ||
384 | if (!m_toolbar->containsIcon(win)) | ||
385 | m_toolbar->addIcon(&win); | ||
386 | } else { | 310 | } else { |
387 | // relies on the fact that this runs but does nothing if window isn't contained. | 311 | |
388 | if (!win.isStuck()) | ||
389 | m_toolbar->delIcon(&win); | ||
390 | } | 312 | } |
391 | } | 313 | } |
392 | 314 | ||
@@ -394,13 +316,8 @@ void ToolbarHandler::updateCurrentWorkspace(BScreen &screen) { | |||
394 | if (&screen != &m_screen || mode() == OFF) | 316 | if (&screen != &m_screen || mode() == OFF) |
395 | return; | 317 | return; |
396 | 318 | ||
397 | m_toolbar->redrawWorkspaceLabel(true); | 319 | if (mode() != NONE) |
398 | if (mode() != NONE) { | ||
399 | m_toolbar->disableUpdates(); | ||
400 | m_toolbar->delAllIcons(true); | ||
401 | initForScreen(m_screen); | 320 | initForScreen(m_screen); |
402 | m_toolbar->enableUpdates(); | ||
403 | } | ||
404 | 321 | ||
405 | } | 322 | } |
406 | 323 | ||