History log of /haiku/src/kits/interface/Button.cpp
Revision Date Author Comments
# 3e37877f 07-Apr-2023 John Scipione <jscipione@gmail.com>

BButton: Remove button label margins

... to prevent label truncation on BeControlLook,
BDH Calc, and some other places.

Fixes #16570

Change-Id: I68d8b64a631e116d3180c96be1fb5681de86fda6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6310
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# e0380860 26-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

BButton: Adjust the spacing and minimum values to use LabelSpacing.

Seems to fix the last part of #16180.


# 9a0cae9d 04-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

BButton: Use BControlLook for label spacing instead of a constant.

This gets button proportions under HiDPI much closer to the ones
under a default font size. Still not quite there yet, though.


# de9c53f8 12-Jul-2016 looncraz <looncraz@looncraz.net>

BButton: Revert to using B_CONTROL_TEXT_COLOR for text.

Fixes #12604.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
The switch to using HighColor() was made in the "Set*UIColor" commit,
but as some applications set it for some reason, it broke BeOS compatibility.


# d2d239f4 09-Jan-2016 looncraz <looncraz@looncraz.net>

Improve BButton Color Adaptability

View color now shows through, so we keep the view color in sync with the
parent to act as the button background color. The low color is used to
determine the button color. The high color is used to determine the
button label color.

The default low and high colors are the control background and text colors,
respectfully. To maintain the identical appearance as before, the default
control background color is tinted to match the default panel background
color. As the color has a gradient applied anyway, no one will notice a
difference while playing with custom control colors.

Fixes #12568.

Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>


# c9bd4d84 06-Jan-2016 looncraz <looncraz@looncraz.net>

Interface Kit: Correct button colors.

What appeared to be multiple issues was just one issue: BButton was drawing the
control background color for its border, whereas the previous system drew the
control low color, which was the parent's view color.

Neither is correct, no border should be drawn at all.

This made it appear that the default button was larger than it was and also
made it appear that some apps had a "white" border around the buttons.

In addition, BButton can now use the default BControl color behavior and
BButton exclusively adopt either parental or system colors without worrying
about the case in which another view has set the button's view color manually.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 7a96554c 09-Dec-2015 looncraz <looncraz@looncraz.net>

kits/interface: Convert to using Set*UIColor.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Patches 0003-0017 from looncraz, unmodified.


# 7c3d316b 14-Jun-2015 Adrien Destugues <pulkomandy@gmail.com>

Style fixes.


# 83a02adb 22-May-2015 Stefano Ceccherini <stefano.ceccherini@gmail.com>

BButton: Fix hover status glitch
A BButton didn't lose its hover status when another window partially covered
it and the mouse cursor left its bounds rectangle.
Check for B_EXITED_VIEW in MouseMoved to fix the problem.
This fixes ticket #11962. Thanks to X512 for the analysis of the problem.


# 1f424632 11-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to IK, focus on docs


# 8ad6baf7 28-May-2014 John Scipione <jscipione@gmail.com>

BButton style fixes for docs.

No functional change intended.


# a631719f 24-Apr-2014 John Scipione <jscipione@gmail.com>

BButton style fixes


# a0848a19 29-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add optional pop-up marker

* Add behavior constant B_POP_UP_BEHAVIOR which adds a pop-up marker
to the button (similar to that of BMenuField).
* Add methods [Set]PopUpMessage(). To set/get the the message that is
sent to the button's target when the pop-up marker is clicked.


# 813c5772 29-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Removed dead code

Remove methods _DrawDefault() and _DrawFocusLine() which were used for
the non-BControlLook drawing.


# b998f9f0 28-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add support for toggle button behavior

Add methods SetBehavior(), Behavior(). Supported behavior constants are
B_BUTTON_BEHAVIOR -- normal button behavior -- and B_TOGGLE_BEHAVIOR
-- toggle button behavior.


# a249edfb 28-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add flat property

* Add methods SetFlat()/IsFlat(). A flat button doesn't draw its frame,
unless the mouse is hovering over it or it is otherwise activated.
* As a side effect this change also activates the hover glow that was
already implemented in BControlLook, but not activated in BButton.


# 5414b3c4 22-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Move icon related constants to InterfaceDefs.h

There will be non-BControl views to use those as well.


# fe878769 21-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add icon support

* Remove non-BControlLook drawing code. It's just an annoyance to
maintain.
* Update Draw() and _ValidatePreferredSize() to add icon support.


# be436742 21-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BControl subclasses: Override SetIcon()

... and implement Perform() action for potential later use.


# 8adaa6c5 26-Feb-2012 Jerome Duval <jerome.duval@gmail.com>

interface kit: added compatibility symbols for GCC4

* InvalidateLayout method for BBox, BButton, BCheckBox, BMenuField,
BScrollView, BSlider, BStringView, BTextControl.


# 3e2017d2 11-Feb-2012 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Some cleanup in interface kit. From unused code warnings (before I updated buildtools).


# f6c8d242 19-Dec-2011 Rene Gollent <anevilyak@gmail.com>

Use the correct perform invocation for these functions.


# 466f2b8f 18-Dec-2011 Rene Gollent <anevilyak@gmail.com>

Add compatibility symbols for removed LayoutChanged() calls.


# eee4243d 20-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

De-virtualize BView::InvalidateLayout() and introduce LayoutInvalidated() hook, like BLayout.


# a66b66ff 13-Apr-2010 Stephan Aßmus <superstippi@gmx.de>

* When inside a layouted environment, InvalidateLayout() in MakeDefault()
instead of just resizing.
* When the view thinks it knows the correct size, it needs to
ResetLayoutInvalidation(). TODO: Actually all views that cache layout size
info need to do this.


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


# 861e4437 13-Feb-2010 Stephan Aßmus <superstippi@gmx.de>

If we already figured out the correct low colow to use in AttachedToWindow(),
we might as well use it. Couldn't see any regressions so far.


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


# 681c2e44 25-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

The button and menu field draw routines take a background color into account,
which makes the resessed frame blend better with the surroundings. This can
be seen best in Keymap, where a different color is set on some buttons, but
the resessed frame should still be the same across all those buttons.


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


# 62b9a2ce 24-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

* Header cleanup.
* Removed dead code which was for drawing a BButton like R5.


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


# ca4463c2 22-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

Small cleanup.


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


# 2f86ba45 15-Feb-2009 Stephan Aßmus <superstippi@gmx.de>

Implemented a new look for the Haiku interface controls. It was
overheard that they looked too ninety-ish.
TODO: The code behind this is work in progress. The basic idea
is to extract all drawing code into a new class BControlLook,
of which there is a global instance be_control_look, instantiated
in InterfaceDefs.cpp. At the moment, all the old drawing code is
still there, and the usage of be_control_look is inside if-bodies
checking the instance against NULL. In another words, by not
instanitating be_control_look, you can revert back to the old look.
BControlLook's job is to provide reusable methods for drawing
certain types of frames, backgrounds and labels, so that application
developers can make controls that re-use the same drawing code
as built-in controls and adopt to changes made there. I have added
the notion of "borders". Each of the frame drawing methods can be
made to draw certain borders only, which is supposed to help when
controls shall visually attach. This feature is not fully explored
at all ATM.
TODO: Update BColumnListView header view and BStringItem text
spacing. Update other apps where it makes sense to use BControlLook.
For the moment, only Tracker and LaunchBox are updated. More...
NOTE: The new look is not very radically different, so that existing
apps do not immediately look too ugly or out of place.


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


# eaccfb9d 14-Nov-2008 Axel Dörfler <axeld@pinc-software.de>

* Replaced some "new" with new(std::nothrow) where appropriate in our base
classes (BView, BWindow, BAlert, BButton - BTextView should be part of this,
too, to make BAlerts work).
* However, it's not that simple, because there is often no way to return an
error. Most of that code obviously assumes to be able to throw exceptions
(it's just not communicated to the caller). Maybe we should just start
documenting exceptions for R1 (and properly use exceptions later on).
* Automatic white space cleanup.


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


# 39fbf550 15-Oct-2008 Oliver Tappe <zooey@hirschkaefer.de>

bonefish + zooey:
* Fixed a general problem with respect to overriding of the reserved
virtual function slots: instead of statically invoking the method
that corresponds to the reserved slot on the class that contains the
slot, we now invoke the virtual Perform() method. Perform() then dispatches
the method invocation to the "proper" class, i.e. the highest class in the
hierarchy that actually implements the requested method.
This fixes a crash in apps that use liblayout's MSlider class and
should fix one or other spurious bug with old apps or libraries, too.
* added new header folder 'binary_compatibility' that contains files that
define the method codes and data structures required by Perform()
* looked for and implemented all used reserved virtual slot functions to
invoke Perform() where necessary or to pass on the method call statically
(for slots that were already maintained by Be)


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


# 4d2baf30 15-Jul-2008 Stephan Aßmus <superstippi@gmx.de>

* Small coding style improvements.
* fPreferredSize was not initialized for the archive constructor.
* Added comment to archive constructor, because I was wondering how
the default button status was reconstructed or the archive code path.


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


# 6bef4a07 09-Jun-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added default value for message in two arguments constructor.
* Removed resizing to minimum height in layout-friendly constructors.
* Cache preferred size.
* Implemented all of Min/Max/PreferredSize().


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


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

BButton needs B_FULL_UPDATE_ON_RESIZE despite the fact that it isn't
resizable by default.


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


# 0a5c585a 28-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

There is a B_CONTROL_TEXT_COLOR after all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19134 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


# a1a53649 29-Apr-2006 Stephan Aßmus <superstippi@gmx.de>

corrected slightly weird passing on of flags to the BControl constructor

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


# ccf81dc9 16-Feb-2006 Stephan Aßmus <superstippi@gmx.de>

* made the button height proportional to the font
size instead of having a fixed spacing... should
be more asthetical.


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


# a71c9607 01-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* BControl::SetValue() now calls Invalidate() again - not doing so would
break compatibility a bit too much (as this is a public class).
* Instead, we're now using the same mechanism as in Dano/Zeta, that is,
we use BControl::SetValueNoUpdate() in the inherited classes.
* Minor cleanup.


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


# fe161a07 29-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

tweaked the button look to have somewhat smoother corners and a cleaner disabled look

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


# a289cd31 06-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

slightly improved look

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


# 8196fa8d 23-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* now accepts NULL arguments for "width" and "height" in GetPreferredSize()
* minor cleanup.


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


# e1d08bc6 14-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

when using enter or space to invoke a button, have the button snooze a mikrod to make sure the visuals get across

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


# fbb143cd 12-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

a new look, the old one is still there and disabled by an ifdef, so it should be easy to return back to the old look should the new one cause any heart attacks. I tried to remind of the Haiku heritage go from there.

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


# 9daa1363 09-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Be on the safe side.

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


# 049818e0 30-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Style changes, license change, added all the authors.
BTW, I forgot to say (in the previous commit) that the Button's label is also truncated if neede, so it doesn't go out of the button's bounds. If you don't like it, remove it.

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


# f9399379 30-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Refactored BButton::Draw(), fixed some small glitches, visible when the focus was changing. Moved drawing of the focus line to its own method.
Patch contributed by Ivan Tonizza.

Note that BControl::IsFocusChanging() seems to always return false under haiku.

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


# 0c3344f4 03-Jun-2005 Stephan Aßmus <superstippi@gmx.de>

no Invalidate in BControl::SetValue, I figure more controls need to be updated for this change

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


# b28c58d1 23-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Fixed "HButton" typos


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


# 76f106fb 23-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Removed duplicate code in drawing functions, fixed drawing of text when button is default, fixed drawing of text when button is disabled.


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


# 33413e49 23-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Fixed focus line drawing to draw the white underline and to not draw the focus line if the window containing the button is not active.


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


# e940fe05 02-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Fixed button so that it stays depressed when mouse button is down, changed to support click and drag-off, centered button label vertically as Be's version is centered. Still need to add white line below focus line, need to verify the button's value is set at the correct times, need to verify that invoke is being used properly, need to test behavior and drawing when button is disabled.


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


# 3ceb31b9 30-Jul-2004 DarkWyrm <darkwyrm@gmail.com>

Pahtz's changes from PortLink/BSession/PortMessage/PortQueue to BPortLink


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


# 47bc8348 29-Apr-2003 Marc Flerackers <mflerackers@nowhere.fake>

*** empty log message ***


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


# ac6f7aa8 23-Jan-2003 Marc Flerackers <mflerackers@nowhere.fake>

Lots of fixes, geometry calculations updated, added buffered BSlider support


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


# f45d1cc7 14-Nov-2002 Marc Flerackers <mflerackers@nowhere.fake>

Compatibility changes


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


# bf1b4e29 25-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

Changed drawing, again


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


# 1b7f1150 01-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

Put back lost changes


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


# a0cbca4f 01-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

SetLowColor before DrawString


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


# 3cfbf2cf 02-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

Fixed default button functions and drawing


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


# 52a38012 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


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


# 7c3d316b5d40cad94bb86e96784b135d6522cd2a 14-Jun-2015 Adrien Destugues <pulkomandy@gmail.com>

Style fixes.


# 83a02adb5caf9e2318716261aded066f51b8c5d5 22-May-2015 Stefano Ceccherini <stefano.ceccherini@gmail.com>

BButton: Fix hover status glitch
A BButton didn't lose its hover status when another window partially covered
it and the mouse cursor left its bounds rectangle.
Check for B_EXITED_VIEW in MouseMoved to fix the problem.
This fixes ticket #11962. Thanks to X512 for the analysis of the problem.


# 1f424632be5dcad5b81a23080eb205ab6471cd7b 11-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to IK, focus on docs


# 8ad6baf7893767740da0453a627dec3388855488 28-May-2014 John Scipione <jscipione@gmail.com>

BButton style fixes for docs.

No functional change intended.


# a631719fb4dfdc322d52e128fa96c488dfd6c689 24-Apr-2014 John Scipione <jscipione@gmail.com>

BButton style fixes


# a0848a191693aac77d3301a13dc59a27114acaa7 29-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add optional pop-up marker

* Add behavior constant B_POP_UP_BEHAVIOR which adds a pop-up marker
to the button (similar to that of BMenuField).
* Add methods [Set]PopUpMessage(). To set/get the the message that is
sent to the button's target when the pop-up marker is clicked.


# 813c5772c980f2f3830eb32ea7e4562df6f51905 29-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Removed dead code

Remove methods _DrawDefault() and _DrawFocusLine() which were used for
the non-BControlLook drawing.


# b998f9f02ffad9b683d9e66074d1a3a0510d301a 28-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add support for toggle button behavior

Add methods SetBehavior(), Behavior(). Supported behavior constants are
B_BUTTON_BEHAVIOR -- normal button behavior -- and B_TOGGLE_BEHAVIOR
-- toggle button behavior.


# a249edfbfc6a699a22052faccd3bcdf21ee9e042 28-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add flat property

* Add methods SetFlat()/IsFlat(). A flat button doesn't draw its frame,
unless the mouse is hovering over it or it is otherwise activated.
* As a side effect this change also activates the hover glow that was
already implemented in BControlLook, but not activated in BButton.


# 5414b3c44504c37c66798e0c467b0cd259a3e62e 22-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Move icon related constants to InterfaceDefs.h

There will be non-BControl views to use those as well.


# fe8787698c2a7ddc1f79d3bf645303ab7052e553 21-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BButton: Add icon support

* Remove non-BControlLook drawing code. It's just an annoyance to
maintain.
* Update Draw() and _ValidatePreferredSize() to add icon support.


# be4367428b6478ae059614d7a9b6f6dc721e5dcb 21-Dec-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BControl subclasses: Override SetIcon()

... and implement Perform() action for potential later use.


# 8adaa6c54487cab1d200592bb2d5aca44ba2039b 26-Feb-2012 Jerome Duval <jerome.duval@gmail.com>

interface kit: added compatibility symbols for GCC4

* InvalidateLayout method for BBox, BButton, BCheckBox, BMenuField,
BScrollView, BSlider, BStringView, BTextControl.


# 3e2017d24e3912c42e583a508caea971a195f666 11-Feb-2012 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Some cleanup in interface kit. From unused code warnings (before I updated buildtools).


# f6c8d242946d814ca47bca8eb49219979f009686 19-Dec-2011 Rene Gollent <anevilyak@gmail.com>

Use the correct perform invocation for these functions.


# 466f2b8f997acaecf0397f9f1c8b36a2b1fc5a4e 18-Dec-2011 Rene Gollent <anevilyak@gmail.com>

Add compatibility symbols for removed LayoutChanged() calls.


# eee4243d35225a35d0964ebebe94490eaca14261 20-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

De-virtualize BView::InvalidateLayout() and introduce LayoutInvalidated() hook, like BLayout.


# a66b66ff5a18b7d94086be474ded390d6b6fb8a9 13-Apr-2010 Stephan Aßmus <superstippi@gmx.de>

* When inside a layouted environment, InvalidateLayout() in MakeDefault()
instead of just resizing.
* When the view thinks it knows the correct size, it needs to
ResetLayoutInvalidation(). TODO: Actually all views that cache layout size
info need to do this.


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


# 861e4437b1ff3c09cb746e1fe66a5983ccf59598 13-Feb-2010 Stephan Aßmus <superstippi@gmx.de>

If we already figured out the correct low colow to use in AttachedToWindow(),
we might as well use it. Couldn't see any regressions so far.


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


# 681c2e4425073000c01c9c97237d2615d226f401 25-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

The button and menu field draw routines take a background color into account,
which makes the resessed frame blend better with the surroundings. This can
be seen best in Keymap, where a different color is set on some buttons, but
the resessed frame should still be the same across all those buttons.


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


# 62b9a2ce0e628aab8e7f94f4b0412edd23ee9d7e 24-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

* Header cleanup.
* Removed dead code which was for drawing a BButton like R5.


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


# ca4463c2961d011787260448058254da74aeb53f 22-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

Small cleanup.


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


# 2f86ba45579bdc9648b232175f87edc62ab71b54 15-Feb-2009 Stephan Aßmus <superstippi@gmx.de>

Implemented a new look for the Haiku interface controls. It was
overheard that they looked too ninety-ish.
TODO: The code behind this is work in progress. The basic idea
is to extract all drawing code into a new class BControlLook,
of which there is a global instance be_control_look, instantiated
in InterfaceDefs.cpp. At the moment, all the old drawing code is
still there, and the usage of be_control_look is inside if-bodies
checking the instance against NULL. In another words, by not
instanitating be_control_look, you can revert back to the old look.
BControlLook's job is to provide reusable methods for drawing
certain types of frames, backgrounds and labels, so that application
developers can make controls that re-use the same drawing code
as built-in controls and adopt to changes made there. I have added
the notion of "borders". Each of the frame drawing methods can be
made to draw certain borders only, which is supposed to help when
controls shall visually attach. This feature is not fully explored
at all ATM.
TODO: Update BColumnListView header view and BStringItem text
spacing. Update other apps where it makes sense to use BControlLook.
For the moment, only Tracker and LaunchBox are updated. More...
NOTE: The new look is not very radically different, so that existing
apps do not immediately look too ugly or out of place.


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


# eaccfb9dd09b53c1f2788f527cbaaa01db037de9 14-Nov-2008 Axel Dörfler <axeld@pinc-software.de>

* Replaced some "new" with new(std::nothrow) where appropriate in our base
classes (BView, BWindow, BAlert, BButton - BTextView should be part of this,
too, to make BAlerts work).
* However, it's not that simple, because there is often no way to return an
error. Most of that code obviously assumes to be able to throw exceptions
(it's just not communicated to the caller). Maybe we should just start
documenting exceptions for R1 (and properly use exceptions later on).
* Automatic white space cleanup.


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


# 39fbf5509b8740d9883b61649027478dc8a3ead8 15-Oct-2008 Oliver Tappe <zooey@hirschkaefer.de>

bonefish + zooey:
* Fixed a general problem with respect to overriding of the reserved
virtual function slots: instead of statically invoking the method
that corresponds to the reserved slot on the class that contains the
slot, we now invoke the virtual Perform() method. Perform() then dispatches
the method invocation to the "proper" class, i.e. the highest class in the
hierarchy that actually implements the requested method.
This fixes a crash in apps that use liblayout's MSlider class and
should fix one or other spurious bug with old apps or libraries, too.
* added new header folder 'binary_compatibility' that contains files that
define the method codes and data structures required by Perform()
* looked for and implemented all used reserved virtual slot functions to
invoke Perform() where necessary or to pass on the method call statically
(for slots that were already maintained by Be)


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


# 4d2baf30dfbd8154b94d7b6dedd9073ebfa48fee 15-Jul-2008 Stephan Aßmus <superstippi@gmx.de>

* Small coding style improvements.
* fPreferredSize was not initialized for the archive constructor.
* Added comment to archive constructor, because I was wondering how
the default button status was reconstructed or the archive code path.


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


# 6bef4a07d6fc59653894b0246ba78629f8a01fdc 09-Jun-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added default value for message in two arguments constructor.
* Removed resizing to minimum height in layout-friendly constructors.
* Cache preferred size.
* Implemented all of Min/Max/PreferredSize().


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


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

BButton needs B_FULL_UPDATE_ON_RESIZE despite the fact that it isn't
resizable by default.


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


# 0a5c585a92a559a24603510af72646441bee43d2 28-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

There is a B_CONTROL_TEXT_COLOR after all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19134 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


# a1a536495ab1ae126742dfb5d37a535d8b48c872 29-Apr-2006 Stephan Aßmus <superstippi@gmx.de>

corrected slightly weird passing on of flags to the BControl constructor

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


# ccf81dc9d22618d9d2dee418cba1d50441435e26 16-Feb-2006 Stephan Aßmus <superstippi@gmx.de>

* made the button height proportional to the font
size instead of having a fixed spacing... should
be more asthetical.


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


# a71c960755b6e636ce99639c700d3415788c7b41 01-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

* BControl::SetValue() now calls Invalidate() again - not doing so would
break compatibility a bit too much (as this is a public class).
* Instead, we're now using the same mechanism as in Dano/Zeta, that is,
we use BControl::SetValueNoUpdate() in the inherited classes.
* Minor cleanup.


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


# fe161a07404331343af2442e3044a69e9535c336 29-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

tweaked the button look to have somewhat smoother corners and a cleaner disabled look

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


# a289cd317fd2154877074a21eb0feaf06704d77a 06-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

slightly improved look

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


# 8196fa8da42c9fa2019f116a6e0228c7def7e2d6 23-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* now accepts NULL arguments for "width" and "height" in GetPreferredSize()
* minor cleanup.


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


# e1d08bc65b225d65042c662f1267ca5a2b029ab5 14-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

when using enter or space to invoke a button, have the button snooze a mikrod to make sure the visuals get across

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


# fbb143cdedbd8faac2cce746579d6540de53b53e 12-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

a new look, the old one is still there and disabled by an ifdef, so it should be easy to return back to the old look should the new one cause any heart attacks. I tried to remind of the Haiku heritage go from there.

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


# 9daa13637a152ecc0e7905720e75e9f37aeefd8f 09-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Be on the safe side.

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


# 049818e016bd95db3efcc57db34a5f72c05060a2 30-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Style changes, license change, added all the authors.
BTW, I forgot to say (in the previous commit) that the Button's label is also truncated if neede, so it doesn't go out of the button's bounds. If you don't like it, remove it.

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


# f9399379509357c78f8b0eff75324092b64286bc 30-Jun-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Refactored BButton::Draw(), fixed some small glitches, visible when the focus was changing. Moved drawing of the focus line to its own method.
Patch contributed by Ivan Tonizza.

Note that BControl::IsFocusChanging() seems to always return false under haiku.

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


# 0c3344f4a18959a347e6ed9d58fc31976b72d6b4 03-Jun-2005 Stephan Aßmus <superstippi@gmx.de>

no Invalidate in BControl::SetValue, I figure more controls need to be updated for this change

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


# b28c58d13d7209130064890d36be159aa79b46e8 23-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Fixed "HButton" typos


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


# 76f106fb04b224d2976a0e623f1b6a653f547919 23-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Removed duplicate code in drawing functions, fixed drawing of text when button is default, fixed drawing of text when button is disabled.


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


# 33413e498b40717349c0f9b2ccebe8e8d5bb5ac3 23-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Fixed focus line drawing to draw the white underline and to not draw the focus line if the window containing the button is not active.


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


# e940fe0597052563c9afb2727e82c19bbfa10f5a 02-Jan-2005 Matthew Wilber <mwilber@nowhere.fake>

Fixed button so that it stays depressed when mouse button is down, changed to support click and drag-off, centered button label vertically as Be's version is centered. Still need to add white line below focus line, need to verify the button's value is set at the correct times, need to verify that invoke is being used properly, need to test behavior and drawing when button is disabled.


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


# 3ceb31b96aefa3601ccc51e415da557b00155d4f 30-Jul-2004 DarkWyrm <darkwyrm@gmail.com>

Pahtz's changes from PortLink/BSession/PortMessage/PortQueue to BPortLink


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


# 47bc8348eac8d0e3bd3aa35f88d528394bf304ed 29-Apr-2003 Marc Flerackers <mflerackers@nowhere.fake>

*** empty log message ***


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


# ac6f7aa8506e964f35eb1c1107aea80ae7d06d18 23-Jan-2003 Marc Flerackers <mflerackers@nowhere.fake>

Lots of fixes, geometry calculations updated, added buffered BSlider support


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


# f45d1cc7e4d2696194105b90f103ce4c5252c112 14-Nov-2002 Marc Flerackers <mflerackers@nowhere.fake>

Compatibility changes


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


# bf1b4e292635a1bdfaaa9e17348a2f52984f10d4 25-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

Changed drawing, again


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


# 1b7f1150630a41f559552f6fca9b6afead8ad23e 01-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

Put back lost changes


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


# a0cbca4f9ffc7b17bae6882c42e80b8f8c307ae3 01-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

SetLowColor before DrawString


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


# 3cfbf2cf23e220924ecb5d7bef810cd4cb4a1503 02-Oct-2002 Marc Flerackers <mflerackers@nowhere.fake>

Fixed default button functions and drawing


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


# 52a380120846174213ccce9c4aab0dda17c72083 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


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