diff options
Diffstat (limited to 'src/IconbarTool.cc')
-rw-r--r-- | src/IconbarTool.cc | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/IconbarTool.cc b/src/IconbarTool.cc index fcaac39..7cd7b8e 100644 --- a/src/IconbarTool.cc +++ b/src/IconbarTool.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: IconbarTool.cc,v 1.10 2003/09/08 17:52:34 fluxgen Exp $ | 23 | // $Id: IconbarTool.cc,v 1.11 2003/09/10 11:17:53 fluxgen Exp $ |
24 | 24 | ||
25 | #include "IconbarTool.hh" | 25 | #include "IconbarTool.hh" |
26 | 26 | ||
@@ -246,17 +246,17 @@ void IconbarTool::setMode(Mode mode) { | |||
246 | deleteIcons(); | 246 | deleteIcons(); |
247 | 247 | ||
248 | // update mode | 248 | // update mode |
249 | switch (*m_rc_mode) { | 249 | switch (mode) { |
250 | case NONE: | 250 | case NONE: // nothing |
251 | break; | 251 | break; |
252 | case ICONS: | 252 | case ICONS: // all icons from all workspaces |
253 | case WORKSPACEICONS: | 253 | case WORKSPACEICONS: // all icons on current workspace |
254 | updateIcons(); | 254 | updateIcons(); |
255 | break; | 255 | break; |
256 | case WORKSPACE: | 256 | case WORKSPACE: // all windows and all icons on current workspace |
257 | updateWorkspace(); | 257 | updateWorkspace(); |
258 | break; | 258 | break; |
259 | case ALLWINDOWS: | 259 | case ALLWINDOWS: // all windows and all icons from all workspaces |
260 | updateAllWindows(); | 260 | updateAllWindows(); |
261 | break; | 261 | break; |
262 | }; | 262 | }; |
@@ -321,7 +321,7 @@ void IconbarTool::update(FbTk::Subject *subj) { | |||
321 | removeWindow(winsubj->win()); | 321 | removeWindow(winsubj->win()); |
322 | renderTheme(); | 322 | renderTheme(); |
323 | } | 323 | } |
324 | } else { | 324 | } else if (mode() != WORKSPACE) { |
325 | if (winsubj->win().isIconic()) { | 325 | if (winsubj->win().isIconic()) { |
326 | removeWindow(winsubj->win()); | 326 | removeWindow(winsubj->win()); |
327 | renderTheme(); | 327 | renderTheme(); |
@@ -342,10 +342,10 @@ void IconbarTool::update(FbTk::Subject *subj) { | |||
342 | if (&m_screen.currentWorkspaceSig() == screen_subj && | 342 | if (&m_screen.currentWorkspaceSig() == screen_subj && |
343 | mode() != ALLWINDOWS && mode() != ICONS) { | 343 | mode() != ALLWINDOWS && mode() != ICONS) { |
344 | remove_all = true; // remove and readd all windows | 344 | remove_all = true; // remove and readd all windows |
345 | } else if (&m_screen.iconListSig() == screen_subj && | 345 | }/* else if (&m_screen.iconListSig() == screen_subj && |
346 | (mode() == ALLWINDOWS || mode() == ICONS)) { | 346 | (mode() == ALLWINDOWS || mode() == ICONS || mode() == WORKSPACE)) { |
347 | remove_all = true; | 347 | remove_all = true; |
348 | } | 348 | }*/ |
349 | } | 349 | } |
350 | 350 | ||
351 | // lock graphic update | 351 | // lock graphic update |
@@ -544,13 +544,22 @@ void IconbarTool::updateIcons() { | |||
544 | 544 | ||
545 | void IconbarTool::updateWorkspace() { | 545 | void IconbarTool::updateWorkspace() { |
546 | std::list<FluxboxWindow *> itemlist; | 546 | std::list<FluxboxWindow *> itemlist; |
547 | // add current workspace windows | ||
547 | Workspace &space = *m_screen.currentWorkspace(); | 548 | Workspace &space = *m_screen.currentWorkspace(); |
548 | Workspace::Windows::iterator it = space.windowList().begin(); | 549 | Workspace::Windows::iterator win_it = space.windowList().begin(); |
549 | Workspace::Windows::iterator it_end = space.windowList().end(); | 550 | Workspace::Windows::iterator win_it_end = space.windowList().end(); |
550 | for (; it != it_end; ++it) { | 551 | for (; win_it != win_it_end; ++win_it) { |
551 | if (checkAddWindow(mode(), **it)) | 552 | if (checkAddWindow(mode(), **win_it)) |
552 | itemlist.push_back(*it); | 553 | itemlist.push_back(*win_it); |
553 | } | 554 | } |
555 | // add icons from current workspace | ||
556 | BScreen::Icons::iterator icon_it = m_screen.getIconList().begin(); | ||
557 | BScreen::Icons::iterator icon_it_end = m_screen.getIconList().end(); | ||
558 | for (; icon_it != icon_it_end; ++icon_it) { | ||
559 | if ((*icon_it)->workspaceNumber() == m_screen.currentWorkspaceID()) | ||
560 | itemlist.push_back(*icon_it); | ||
561 | } | ||
562 | |||
554 | removeDuplicate(m_icon_list, itemlist); | 563 | removeDuplicate(m_icon_list, itemlist); |
555 | addList(itemlist); | 564 | addList(itemlist); |
556 | } | 565 | } |