diff --git a/paint.c b/paint.c index 798f095..efab3a4 100644 --- a/paint.c +++ b/paint.c @@ -104,8 +104,6 @@ void groupPaintThumb(GroupSelection *group, GroupTabBarSlot *slot, const CompTra PAINT_WINDOW_TRANSFORMED_MASK | PAINT_WINDOW_TRANSLUCENT_MASK); glPopMatrix(); - - addWindowDamage(w); } w->screen->addWindowGeometry = oldAddWindowGeometry; @@ -1039,8 +1037,12 @@ void groupDonePaintScreen(CompScreen * s) if (group->changeState != PaintOff) damageScreen(s); - if (group->tabBar && group->tabBar->state != PaintOff) + if (group->tabBar && + ((group->tabBar->state == PaintFadeIn) || + (group->tabBar->state == PaintFadeOut))) + { damageScreenRegion(s, group->tabBar->region); + } } } diff --git a/tab.c b/tab.c index fd87912..f541072 100644 --- a/tab.c +++ b/tab.c @@ -2040,6 +2040,9 @@ void groupRecalcTabBarPos(GroupSelection *group, int middleX, int minX1, int max bar->bgLayer = groupRebuildCairoLayer(group->screen, bar->bgLayer, box.width + space + thumb_size, box.height); bar->oldWidth = 0; // trigger repaint } + + /* damage the new extents */ + damageScreenRegion (group->screen, bar->region); } /* @@ -2492,8 +2495,10 @@ void groupApplySpeeds(CompScreen* s, GroupTabBar* bar, int msSinceLastRepaint) if(updateTabBar) { + damageScreenRegion (s, bar->region); EMPTY_REGION(bar->region); XUnionRectWithRegion(&box, bar->region, bar->region); + damageScreenRegion (s, bar->region); } for(slot = bar->slots; slot; slot = slot->next)