Browse Source

Merge pull request #2317 from Areloch/setSplitPoint

Adds ability to set the split point of a guiSplitContainer
Areloch 6 years ago
parent
commit
e7bfbe9133

+ 22 - 0
Engine/source/gui/containers/guiSplitContainer.cpp

@@ -613,3 +613,25 @@ void GuiSplitContainer::onMouseDragged( const GuiEvent &event )
       solvePanelConstraints(newDragPos, firstPanel, secondPanel, clientRect);
    }
 }
+
+void GuiSplitContainer::setSplitPoint(Point2I splitPoint)
+{
+   GuiContainer *firstPanel = dynamic_cast<GuiContainer*>(at(0));
+   GuiContainer *secondPanel = dynamic_cast<GuiContainer*>(at(1));
+
+   // This function will constrain the panels to their minExtents and update the mSplitPoint
+   if (firstPanel && secondPanel)
+   {
+      RectI clientRect = getClientRect();
+
+      solvePanelConstraints(splitPoint, firstPanel, secondPanel, clientRect);
+
+      layoutControls(clientRect);
+   }
+}
+
+DefineEngineMethod(GuiSplitContainer, setSplitPoint, void, (Point2I splitPoint), ,
+   "Set the position of the split handle.")
+{
+   object->setSplitPoint(splitPoint);
+}

+ 3 - 0
Engine/source/gui/containers/guiSplitContainer.h

@@ -87,6 +87,9 @@ public:
    virtual void solvePanelConstraints(Point2I newDragPos, GuiContainer * firstPanel, GuiContainer * secondPanel, const RectI& clientRect);
    virtual Point2I getMinExtent() const;   
 
+   //Set the positin of the split handler
+   void setSplitPoint(Point2I splitPoint);
+
 protected:
 
    S32         mFixedPanel;