all repos — fluxbox @ 7bac08ef52118d89634bef6488b49dbb869dc253

custom fork of the fluxbox windowmanager

another little bug with iconbar rendering
markt markt
commit

7bac08ef52118d89634bef6488b49dbb869dc253

parent

d2bb60239be166dfe674e641ec1a8bf8e2748045

1 files changed, 14 insertions(+), 4 deletions(-)

jump to
M src/IconbarTool.ccsrc/IconbarTool.cc

@@ -430,6 +430,7 @@

void IconbarTool::setAlignment(Container::Alignment align) { *m_rc_alignment = align; update(0); + m_menu.reconfigure(); } void IconbarTool::setMode(Mode mode) {

@@ -453,6 +454,8 @@ m_icon_container.update();

m_icon_container.showSubwindows(); renderTheme(); + + m_menu.reconfigure(); } unsigned int IconbarTool::width() const {

@@ -505,8 +508,11 @@

return; } else if (subj == &(winsubj->win().workspaceSig())) { // we can ignore this signal if we're in ALLWINDOWS mode - if (mode() == ALLWINDOWS) + // unless the window was focused and has nothing to revert to + if (mode() == ALLWINDOWS || mode() == ICONS || mode() == NOICONS) { + m_focus_timer.start(); return; + } // workspace changed for this window, and if it's not on current workspace we remove it if (m_screen.currentWorkspaceID() != winsubj->win().workspaceNumber()) {

@@ -543,7 +549,7 @@

bool remove_all = false; // if we should readd all windows if (subj != 0 && typeid(*subj) == typeid(BScreen::ScreenSubject) && - mode() != ALLWINDOWS && mode() != ICONS ) { + mode() != ALLWINDOWS && mode() != ICONS && mode() != NOICONS) { BScreen::ScreenSubject *screen_subj = static_cast<BScreen::ScreenSubject *>(subj); // current workspace sig if (&m_screen.currentWorkspaceSig() == screen_subj ) {

@@ -838,11 +844,15 @@ }

void IconbarTool::timedRender() { WinClient *client = FocusControl::focusedWindow(); - if (client == 0 || client->fbwindow() == 0) + IconButton *current_button = static_cast<IconButton *>(m_icon_container.selected()); + + if (client == 0 || client->fbwindow() == 0) { + if (current_button != 0) + renderButton(*current_button); return; + } IconButton *button = findButton(*client->fbwindow()); - IconButton *current_button = static_cast<IconButton *>(m_icon_container.selected()); // if old window is the same as the new focused window then ignore this render // else render old client and new client if (button == current_button)