[haiku-commits] r38313 - haiku/trunk/src/add-ons/decorators/SATDecorator

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 23 Aug 2010 08:27:11 +0200 (CEST)

Author: czeidler
Date: 2010-08-23 08:27:08 +0200 (Mon, 23 Aug 2010)
New Revision: 38313
Changeset: http://dev.haiku-os.org/changeset/38313

Modified:
   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
Log:
- Update the size constraints when a window has been resized.
- Remove superflouse and wrong SetRange.



Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp
===================================================================
--- haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp       
2010-08-23 06:21:55 UTC (rev 38312)
+++ haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.cpp       
2010-08-23 06:27:08 UTC (rev 38313)
@@ -90,6 +90,29 @@
 
 
 void
+SATWindow::UpdateGroupWindowsSize()
+{
+       SATGroup* group = GetGroup();
+       if (!group)
+               return;
+
+       for (int i = 0; i < group->CountItems(); i++) {
+               SATWindow* window = group->WindowAt(i);
+               if (window == this)
+                       continue;
+               window->UpdateWindowSize();
+       }
+}
+
+
+void
+SATWindow::UpdateWindowSize()
+{
+       fGroupCookie->UpdateWindowSize();
+}
+
+
+void
 SATWindow::MoveWindowToSAT(int32 workspace)
 {
        fGroupCookie->MoveWindow(workspace);
@@ -458,6 +481,17 @@
 }
 
 
+void
+GroupCookie::UpdateWindowSize()
+{
+       BRect frame = fSATWindow->CompleteWindowFrame();
+
+       // adjust window size soft constraints
+       widthConstraint->SetRightSide(frame.Width());
+       heightConstraint->SetRightSide(frame.Height());
+}
+
+
 bool
 GroupCookie::Init(SATGroup* group, WindowArea* area)
 {
@@ -474,11 +508,6 @@
        rightBorder = linearSpec->AddVariable();
        bottomBorder = linearSpec->AddVariable();
 
-       leftBorder->SetRange(-DBL_MAX, DBL_MAX);
-       topBorder->SetRange(-DBL_MAX, DBL_MAX);
-       rightBorder->SetRange(-DBL_MAX, DBL_MAX);
-       bottomBorder->SetRange(-DBL_MAX, DBL_MAX);
-
        if (!leftBorder || !topBorder || !rightBorder || !bottomBorder) {
                // clean up
                Uninit();

Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h
===================================================================
--- haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h 2010-08-23 
06:21:55 UTC (rev 38312)
+++ haiku/trunk/src/add-ons/decorators/SATDecorator/SATWindow.h 2010-08-23 
06:27:08 UTC (rev 38313)
@@ -32,6 +32,7 @@
 
                void                            DoGroupLayout(SATWindow* 
triggerWindow);
                void                            MoveWindow(int32 workspace);
+               void                            UpdateWindowSize();
 
                SATGroup*                       GetGroup() { return 
fSATGroup.Get(); }
 
@@ -84,6 +85,9 @@
 
                bool                            PropagateToGroup(SATGroup* 
group, WindowArea* area);
 
+               void                            UpdateGroupWindowsSize();
+               void                            UpdateWindowSize();
+
                //! Move the window to the tab's position. 
                void                            MoveWindowToSAT(int32 
workspace);
 

Modified: haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp
===================================================================
--- haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp    
2010-08-23 06:21:55 UTC (rev 38312)
+++ haiku/trunk/src/add-ons/decorators/SATDecorator/StackAndTile.cpp    
2010-08-23 06:27:08 UTC (rev 38313)
@@ -165,16 +165,27 @@
                return;
 
        if (SATKeyPressed())
-                       satWindow->FindSnappingCandidates();
-               else
-                       satWindow->DoGroupLayout();
+               satWindow->FindSnappingCandidates();
+       else
+               satWindow->DoGroupLayout();
 }
 
 
 void
 StackAndTile::WindowResized(Window* window)
 {
-       WindowMoved(window);
+       SATWindow* satWindow = GetSATWindow(window);
+       if (!satWindow)
+               return;
+
+       if (SATKeyPressed())
+               satWindow->FindSnappingCandidates();
+       else {
+               satWindow->DoGroupLayout();
+               // after solve the layout update the size constraints of all 
windows in
+               // the group
+               satWindow->UpdateGroupWindowsSize();
+       }
 }
 
 
@@ -185,7 +196,6 @@
        if (!satWindow)
                return;
        _ActivateWindow(satWindow);
-       
 }
 
 


Other related posts:

  • » [haiku-commits] r38313 - haiku/trunk/src/add-ons/decorators/SATDecorator - clemens . zeidler