summaryrefslogtreecommitdiff
path: root/basctl/source/basicide/layout.hxx
diff options
context:
space:
mode:
authorUray M. János <uray.janos@gmail.com>2012-09-07 10:01:42 +0200
committerAndras Timar <atimar@suse.com>2012-09-07 11:55:30 +0200
commit19e7696b0f3e6771b630220379f00d306b44ec3d (patch)
tree5fe5e55aa5fd65695793699d51346e3ef183c344 /basctl/source/basicide/layout.hxx
parent1f831f5ac810f019b304e6d26c20fa54f8521828 (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.hxx25
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&);