diff --git a/src/add-ons/decorators/SATDecorator/SATGroup.cpp b/src/add-ons/decorators/SATDecorator/SATGroup.cpp index ab98faae02..209afea68c 100644 --- a/src/add-ons/decorators/SATDecorator/SATGroup.cpp +++ b/src/add-ons/decorators/SATDecorator/SATGroup.cpp @@ -78,6 +78,13 @@ WindowArea::MoveWindowToPosition(SATWindow* window, int32 index) } +SATWindow* +WindowArea::TopWindow() +{ + return fWindowLayerOrder.ItemAt(fWindowLayerOrder.CountItems() - 1); +} + + bool WindowArea::_AddWindow(SATWindow* window, SATWindow* after) { diff --git a/src/add-ons/decorators/SATDecorator/SATGroup.h b/src/add-ons/decorators/SATDecorator/SATGroup.h index 6324b3fe08..3f26050c6c 100644 --- a/src/add-ons/decorators/SATDecorator/SATGroup.h +++ b/src/add-ons/decorators/SATDecorator/SATGroup.h @@ -144,6 +144,7 @@ public: const SATWindowList& LayerOrder() { return fWindowLayerOrder; } bool MoveWindowToPosition(SATWindow* window, int32 index); + SATWindow* TopWindow(); Crossing* LeftTopCrossing() { return fLeftTopCrossing.Get(); } diff --git a/src/add-ons/decorators/SATDecorator/StackAndTile.cpp b/src/add-ons/decorators/SATDecorator/StackAndTile.cpp index 07d902d152..32a6f5be73 100644 --- a/src/add-ons/decorators/SATDecorator/StackAndTile.cpp +++ b/src/add-ons/decorators/SATDecorator/StackAndTile.cpp @@ -502,15 +502,12 @@ StackAndTile::_ActivateWindow(SATWindow* satWindow) return; area->MoveToTopLayer(satWindow); - //desktop->ActivateWindow(satWindow->GetWindow()); - - WindowIterator iter(group); - for (SATWindow* listWindow = iter.NextWindow(); listWindow != NULL; - listWindow = iter.NextWindow()) { - if (listWindow != satWindow) - //desktop->SendWindowBehind(listWindow->GetWindow(), - // satWindow->GetWindow()); - desktop->ActivateWindow(listWindow->GetWindow()); + const WindowAreaList& areas = group->GetAreaList() ; + for (int32 i = 0; i < areas.CountItems(); i++) { + WindowArea* currentArea = areas.ItemAt(i); + if (currentArea == area) + continue; + desktop->ActivateWindow(currentArea->TopWindow()->GetWindow()); } desktop->ActivateWindow(satWindow->GetWindow());