[haiku-commits] r42615 - in haiku/trunk/src/servers/app: . stackandtile

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 10 Aug 2011 03:49:00 +0200 (CEST)

Author: czeidler
Date: 2011-08-10 03:49:00 +0200 (Wed, 10 Aug 2011)
New Revision: 42615
Changeset: https://dev.haiku-os.org/changeset/42615

Modified:
   haiku/trunk/src/servers/app/Window.cpp
   haiku/trunk/src/servers/app/stackandtile/SATGroup.cpp
Log:
When stacking windows, move the new window to the parent position and size. 
Simplify the part in S&T that took care of it before.



Modified: haiku/trunk/src/servers/app/Window.cpp
===================================================================
--- haiku/trunk/src/servers/app/Window.cpp      2011-08-10 00:20:03 UTC (rev 
42614)
+++ haiku/trunk/src/servers/app/Window.cpp      2011-08-10 01:49:00 UTC (rev 
42615)
@@ -2127,8 +2127,20 @@
        if (stack == NULL)
                return false;
 
+       BRegion dirty;
+       // move window to the own position
+       BRect ownFrame = Frame();
+       BRect frame = window->Frame();
+       float deltaToX = round(ownFrame.left - frame.left);
+       float deltaToY = round(ownFrame.top - frame.top);
+       frame.OffsetBy(deltaToX, deltaToY);
+       float deltaByX = round(ownFrame.right - frame.right);
+       float deltaByY = round(ownFrame.bottom - frame.bottom);
+       dirty.Include(&window->VisibleRegion());
+       window->MoveBy(deltaToX, deltaToY, false);
+       window->ResizeBy(deltaByX, deltaByY, &dirty, false);
+
        // first collect dirt from the window to add
-       BRegion dirty;
        ::Decorator* otherDecorator = window->Decorator();
        if (otherDecorator != NULL)
                dirty.Include(otherDecorator->TitleBarRect());

Modified: haiku/trunk/src/servers/app/stackandtile/SATGroup.cpp
===================================================================
--- haiku/trunk/src/servers/app/stackandtile/SATGroup.cpp       2011-08-10 
00:20:03 UTC (rev 42614)
+++ haiku/trunk/src/servers/app/stackandtile/SATGroup.cpp       2011-08-10 
01:49:00 UTC (rev 42615)
@@ -485,33 +485,32 @@
 
 
 void
-WindowArea::_MoveToSAT(SATWindow* topWindow)
+WindowArea::_MoveToSAT(SATWindow* triggerWindow)
 {
-       int32 workspace = topWindow->GetWindow()->CurrentWorkspace();
-       Desktop* desktop = topWindow->GetWindow()->Desktop();
+       int32 workspace = triggerWindow->GetWindow()->CurrentWorkspace();
+       Desktop* desktop = triggerWindow->GetWindow()->Desktop();
 
        BRect frameSAT(LeftVar()->Value() - kMakePositiveOffset,
                TopVar()->Value() - kMakePositiveOffset,
                RightVar()->Value() - kMakePositiveOffset,
                BottomVar()->Value() - kMakePositiveOffset);
 
-       for (int32 i = 0; i < fWindowList.CountItems(); i++) {
-               SATWindow* window = fWindowList.ItemAt(i);
-               window->AdjustSizeLimits(frameSAT);
+       SATWindow* topWindow = TopWindow();
+       topWindow->AdjustSizeLimits(frameSAT);
 
-               BRect frame = window->CompleteWindowFrame();
-               float deltaToX = round(frameSAT.left - frame.left);
-               float deltaToY = round(frameSAT.top - frame.top);
-               frame.OffsetBy(deltaToX, deltaToY);
-               float deltaByX = round(frameSAT.right - frame.right);
-               float deltaByY = round(frameSAT.bottom - frame.bottom);
+       BRect frame = topWindow->CompleteWindowFrame();
+       float deltaToX = round(frameSAT.left - frame.left);
+       float deltaToY = round(frameSAT.top - frame.top);
+       frame.OffsetBy(deltaToX, deltaToY);
+       float deltaByX = round(frameSAT.right - frame.right);
+       float deltaByY = round(frameSAT.bottom - frame.bottom);
 
-               desktop->MoveWindowBy(window->GetWindow(), deltaToX, deltaToY,
-                       workspace);
-               // Update frame to the new position
-               desktop->ResizeWindowBy(window->GetWindow(), deltaByX, 
deltaByY);
-       }
+       desktop->MoveWindowBy(topWindow->GetWindow(), deltaToX, deltaToY,
+               workspace);
+       // Update frame to the new position
+       desktop->ResizeWindowBy(topWindow->GetWindow(), deltaByX, deltaByY);
 
+
        UpdateSizeConstaints(frameSAT);
 }
 


Other related posts:

  • » [haiku-commits] r42615 - in haiku/trunk/src/servers/app: . stackandtile - clemens . zeidler