diff --git a/group.c b/group.c index 6721266..59aa9d5 100644 --- a/group.c +++ b/group.c @@ -1004,8 +1004,12 @@ groupHandleButtonReleaseEvent(CompDisplay *d, XEvent *event) // Hide tab-bars. GroupSelection *tmpGroup; for(tmpGroup = gs->groups; tmpGroup; tmpGroup = tmpGroup->next) - groupTabSetVisibility(tmpGroup, FALSE, PERMANENT); - + { + if (tmpGroup != group) + groupTabSetVisibility(tmpGroup, FALSE, PERMANENT); + else + groupTabSetVisibility(tmpGroup, TRUE, 0); + } break; } diff --git a/tab.c b/tab.c index e920884..d0144a0 100644 --- a/tab.c +++ b/tab.c @@ -327,6 +327,12 @@ void groupTabSetVisibility(GroupSelection *group, Bool visible, unsigned int mas groupSwitchTopTabInput(group, FALSE); } + + else if (visible && bar->state == PaintPermanentOn && + !(mask & PERMANENT)) + { + bar->state = PaintOn; + } else if (visible && (bar->state == PaintOff || bar->state == PaintFadeOut)) @@ -1249,19 +1255,16 @@ void groupUpdateTabBars(CompScreen *s, Window enteredWin) if (bar && ((bar->state == PaintOff) || (bar->state == PaintFadeOut))) { int showDelayTime = groupGetTabbarShowDelay(s) * 1000; - if (bar->state == PaintOff) + /* Show the tab-bar after a delay, only if the tab-bar wasn't fading out. */ + if (showDelayTime > 0 && (bar->state == PaintOff)) { - /* Show the tab-bar after a delay, only if the tab-bar wasn't fading out. */ - if (showDelayTime > 0) - { - if (gs->showDelayTimeoutHandle) - compRemoveTimeout (gs->showDelayTimeoutHandle); - gs->showDelayTimeoutHandle = - compAddTimeout(showDelayTime, groupShowDelayTimeout, hoveredGroup); - } - else - groupShowDelayTimeout(hoveredGroup); + if (gs->showDelayTimeoutHandle) + compRemoveTimeout (gs->showDelayTimeoutHandle); + gs->showDelayTimeoutHandle = + compAddTimeout(showDelayTime, groupShowDelayTimeout, hoveredGroup); } + else + groupShowDelayTimeout(hoveredGroup); } }