diff options
author | markt <markt> | 2007-01-07 18:45:30 (GMT) |
---|---|---|
committer | markt <markt> | 2007-01-07 18:45:30 (GMT) |
commit | 7bac08ef52118d89634bef6488b49dbb869dc253 (patch) | |
tree | f2ab4139ebd5415d94f0d3a016fb5b83dc7821e5 /src/IconbarTool.cc | |
parent | d2bb60239be166dfe674e641ec1a8bf8e2748045 (diff) | |
download | fluxbox_pavel-7bac08ef52118d89634bef6488b49dbb869dc253.zip fluxbox_pavel-7bac08ef52118d89634bef6488b49dbb869dc253.tar.bz2 |
another little bug with iconbar rendering
Diffstat (limited to 'src/IconbarTool.cc')
-rw-r--r-- | src/IconbarTool.cc | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/IconbarTool.cc b/src/IconbarTool.cc index ad4eeeb..30db541 100644 --- a/src/IconbarTool.cc +++ b/src/IconbarTool.cc | |||
@@ -430,6 +430,7 @@ void IconbarTool::hide() { | |||
430 | void IconbarTool::setAlignment(Container::Alignment align) { | 430 | void IconbarTool::setAlignment(Container::Alignment align) { |
431 | *m_rc_alignment = align; | 431 | *m_rc_alignment = align; |
432 | update(0); | 432 | update(0); |
433 | m_menu.reconfigure(); | ||
433 | } | 434 | } |
434 | 435 | ||
435 | void IconbarTool::setMode(Mode mode) { | 436 | void IconbarTool::setMode(Mode mode) { |
@@ -453,6 +454,8 @@ void IconbarTool::setMode(Mode mode) { | |||
453 | m_icon_container.showSubwindows(); | 454 | m_icon_container.showSubwindows(); |
454 | 455 | ||
455 | renderTheme(); | 456 | renderTheme(); |
457 | |||
458 | m_menu.reconfigure(); | ||
456 | } | 459 | } |
457 | 460 | ||
458 | unsigned int IconbarTool::width() const { | 461 | unsigned int IconbarTool::width() const { |
@@ -505,8 +508,11 @@ void IconbarTool::update(FbTk::Subject *subj) { | |||
505 | return; | 508 | return; |
506 | } else if (subj == &(winsubj->win().workspaceSig())) { | 509 | } else if (subj == &(winsubj->win().workspaceSig())) { |
507 | // we can ignore this signal if we're in ALLWINDOWS mode | 510 | // we can ignore this signal if we're in ALLWINDOWS mode |
508 | if (mode() == ALLWINDOWS) | 511 | // unless the window was focused and has nothing to revert to |
512 | if (mode() == ALLWINDOWS || mode() == ICONS || mode() == NOICONS) { | ||
513 | m_focus_timer.start(); | ||
509 | return; | 514 | return; |
515 | } | ||
510 | 516 | ||
511 | // workspace changed for this window, and if it's not on current workspace we remove it | 517 | // workspace changed for this window, and if it's not on current workspace we remove it |
512 | if (m_screen.currentWorkspaceID() != winsubj->win().workspaceNumber()) { | 518 | if (m_screen.currentWorkspaceID() != winsubj->win().workspaceNumber()) { |
@@ -543,7 +549,7 @@ void IconbarTool::update(FbTk::Subject *subj) { | |||
543 | bool remove_all = false; // if we should readd all windows | 549 | bool remove_all = false; // if we should readd all windows |
544 | 550 | ||
545 | if (subj != 0 && typeid(*subj) == typeid(BScreen::ScreenSubject) && | 551 | if (subj != 0 && typeid(*subj) == typeid(BScreen::ScreenSubject) && |
546 | mode() != ALLWINDOWS && mode() != ICONS ) { | 552 | mode() != ALLWINDOWS && mode() != ICONS && mode() != NOICONS) { |
547 | BScreen::ScreenSubject *screen_subj = static_cast<BScreen::ScreenSubject *>(subj); | 553 | BScreen::ScreenSubject *screen_subj = static_cast<BScreen::ScreenSubject *>(subj); |
548 | // current workspace sig | 554 | // current workspace sig |
549 | if (&m_screen.currentWorkspaceSig() == screen_subj ) { | 555 | if (&m_screen.currentWorkspaceSig() == screen_subj ) { |
@@ -838,11 +844,15 @@ bool IconbarTool::checkDuplicate(FluxboxWindow &win) { | |||
838 | 844 | ||
839 | void IconbarTool::timedRender() { | 845 | void IconbarTool::timedRender() { |
840 | WinClient *client = FocusControl::focusedWindow(); | 846 | WinClient *client = FocusControl::focusedWindow(); |
841 | if (client == 0 || client->fbwindow() == 0) | 847 | IconButton *current_button = static_cast<IconButton *>(m_icon_container.selected()); |
848 | |||
849 | if (client == 0 || client->fbwindow() == 0) { | ||
850 | if (current_button != 0) | ||
851 | renderButton(*current_button); | ||
842 | return; | 852 | return; |
853 | } | ||
843 | 854 | ||
844 | IconButton *button = findButton(*client->fbwindow()); | 855 | IconButton *button = findButton(*client->fbwindow()); |
845 | IconButton *current_button = static_cast<IconButton *>(m_icon_container.selected()); | ||
846 | // if old window is the same as the new focused window then ignore this render | 856 | // if old window is the same as the new focused window then ignore this render |
847 | // else render old client and new client | 857 | // else render old client and new client |
848 | if (button == current_button) | 858 | if (button == current_button) |