Author: czeidler Date: 2010-09-02 05:05:58 +0200 (Thu, 02 Sep 2010) New Revision: 38508 Changeset: http://dev.haiku-os.org/changeset/38508 Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATGroup.h haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.h haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.cpp haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.h haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.cpp haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.h Log: - Do the window layout on every resize. This is e.g. needed to do the tab layout. - Use old ActivateWindow implementation till the Desktop SendBehind question is solved. Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATGroup.h =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/SATGroup.h 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/SATGroup.h 2010-09-02 03:05:58 UTC (rev 38508) @@ -253,6 +253,7 @@ protected: SATWindowList fSATWindowList; + LinearSpec fLinearSpec; private: Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp 2010-09-02 03:05:58 UTC (rev 38508) @@ -457,6 +457,14 @@ void +SATWindow::DoWindowLayout() +{ + for (int i = 0; i < fSATSnappingBehaviourList.CountItems(); i++) + fSATSnappingBehaviourList.ItemAt(i)->DoWindowLayout(); +} + + +void SATWindow::DoGroupLayout() { if (!PositionManagedBySAT()) @@ -464,8 +472,7 @@ fGroupCookie->DoGroupLayout(this); - for (int i = 0; i < fSATSnappingBehaviourList.CountItems(); i++) - fSATSnappingBehaviourList.ItemAt(i)->DoGroupLayout(); + DoWindowLayout(); } Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h 2010-09-02 03:05:58 UTC (rev 38508) @@ -100,6 +100,7 @@ void FindSnappingCandidates(); bool JoinCandidates(); + void DoWindowLayout(); void DoGroupLayout(); //! \return the complete window frame including the Decorator Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp 2010-09-02 03:05:58 UTC (rev 38508) @@ -185,6 +185,17 @@ // after solve the layout update the size constraints of all windows in // the group satWindow->UpdateGroupWindowsSize(); + + // Do a window layout for all windows. TODO: mybe do it a bit more + // efficient + SATGroup* group = satWindow->GetGroup(); + if (!group) + return; + for (int i = 0; i < group->CountItems(); i++) { + SATWindow* listWindow = group->WindowAt(i); + if (listWindow != satWindow) + listWindow->DoWindowLayout(); + } } } @@ -357,15 +368,18 @@ if (!desktop) return; - desktop->ActivateWindow(satWindow->GetWindow()); + //desktop->ActivateWindow(satWindow->GetWindow()); for (int i = 0; i < group->CountItems(); i++) { SATWindow* listWindow = group->WindowAt(i); if (listWindow == satWindow) continue; - desktop->SendWindowBehind(listWindow->GetWindow(), - satWindow->GetWindow()); + //desktop->SendWindowBehind(listWindow->GetWindow(), + // satWindow->GetWindow()); + desktop->ActivateWindow(listWindow->GetWindow()); } + + desktop->ActivateWindow(satWindow->GetWindow()); } Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.h =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.h 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.h 2010-09-02 03:05:58 UTC (rev 38508) @@ -127,7 +127,7 @@ virtual bool JoinCandidates() = 0; /*! Update the window tab values, solve the layout and move all windows in the group accordantly. */ - virtual void DoGroupLayout() = 0; + virtual void DoWindowLayout() = 0; virtual void RemovedFromArea(WindowArea* area) {} virtual void TabLocationMoved(float location, bool shifting) {} }; Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.cpp =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.cpp 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.cpp 2010-09-02 03:05:58 UTC (rev 38508) @@ -254,7 +254,7 @@ void -SATStacking::DoGroupLayout() +SATStacking::DoWindowLayout() { _AdjustWindowTabs(); } Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.h =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.h 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/Stacking.h 2010-09-02 03:05:58 UTC (rev 38508) @@ -30,7 +30,8 @@ bool FindSnappingCandidates(SATGroup* group); bool JoinCandidates(); - void DoGroupLayout(); + void DoWindowLayout(); + void RemovedFromArea(WindowArea* area); void TabLocationMoved(float location, bool shifting); Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.cpp =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.cpp 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.cpp 2010-09-02 03:05:58 UTC (rev 38508) @@ -79,7 +79,7 @@ void -SATTiling::DoGroupLayout() +SATTiling::DoWindowLayout() { } Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.h =================================================================== --- haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.h 2010-09-01 21:55:11 UTC (rev 38507) +++ haiku/trunk/src/add-ons/decorators/SATDecorator/Tiling.h 2010-09-02 03:05:58 UTC (rev 38508) @@ -22,7 +22,7 @@ bool FindSnappingCandidates(SATGroup* group); bool JoinCandidates(); - void DoGroupLayout(); + void DoWindowLayout(); private: bool _FindFreeAreaInGroup(SATGroup* group);