History log of /haiku/src/kits/interface/SplitLayout.cpp
Revision Date Author Comments
# 3333f968 30-Jul-2015 Rene Gollent <rene@gollent.com>

SplitLayout: Fix #12261.

- SetItemCollapsed()/IsItemCollapsed() didn't properly handle inverting
values when mapping between the collapsed flag and the layout item's
internal visibility flag, leading to them having the opposite semantics
from what their name would suggest.


# e724b26f 08-Jul-2013 John Scipione <jscipione@gmail.com>

Remove enum elaborated type specifier

...from orientation params. Elaborated type specifiers are not needed
for C++ code and removing them makes doxygen happy. Verified working
on both gcc2h and gcc4h builds.


# 61084e53 22-Dec-2011 Alex Wilson <yourpalal2@gmail.com>

Remove clamping in new BSplitLayout methods.

Since clamping the index for these methods could lead to confusing side effects, we'll just avoid the clamping, and let things segfault when the programmer goes out of bounds.

Closes #7902


# 7b27c8fc 17-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Adjust method naming.


# 6beb27d4 16-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Add {Get,Set}ItemVisible() accessors and setters.


# 6d16dcfa 16-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Add GetCollapsible() accessor to BSplitView/Layout.


# 8151838e 02-Nov-2011 Alex Wilson <yourpalal2@gmail.com>

Add FBC padding to all (I think..) of the visible Layout related classes.


# b38ea98f 16-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

Devirtualize BLayout::InvalidateLayout(), add a protected hook BLayout::DoLayout(). This will allow for much better control over the propagation of layout invalidations, and therefore cleaner, more optimal code.


# 4e0131f5 09-Sep-2011 Alex Wilson <yourpalal2@gmail.com>

Rename BLayout::DerivedLayoutItems() to DoLayout(), which is consistent with BView::DoLayout(). Also adjusted child classes and documentation.


# 813147df 09-Jun-2011 Alex Wilson <yourpalal2@gmail.com>

* Add new SetInsets() methods to BTwoDimensionalLayout, BSplitView
* Also add equivalent methods to the layout builders in LayoutBuilder.h
* BSplitView now calls BControlLook::ComposeSpacing(), instead of BSplitLayout
* part of #7447


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6648dd3c 07-Jun-2011 Alex Wilson <yourpalal2@gmail.com>

* Add new spacing/inset constants for the layout API. For now, leave B_USE_DEFAULT_SPACING, but this will go soon.
* Rename BControlLook::ComposeItemSpacing() to ComposeSpacing(), and extend it to handle the new constants.
* Adjust users of BControlLook::ComposeItemSpacing() accordingly.
* part of #7447


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 71947e47 15-Feb-2011 Alex Wilson <yourpalal2@gmail.com>

When unarchiving a BSplitLayout, initialize our members properly so that even if unarchiving fails, the object is in a usable state. Fixes CID 10045.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40522 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 82ab3167 02-Sep-2010 Alex Wilson <yourpalal2@gmail.com>

Add default spacing for Layouts (#5614)
* introduce B_USE_DEFAULT_SPACING, which works somewhat like B_SIZE_UNSET and B_ALIGN_HORIZONTAL_UNSET
* introduce static float BControlLook::ComposeItemSpacing(float spacing), which checks uses be_control_look->DefaultItemSpacing().
* modify layouts to use BControlLook::ComposeItemSpacing() in SetInsets and SetSpacing methods.
* default insets are still 0, 0, 0, 0, but can be set to default spacing by passing B_USE_DEFAULT_SPACING
* I've found two regressions, patches incoming, please report others on #5614.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38512 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1eeda2bd 18-Aug-2010 Alex Wilson <yourpalal2@gmail.com>

Fix style violations I've commited in r38207 and r38251, the first pointed out by Ingo <- thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38252 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 352fb78f 17-Aug-2010 Alex Wilson <yourpalal2@gmail.com>

Fix Gcc4 build error from my previous commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1d6c7b6c 17-Aug-2010 Alex Wilson <yourpalal2@gmail.com>

Big change deriving BLayout from BLayoutItem, and allowing viewless BLayouts.
a few highlights:
* BLayout now derives publicly from BLayoutItem
* Added BAbstractLayout class, which our layouts now derive from
* updated layout builders to avoid creating views when they don't need to
* updated layout classes
* updated AboutSystem to fix a little regression
* more details on #6407
* please tell me about any regressions, I've tried to find them all, but some
may have slipped by.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38207 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6829d417 29-Jul-2010 Alex Wilson <yourpalal2@gmail.com>

Update BLayout::ItemAdded() and BLayout::ItemRemoved() to take an int32 index parameter, and ItemAdded() to return a bool indicating success or failure. Update BLayout::AddItem() to take the result of ItemAdded() into account. Also update BLayout::AllUnarchived() to take this into account. In either situation, if ItemAdded() returns false, the item does not get added to the layout. Removed various TODOs about code that could be removed once this change was made. In BSplitLayout, an item's LayoutData was lazy-initialized, but would always be created during ItemAdded(). Now we create the LayoutData explicitly, so that we can catch failed memory allocations. Closes #5524.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37817 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4a254e4d 27-Jul-2010 Alex Wilson <yourpalal2@gmail.com>

Generally, clean up new archiving constant names & strings to be consistent in all classes. Modify archiving constants to be const char* const (thanks Ingo). Also modify archiving in many classes to use less fields by storing more data in arrays and structs. The common min, max, and preferred sizes, for example are always stored in an array now. In BTwoDimensionalLayout and BSplitLayout, the insets are archived in a BRect. Also fixed a typo in BGridLayout which caused column info to be incorrect during archival.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37777 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b20c303 16-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Alex Wilson:
* Added archiving/unarchiving support.
* Coding style cleanup (some more by myself).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37548 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0747aad 29-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

After the first call to BView::InvalidateLayout() further invocations don't
invoke the layout's InvalidateLayout() anymore. This could cause problems when
the layout caches layout related information and also updates those on calls
other than LayoutView(). A call to such a method after an InvalidateLayout()
would mark the cached info valid and the layout would use the cached info
until the first InvalidateLayout() after the next LayoutView(), even if
BView::InvalidateLayout() had been called again in the meantime.

* Introduced a new method BView::ResetLayoutInvalidation(), which must be
called by layout implementations whenever they have updated their cached
information and need further InvalidateLayout() notifications.
* Adjusted the existing layout implementations to use the method.

Fixes bug #4047.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31316 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4aeb7a3c 23-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Made BTwoDimensionalLayout and BSplitLayout::GetInsets() const.
* Give access to BSplitLayout::SetInsets() and GetInsets() from BSplitView.
* Give access to BSplitView::SetInsets() from BSplitLayoutBuilder and
LayoutBuilder.
* Some automatic white-space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31197 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3756e259 20-Jun-2009 Rene Gollent <anevilyak@gmail.com>

GCC4 build fix.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31139 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1f9fd6d8 20-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Added BSplitView drawing code to ControlLook.
* BSplitView uses ControlLook to draw itself.
* Small refactoring in SplitLayout to implement IsAboveSplitter(BPoint).
* BSplitView updates the view cursor when the mouse is above a splitter.
* Standard splitter size is now 6 pixels, which is a bit easer to hit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6eb09230 01-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Resolve further warnings on GCC4.
* Enable -Werror on GCC4 builds as well (limited to the same selected targets).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29118 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60558ed9 15-Sep-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

SplitLayout.h is a local header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22234 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a19a660a 12-May-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the BSize(const BRect&) constructor and added BRect::Size()
instead. Also added a BRect(BPoint, BSize) constructor.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21120 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9ecf9d1c 26-Aug-2006 Ingo Weinhold <ingo_weinhold@gmx.de>

Merge from layout management branch.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3333f968888ae8017be5c01149e619a533b0aba1 30-Jul-2015 Rene Gollent <rene@gollent.com>

SplitLayout: Fix #12261.

- SetItemCollapsed()/IsItemCollapsed() didn't properly handle inverting
values when mapping between the collapsed flag and the layout item's
internal visibility flag, leading to them having the opposite semantics
from what their name would suggest.


# e724b26f23ad0df100a47f8d913bcdb3d54267df 08-Jul-2013 John Scipione <jscipione@gmail.com>

Remove enum elaborated type specifier

...from orientation params. Elaborated type specifiers are not needed
for C++ code and removing them makes doxygen happy. Verified working
on both gcc2h and gcc4h builds.


# 61084e53b501a6a10b6f10f645d96078c5f0a2b9 22-Dec-2011 Alex Wilson <yourpalal2@gmail.com>

Remove clamping in new BSplitLayout methods.

Since clamping the index for these methods could lead to confusing side effects, we'll just avoid the clamping, and let things segfault when the programmer goes out of bounds.

Closes #7902


# 7b27c8fc4112c2c92d69d3be5cc41db45dfe02f8 17-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Adjust method naming.


# 6beb27d4a1043bcd3a4cf2b3250d2c2548760642 16-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Add {Get,Set}ItemVisible() accessors and setters.


# 6d16dcfa0c61f3719850f6f67174a0df848edeb4 16-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Add GetCollapsible() accessor to BSplitView/Layout.


# 8151838e3892d0a18d89d73e2cc37e1f5d01264d 02-Nov-2011 Alex Wilson <yourpalal2@gmail.com>

Add FBC padding to all (I think..) of the visible Layout related classes.


# b38ea98f527e2d4a610e9891a10d19ddc9bc00c1 16-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

Devirtualize BLayout::InvalidateLayout(), add a protected hook BLayout::DoLayout(). This will allow for much better control over the propagation of layout invalidations, and therefore cleaner, more optimal code.


# 4e0131f51ba30445ab5b48d57ad45564cf6617d1 09-Sep-2011 Alex Wilson <yourpalal2@gmail.com>

Rename BLayout::DerivedLayoutItems() to DoLayout(), which is consistent with BView::DoLayout(). Also adjusted child classes and documentation.


# 813147df835cb6637d8d2bbf737f96b5056898e6 09-Jun-2011 Alex Wilson <yourpalal2@gmail.com>

* Add new SetInsets() methods to BTwoDimensionalLayout, BSplitView
* Also add equivalent methods to the layout builders in LayoutBuilder.h
* BSplitView now calls BControlLook::ComposeSpacing(), instead of BSplitLayout
* part of #7447


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42077 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6648dd3cf1597c4fcae16fcfa76270f3acda90b6 07-Jun-2011 Alex Wilson <yourpalal2@gmail.com>

* Add new spacing/inset constants for the layout API. For now, leave B_USE_DEFAULT_SPACING, but this will go soon.
* Rename BControlLook::ComposeItemSpacing() to ComposeSpacing(), and extend it to handle the new constants.
* Adjust users of BControlLook::ComposeItemSpacing() accordingly.
* part of #7447


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42025 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 71947e478cafc7f379801e26e097fbdc6cd122f8 15-Feb-2011 Alex Wilson <yourpalal2@gmail.com>

When unarchiving a BSplitLayout, initialize our members properly so that even if unarchiving fails, the object is in a usable state. Fixes CID 10045.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40522 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 82ab3167232c5c8ee53e684eddc83dc7cb60f1cc 02-Sep-2010 Alex Wilson <yourpalal2@gmail.com>

Add default spacing for Layouts (#5614)
* introduce B_USE_DEFAULT_SPACING, which works somewhat like B_SIZE_UNSET and B_ALIGN_HORIZONTAL_UNSET
* introduce static float BControlLook::ComposeItemSpacing(float spacing), which checks uses be_control_look->DefaultItemSpacing().
* modify layouts to use BControlLook::ComposeItemSpacing() in SetInsets and SetSpacing methods.
* default insets are still 0, 0, 0, 0, but can be set to default spacing by passing B_USE_DEFAULT_SPACING
* I've found two regressions, patches incoming, please report others on #5614.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38512 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1eeda2bd42e2824fc1a01aedfabaf96e8636edcb 18-Aug-2010 Alex Wilson <yourpalal2@gmail.com>

Fix style violations I've commited in r38207 and r38251, the first pointed out by Ingo <- thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38252 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 352fb78f1f812b6c22e1cd0cca5b37e2f381954b 17-Aug-2010 Alex Wilson <yourpalal2@gmail.com>

Fix Gcc4 build error from my previous commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1d6c7b6cb6f46c2672074ff137a18833d4dd3041 17-Aug-2010 Alex Wilson <yourpalal2@gmail.com>

Big change deriving BLayout from BLayoutItem, and allowing viewless BLayouts.
a few highlights:
* BLayout now derives publicly from BLayoutItem
* Added BAbstractLayout class, which our layouts now derive from
* updated layout builders to avoid creating views when they don't need to
* updated layout classes
* updated AboutSystem to fix a little regression
* more details on #6407
* please tell me about any regressions, I've tried to find them all, but some
may have slipped by.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38207 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6829d4174ba57d752c8d470a55789112db477daf 29-Jul-2010 Alex Wilson <yourpalal2@gmail.com>

Update BLayout::ItemAdded() and BLayout::ItemRemoved() to take an int32 index parameter, and ItemAdded() to return a bool indicating success or failure. Update BLayout::AddItem() to take the result of ItemAdded() into account. Also update BLayout::AllUnarchived() to take this into account. In either situation, if ItemAdded() returns false, the item does not get added to the layout. Removed various TODOs about code that could be removed once this change was made. In BSplitLayout, an item's LayoutData was lazy-initialized, but would always be created during ItemAdded(). Now we create the LayoutData explicitly, so that we can catch failed memory allocations. Closes #5524.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37817 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4a254e4ddbb0aaeb909ecd68a8442c4302618050 27-Jul-2010 Alex Wilson <yourpalal2@gmail.com>

Generally, clean up new archiving constant names & strings to be consistent in all classes. Modify archiving constants to be const char* const (thanks Ingo). Also modify archiving in many classes to use less fields by storing more data in arrays and structs. The common min, max, and preferred sizes, for example are always stored in an array now. In BTwoDimensionalLayout and BSplitLayout, the insets are archived in a BRect. Also fixed a typo in BGridLayout which caused column info to be incorrect during archival.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37777 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b20c303bd523c342065dde47aa00532ee8f49a9 16-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Alex Wilson:
* Added archiving/unarchiving support.
* Coding style cleanup (some more by myself).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37548 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a0747aad3bb6204d11f634473eeced2d3f351875 29-Jun-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

After the first call to BView::InvalidateLayout() further invocations don't
invoke the layout's InvalidateLayout() anymore. This could cause problems when
the layout caches layout related information and also updates those on calls
other than LayoutView(). A call to such a method after an InvalidateLayout()
would mark the cached info valid and the layout would use the cached info
until the first InvalidateLayout() after the next LayoutView(), even if
BView::InvalidateLayout() had been called again in the meantime.

* Introduced a new method BView::ResetLayoutInvalidation(), which must be
called by layout implementations whenever they have updated their cached
information and need further InvalidateLayout() notifications.
* Adjusted the existing layout implementations to use the method.

Fixes bug #4047.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31316 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4aeb7a3cc2d01a2d21127d7dd8cf5594e6c1e141 23-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Made BTwoDimensionalLayout and BSplitLayout::GetInsets() const.
* Give access to BSplitLayout::SetInsets() and GetInsets() from BSplitView.
* Give access to BSplitView::SetInsets() from BSplitLayoutBuilder and
LayoutBuilder.
* Some automatic white-space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31197 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3756e25935e3b7daa1a47f9a34432933261fbb1e 20-Jun-2009 Rene Gollent <anevilyak@gmail.com>

GCC4 build fix.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31139 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1f9fd6d866bff084e6792bccc52d6eefd9470f7e 20-Jun-2009 Stephan Aßmus <superstippi@gmx.de>

* Added BSplitView drawing code to ControlLook.
* BSplitView uses ControlLook to draw itself.
* Small refactoring in SplitLayout to implement IsAboveSplitter(BPoint).
* BSplitView updates the view cursor when the mouse is above a splitter.
* Standard splitter size is now 6 pixels, which is a bit easer to hit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6eb09230bae52bcdf045e1f1920b67205c29adc8 01-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

* Resolve further warnings on GCC4.
* Enable -Werror on GCC4 builds as well (limited to the same selected targets).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29118 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60558ed93ba0c661575de8529c4ffdbab981cf70 15-Sep-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

SplitLayout.h is a local header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22234 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a19a660a78afa845a9d54d5b2edd135257334658 12-May-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the BSize(const BRect&) constructor and added BRect::Size()
instead. Also added a BRect(BPoint, BSize) constructor.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21120 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9ecf9d1c1d4888d341a6eac72112c72d1ae3a4cb 26-Aug-2006 Ingo Weinhold <ingo_weinhold@gmx.de>

Merge from layout management branch.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96