diff options
author | Uray M. János <uray.janos@gmail.com> | 2012-09-07 10:01:42 +0200 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2012-09-07 11:55:30 +0200 |
commit | 19e7696b0f3e6771b630220379f00d306b44ec3d (patch) | |
tree | 5fe5e55aa5fd65695793699d51346e3ef183c344 /basctl/source/basicide/layout.hxx | |
parent | 1f831f5ac810f019b304e6d26c20fa54f8521828 (diff) |
Basic IDE: Filling space of non-docking windows
Now if we make e.g. the stack window floating, then the watch window
will occupy the whole width of the line (and vice versa, also for the
Dialog Editor with object catalog and property browser). If we put it
back again, than we get back the previous state of the strip.
Change-Id: I634614ff2e9d5f790ad759656a79a38d49c4afc4
Diffstat (limited to 'basctl/source/basicide/layout.hxx')
-rw-r--r-- | basctl/source/basicide/layout.hxx | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/basctl/source/basicide/layout.hxx b/basctl/source/basicide/layout.hxx index 6a63547f5acf..127f77e80f77 100644 --- a/basctl/source/basicide/layout.hxx +++ b/basctl/source/basicide/layout.hxx @@ -91,8 +91,6 @@ private: private: // the layout window Layout& rLayout; - // ArrangeIn() is called at first time? - bool bFirstArrange; // horizontal or vertical strip? bool bVertical; // lower (top or left) or higher (bottom or right) strip? @@ -105,15 +103,28 @@ private: int nLastPos; // the main splitting line Splitter aSplitter; - // the dockable windows - std::vector<DockingWindow*> vWindows; - // splitting lines between the docking windows (vWindows.size() - 1) - std::vector<boost::shared_ptr<Splitter> > vSplitters; - + // the dockable windows (and some data) + struct Item + { + // pointer to the dockable window + DockingWindow* pWin; + // starting and ending position in the strip + // They may be different from the actual window position, because + // the window may fill the space of the adjacent currently + // non-docking windows, but this change is not stored in these + // variables. These change only when the splitter lines are moved. + int nStartPos, nEndPos; + // splitter line window before the window + // (the first one is always nullptr) + boost::shared_ptr<Splitter> pSplit; + }; + std::vector<Item> vItems; private: Point MakePoint (int, int) const; Size MakeSize (int, int) const; private: + static bool IsDocking (DockingWindow const&); + private: DECL_LINK(SplitHdl, Splitter*); void CheckMarginsFor (Splitter*); void InitSplitter (Splitter&); |