diff --git a/bazaar/Docking/DockWindow.cpp b/bazaar/Docking/DockWindow.cpp index bbde9028a..a75c10d8c 100644 --- a/bazaar/Docking/DockWindow.cpp +++ b/bazaar/Docking/DockWindow.cpp @@ -523,7 +523,7 @@ void DockWindow::DockAsTab(DockCont& target, DockableCtrl& dc) void DockWindow::Dock0(int align, Ctrl& c, int pos, bool do_animatehl, bool ishighlight) { - Dock0(align, c, pos, CtrlBestSize(c), do_animatehl, ishighlight); + Dock0(align, c, pos, CtrlBestSize(c, align), do_animatehl, ishighlight); } void DockWindow::Dock0(int align, Ctrl& c, int pos, Size sz, bool do_animatehl, bool ishighlight) @@ -629,13 +629,17 @@ int DockWindow::GetDockAlign(const Point& p) const return DOCK_NONE; } -Size DockWindow::CtrlBestSize(const Ctrl& c, bool restrict) const +Size DockWindow::CtrlBestSize(const Ctrl& c, int align, bool restrict) const { Size mn = c.GetMinSize(); Size mx = c.GetMaxSize(); Size std = c.GetStdSize(); - if (restrict) - mx = minmax(GetSize()/2, mn, mx); + if (restrict) { + if (IsTB(align)) + mx.cy = minmax(GetSize().cy/2, mn.cy, mx.cy); + else + mx.cx = minmax(GetSize().cx/2, mn.cx, mx.cx); + } return minmax(std, mn, mx); } diff --git a/bazaar/Docking/Docking.h b/bazaar/Docking/Docking.h index 28d557de6..eb81ba38a 100644 --- a/bazaar/Docking/Docking.h +++ b/bazaar/Docking/Docking.h @@ -85,8 +85,8 @@ protected: int GetQuad(Point p, Rect r); Rect GetFinalAnimRect(int align, Ctrl& c); // Helpers - bool IsTL(int align) const { return align < 2; } //ie (align == DOCK_LEFT || align == DOCK_TOP) - bool IsTB(int align) const { return align & 1; } //ie (align == DOCK_TOP || align == DOCK_BOTTOM) + bool IsTL(int align) const { return align < 2; } //ie (align == DOCK_LEFT || align == DOCK_TOP) + bool IsTB(int align) const { return align & 1; } //ie (align == DOCK_TOP || align == DOCK_BOTTOM) int GetDockAlign(const Ctrl& c) const; int GetDockAlign(const Point& p) const; bool IsFrameAnimating(int align) const { return frameanim[align].inc; } @@ -281,7 +281,7 @@ private: void DoFrameReorder(int align); void UndoFrameReorder(); - Size CtrlBestSize(const Ctrl& c, bool restrict = true) const; + Size CtrlBestSize(const Ctrl& c, int align, bool restrict = true) const; void ClearLayout(); }; diff --git a/bazaar/Docking/Docking.lay b/bazaar/Docking/Docking.lay index 67306e2fe..1f5a2813c 100644 --- a/bazaar/Docking/Docking.lay +++ b/bazaar/Docking/Docking.lay @@ -1,18 +1,18 @@ -LAYOUT(DockConfigLayout, 436, 420) +LAYOUT(DockConfigLayout, 452, 428) ITEM(TreeCtrl, tree, HSizePosZ(8, 196).VSizePosZ(44, 68)) ITEM(Button, deletegroup, SetLabel(t_("Delete Group")).LeftPosZ(76, 80).TopPosZ(20, 20)) ITEM(Button, newgroup, SetLabel(t_("New Group")).LeftPosZ(8, 64).TopPosZ(20, 20)) - ITEM(LabelBox, dv___3, SetLabel(t_("Layouts")).HSizePosZ(248, 4).VSizePosZ(220, 28)) + ITEM(LabelBox, dv___3, SetLabel(t_("Layouts")).RightPosZ(4, 184).VSizePosZ(220, 28)) ITEM(LabelBox, dv___4, SetLabel(t_("Windows/Groups")).HSizePosZ(4, 192).VSizePosZ(4, 28)) ITEM(Label, dv___5, SetLabel(t_("Right-click for options")).HSizePosZ(8, 196).BottomPosZ(48, 16)) ITEM(Label, dv___6, SetLabel(t_("Drag/Drop to change groups")).HSizePosZ(8, 196).BottomPosZ(33, 15)) ITEM(LabelBox, dv___7, SetLabel(t_("Window Buttons")).RightPosZ(4, 184).TopPosZ(140, 76)) - ITEM(ColumnList, list, HSizePosZ(252, 8).VSizePosZ(260, 32)) - ITEM(Button, ok, SetLabel(t_("OK")).HSizePosZ(276, 84).BottomPosZ(4, 20)) - ITEM(Button, cancel, SetLabel(t_("Cancel")).HSizePosZ(356, 4).BottomPosZ(4, 20)) - ITEM(Button, deletelayout, SetLabel(t_("Delete")).HSizePosZ(372, 8).TopPosZ(236, 20)) - ITEM(Button, loadlayout, SetLabel(t_("Load")).HSizePosZ(312, 68).TopPosZ(236, 20)) - ITEM(Button, savelayout, SetLabel(t_("Save")).HSizePosZ(252, 128).TopPosZ(236, 20)) + ITEM(ColumnList, list, RightPosZ(8, 176).VSizePosZ(260, 32)) + ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(84, 76).BottomPosZ(4, 20)) + ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(4, 76).BottomPosZ(4, 20)) + ITEM(Button, deletelayout, SetLabel(t_("Delete")).RightPosZ(8, 56).TopPosZ(236, 20)) + ITEM(Button, loadlayout, SetLabel(t_("Load")).RightPosZ(68, 56).TopPosZ(236, 20)) + ITEM(Button, savelayout, SetLabel(t_("Save")).RightPosZ(128, 56).TopPosZ(236, 20)) ITEM(Option, tabbing, SetLabel(t_("Tabbing")).RightPosZ(64, 116).TopPosZ(60, 16)) ITEM(Option, tabnesting, SetLabel(t_("Default Nested Tabs")).RightPosZ(64, 116).TopPosZ(80, 16)) ITEM(Option, grouping, SetLabel(t_("Grouping")).RightPosZ(64, 116).TopPosZ(120, 16)) diff --git a/bazaar/DockingExample1/main.cpp b/bazaar/DockingExample1/main.cpp index 3002bb50d..d6512c5f1 100644 --- a/bazaar/DockingExample1/main.cpp +++ b/bazaar/DockingExample1/main.cpp @@ -32,6 +32,7 @@ private: DockingExample::DockingExample() { Title("DockingExample1 : Simple Docking"); + Sizeable().MaximizeBox(); // This a button so that we can open the Dock Manager Add(button.SetLabel("Manager").LeftPosZ(4, 100).TopPosZ(4, 23));