History log of /haiku/src/kits/interface/ScrollBar.cpp
Revision Date Author Comments
# 409d65c0 01-May-2021 Pascal Abresch <nep@packageloss.eu>

Decorator: Introduce Scroll bar size call

Change-Id: I07f08c2893d832e431c29ae753e0a93d6e619701
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3892
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: X512 <danger_mail@list.ru>


# 369abf3b 09-Dec-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

Have a minimum size for scrollbars

With small font sizes, the scrollbars don't need to get smaller than 14
pixels. So, don't allow the scaling to go below 1.


# 8539dfda 06-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

BScrollBar: Use the minimum as the preferred size in the alternate axis.

This was the behavior before the commit yesterday that unified the
two methods of computing the preferred size. It seems some applications
expect this to be callable without a window lock, so this works when
the other method does not.

Fixes #16372.


# bdfb3cd7 05-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

BScrollBar: Report a more correct maximum size.

This way, BScrollBar will now be scaled appropriately when used
within layouts, as it is in e.g. Tracker.


# b29bb4be 05-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

BScrollBar: Apply font scaling to preferred sizes.

As BScrollView has already been adjusted to use this, most applications
will now have properly scaled scrollbars on HiDPI systems.

All unadjusted controls and applications will still be able to use
the hard-coded constants as before, but these should eventually
be deprecated altogether and then removed.


# 9481a1ec 04-Jul-2020 Augustin Cavalier <waddlesplash@gmail.com>

BScrollBar: Unify PreferredSize computations.

Reduces code duplication. This should not significantly affect
actually computed sizes.


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

BScrollBar: Remove DISABLE_ON_WINDOW_DEACTIVATION constant.

It was always enabled, and disabling it would break ABI.
If we want to make it disable-able, it needs to be a setting,
but I don't really see a reason for that.


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

BScrollBar: Move SCROLL_BAR_{...}_KNOB_SIZE constants into the source.

They were not used anywhere else in the tree anyway. Resolves a TODO.


# 494e2564 04-May-2020 John Scipione <jscipione@gmail.com>

BScrollBar: Redraw scroll bar button on click

DrawScrollBarButton passes B_ACTIVATED flag to HaikuControlLook which
draws the button as down.

This regression was introduced in hrev54032.

Fixes #15960

Change-Id: I87dbaa9e8c9169c67dd7cb463d3604d9727ae28f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2577
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 1482b250 04-Mar-2020 John Scipione <jscipione@gmail.com>

IK: Update scroll bars for alternative control look

Scroll bars should look and work identically to before on
HaikuControlLook.

Add DrawScrollBarButton() and DrawScrollBarThumb() and
DrawScrollBarBorder() methods. These methods are used to draw scroll
bars in a generic way so that they can be drawn differently by alternative
control look's (e.g. BeControlLook). Also it gives us back drawing of
scroll bar knobs. However the knob setting is not exposed in the
interface in this commit.

These methods are in addition to the 2 existing DrawScrollBarBackground()
methods that draw the scroll bar background. One draws the area above and
below the thumb and the other is called by the first to actually draw the
area.

The rest of the drawing besides the backgrounds was being done in
BScrollBar before. To draw the scroll bar arrows and thumb we were recyling
other ControlLook methods, while this worked well enough on HaikuControlLook
it wasn't flexible enough for alternative control looks.

DrawScrollBarButton() is used to draw the four scroll buttons and is
typically (so far) used in combination with DrawArrowShape().

DrawScrollBarThumb() draws the scroll bar thumb.

DrawScrollBarBorder() draws a 1px border around the entire scroll bar,
potentially B_KEYBOARD_NAVIGATION_COLOR if focused (although this is
feature not currently used.)

Draw unscrollable scroll bars as if they were disabled including the
buttons with their arrow shapes, background, and thumb.

Add FBC backwords compatibility macros in ControlLook.cpp

Change-Id: I9237c5ce45d17d674785111d51de951e5686306b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/351
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 6967695c 24-Jul-2019 Adrien Destugues <pulkomandy@pulkomandy.tk>

PVS V547: always false comparisons

Change-Id: I1c7790ff0aa537b974bdc0fd65d76f277ea5f8cf
Reviewed-on: https://review.haiku-os.org/c/1647
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# fe66a314 22-Jul-2018 waddlesplash <waddlesplash@gmail.com>

Revert "BScrollBar: Add lines and dots knob styles to scroll bar"

This reverts commit ec1b18c58ae632444200f7e1f952ddd2e31048fa.

This was not well enough reviewed, and it seems that at least some
consumers of the old API (e.g. WebPositive) need more than the new one provides.

Change-Id: Ie7ad1fc70dab889922424298661504b00f66d31d


# ec1b18c5 14-Jul-2018 John Scipione <jscipione@gmail.com>

BScrollBar: Add lines and dots knob styles to scroll bar

Fixes #9137

Move scroll bar drawing into HaikuControlLook

Added B_SCROLLABLE flag to BControlLook

Update FakeScrollBar in Appearance to also draw using HaikuControlLook.

Focus works on scroll bars again, used by FakeScrollBar... and probably
nowhere else.

Added private _ScrollingEnabled() convenience method to BScrollBar and
use it in a few places making.

Create ScrollBarPrivate.h header to share a couple of scroll bar related
enums with HaikuControlLook that come from BeOS Scroll Bar prefs.

Stuff arrow_direction enum into BScrollBar::Private as it has been
succeeded by a similar enum already present in BControlLook and is only
around now for BScrollBar::Private::DrawScrollBarButton.

Change-Id: Idc31ee41de091ba45ded2f0315a004af00143803


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

Style fixes to IK, focus on docs


# 1d09e9ce 29-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

BScrollbar: remove unused field.

* Nothing ever reads fTargetName in the scrollbar code, so remove the
field.
* Frees one reserved slot, and a little memory, as the target name was
copied with strdup.


# 5d98ee1e 08-Mar-2014 John Scipione <jscipione@gmail.com>

Revert "BScrollView: Increase small scroll step size from 1 to 3"

This reverts commit bdcfc076173236ddecccfebd945530a309debdce.


# bdcfc076 07-Mar-2014 John Scipione <jscipione@gmail.com>

BScrollView: Increase small scroll step size from 1 to 3

... and then don't multiply by 3 in BView


# b7929c05 07-Mar-2014 John Scipione <jscipione@gmail.com>

BScrollBar: style fixes, update copyright header


# 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.


# 9f24981a 05-Apr-2013 John Scipione <jscipione@gmail.com>

Add B_SCROLL_BAR_THUMB_COLOR constant.

This allows you to change the scrollbar thumb color in Appearance preferences.
The default color is 216, 216, 216 so the scroll bar thumb looks the same by
default. Perhaps someday this can be updated to something a bit more colorful.


# dca92a6c 03-Mar-2013 Ryan Leavengood <leavengood@gmail.com>

Removed unused colors from BScrollBar Draw.


# f9b1a47f 03-Mar-2013 Ryan Leavengood <leavengood@gmail.com>

Use be_control_look for BScrollBar and FakeScrollBar.

Remove all code which checks for be_control_look being NULL.

Also fix the DrawArrowShape method in be_control_look so the arrow is aligned,
as per the previous commit. In addition the code to offset the arrow when the
scroll button is pressed was unnecessary.

There is still some room for improvement, and I am not happy with the
BControlLook behavior here, as noted in some TODOs.


# 8a920099 02-Mar-2013 Ryan Leavengood <leavengood@gmail.com>

Fix Scrollbar arrow button alignment.

The arrow symbol on the right and down buttons was off by one pixel.

Because of the resurrected FakeScrollbar in the Appearance preflet I had to
change this code in two places, which makes me unhappy. This needs to be pulled
into BControlLook.

Fixes #9104.


# 95a11c76 25-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Style fix.


# fdb61e98 25-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Don't allow setting a scrollbar position to nan.

Since nan != nan, the scrollbar would otherwise try to move the view to
the new position, the view would try to set the scrollbar value again,
and so on.


# 21f50d63 03-Nov-2012 Oliver Tappe <zooey@hirschkaefer.de>

Use SHIFT to accelerate scrolling via the bar arrows.


# b5446310 04-Nov-2012 John Scipione <jscipione@gmail.com>

Remove the scroll bar knobs and corresponding setting


# a4f0328e 02-Nov-2012 John Scipione <jscipione@gmail.com>

Rename hextent and vextent to knobWidth and knobHeight


# dfa8cf8c 02-Nov-2012 John Scipione <jscipione@gmail.com>

Change SCROLL_KNOB_* constants to B_SCROLL_KNOB_*


# 4b5a6861 01-Nov-2012 John Scipione <jscipione@gmail.com>

Add the scrollbar constants enum to the header.

Also make some minor tweaks in ScrollBar.cpp


# 51e2ba81 31-Oct-2012 John Scipione <jscipione@gmail.com>

Variable name refactoring. They are knobs, not marks


# a0e61cdf 31-Oct-2012 John Scipione <jscipione@gmail.com>

Implement BeOS style scrollbar knobs.

Not hooked up to a setting yet.


# 57c5b09e 05-Aug-2012 Ryan Leavengood <leavengood@gmail.com>

Use be_control_look != NULL everywhere in the Interface Kit.

Should not be a functional change. It is not in the Haiku Coding Guidelines but
I feel like 'if (object != NULL)' is generally preferred to 'if (object)', plus
in this case of be_control_look that is the more common style.


# 9f5864ab 24-Jun-2012 Ryan Leavengood <leavengood@gmail.com>

Handle the scroll wheel changing over scrollbars.

* Extract the scrollbar change based on the mouse wheel delta into a protected
method of BView.
* Call that method from BScrollBar's MessageReceived.

With this change it is now a bit easier to scroll horizontally around the
system by putting the mouse cursor over a horizontal scrollbar and using the
wheel.

Fixes #8631.


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

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


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

Small coding style fixes.


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


# 01618252 19-Oct-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed an annoying problem with the scroll bar repeat feature. If you clicked
a button or within the bar background within the timeout for the repeat-thread,
the thread would exit and there would be no repeating. I think there is still
a race condition somewhere since I managed to see it stall once again, probably
because it locks the looper twice in the loop...


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


# 89208c77 27-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Finished unifying the Interface Kit headers:
* Fixed copyrights (puncuation and capitalization, removed authors from
headers)
* Updated indentation style
* Unified pointer/reference style
* Re-ordered some methods for better grouping where it could be done
(abd adopted source accordingly)
* Small coding style fixes here and there

No functional change intended.

+alphabranch


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


# a7ed06ce 02-May-2009 Philippe Saint-Pierre <stpere@gmail.com>

There was an "off by one" error in the routine used to detect if a click was inside the arrow buttons.

Reported by mmadia in ticket #3611. Thanks!


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


# 4ab94faa 22-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

The BMessage constructor of BScrollBar had a couple of rather important
omissions.


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


# da34a085 21-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Do not scale the scroll bar thumb size between min size and max size, but
between 0 and max size and restrict to min size afterwards. This leads to more
consistent behavior and a more reasonable scroll bar size until the minimum
size is reached. And it also fixes #3801. Probably also fixes the bug where
some Pe windows could not be scrolled, or only scrolled very little. I assume
this because a special trick is used for proportional scroll bars in Pe. It
does not set the proportion, but only large steps and then the proportion is
calculated from that. But since the minimum size was not taken into account
before, it would have exactly this inconsistency. Since the size now ranges
from 0 to max, this should now be in sync. But I didn't have a Pe window handy
which exposed this bug to confirm my assumption...


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


# 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


# 21bb6bd2 13-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

* Update header indentation.
* Added BScrollBar::SetOrientation().
* Improved _DrawArrowButton() to have a good visual result even when the
scroll bar does not have the standard width or height.


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


# 1b047148 10-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

Added layout friendly constructor (untested).


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


# 7bf5abf4 10-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

Implemented BSize returning layout methods.


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


# 749a3c1e 28-Jul-2008 Stephan Aßmus <superstippi@gmx.de>

Scrollbars do not need a pointer history.


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


# 188ba2f7 21-Jun-2008 Stephan Aßmus <superstippi@gmx.de>

* SetTarget((BView*)NULL) needs to unset the previous target's pointer to
the scrollbar.
* Added notes about BeOS behavior to SetTarget(const char*).
* Reuse SetTarget(NULL) in the destructor.
* Initialize fTarget and fTargetName in the archive constructor.
* Added TODO about possibly restoring the target in the archive constructor.


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


# 6d4ab8b0 09-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- The bug in Tracker (previous commit) uncovered a bug in BScrollBar's thumb positioning. The + 1.0 was well intented and produced the right effect unless fMax-fMin was too close to 1.0. It could
leave a unusable gap on the right (or down) of the thumb.


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


# 205cf95f 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

More cleanup, disabled accidentally left on tracing.


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


# 2f8dc045 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

More style cleanup.


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


# 1158eeac 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

According to my tests on R5, a BScrollBar with a proportion of 0.0, the value
that it has when you never set it, uses the large step to figure out the
proportion it should display. This fixes Pe's scroll bars to display the
"correct" proportion. Of course the proportion is only correct if the large
step indeed equals the page size. Fixes #1758.


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


# c2234e05 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

* Added optional tracing to ScrollBar.cpp.
* Fixed line breaks to not exceed 80 char limit.
* Removed any trailing spaces.


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


# 6a1d169c 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

* Removed trailing spaces in ScrollBar.h
* It's not a good idea to archive fProportion as int32, seeing it's a float
on [0..1].
* Implemented archive constructor for BScrollBar. Untested.


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


# 96726e7e 05-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

* Applied Stefano's patch to fix bug #1241; BScrollBar::SetValue() did not work
correctly for out of bounds values.
* BView::ScrollBy() now limits itself to what eventually attached scroll bars allow;
this fixes the problem Stefano was observing after having applied his patch.
* Reenabled the limit check in BScrollBar::SetProportion(); after the above fix, I
could not see any misbehaviour of Tracker anymore; IOW Tracker did not rely on
this before, it was just hiding another bug :)
* Minor cleanup in ScrollBar.cpp


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


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

Minor cleanup.


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


# e327ea52 30-Jan-2007 Waldemar Kornewald <wkornewald@nowhere.fake>

This should fix absolute scrolling when clicking on an area covered by the thumb.


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


# 280ff939 16-Nov-2006 Axel Dörfler <axeld@pinc-software.de>

Implemented absolute scrollbar setting via right mouse button as discussed on the list.


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


# eea29ee3 07-Nov-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fixed a warning

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


# 7e2e6a5d 06-Jun-2006 Jérôme Duval <korli@users.berlios.de>

fixed BStringView::GetSupportedSuites and BScrollBar::GetSupportedSuites


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


# 25f03a7b 31-May-2006 Stephan Aßmus <superstippi@gmx.de>

* avoid endless loop in some cases concerning scrolling with fractional coords
* detect invalid params to SetRange()


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


# a9efee30 03-May-2006 Stephan Aßmus <superstippi@gmx.de>

* removed left over debug output, sorry about that


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


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

long overdue fix for BScrollBar. fValue is now set in SetValue()
instead of ValueChanged(). This fixes BScrollBar implementations
which don't call the inherited version of ValueChanged(). All kinds
of weird behaviour seems to be fixed by this: StyledEdit window
resizing, scrolling in Pe, WonderBrush, eXposer and maybe more.


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


# 4fdedfbd 21-Apr-2006 Jérôme Duval <korli@users.berlios.de>

fixed some Archive() following stippi's path


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


# 3afffe04 26-Feb-2006 Stephan Aßmus <superstippi@gmx.de>

the thumb is more visible when the ScrollBar has the disabled look... my girlfriend suggested that so you all just have to accept it

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


# 2ec687d8 23-Jan-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

small corrections for BScrollBar and BScrollView

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


# 370aa510 30-Dec-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Scrollbars losed their target when detached. Once again, the problem showed up with BTabView

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


# 12b29b9f 10-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

forgot to add a comment

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


# a80bd605 10-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

through the methods of chaos programming, I hope I have finally got this right

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


# a04f5a1a 09-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

Now the scrollbar works much more like the R5 scrollbar:
* prevents the target view from being scrolled out of range
* handles Trackers completely confused usage of scrollbars

There is just one problem with Tracker's horizontal scrollbar
scrolling the title view much further than it should, which I
will look into tomorrow...


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


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

remove left over debugging output

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


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

All controls/views now accept NULL arguments for "width" and "height" in GetPreferredSize().


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


# f4cee9d5 15-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

fix the FBC problem, as Ingo pointed out, derived classes contain slots for all virtuals defined in the base class, therefor, it is ok to just define WindowActivated for BScrollBar. The only problem is that BScrollBar::WindowActivated() cannot be called from apps having overridden WindowActivated() in a BScrollBar subclass of their own.

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


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

* drawing is on the road to perfection
* uses another virtual to implement WindowActivated() and draw itself in
disabled look just like in R5
* fixed _ButtonRectFor() off by one errors
* tiny problems remain when clicking on the ScrollBar (it is shifted)
* the _ValueFor() might not be perfect


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


# 9068e077 07-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

fixes thumb frame for 100% proportion

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


# 4f34cedf 06-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

also contains code and ideas from Stefano

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


# 5083a8d5 06-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

stunning improvements to drawing, completely removed flickering, only minor visual problems remain, maybe needs testing with regard to targeted views being removed or the scrollbar being removed etc

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


# e3aa5a9a 07-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

simplified the arrow look, still needs improvements, but I think they are better than before, some small display bugs remain, as well as some flickering, but no show-stopper

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


# 7dc436d8 07-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

usability improvements to scrollbar, sorry had no time to include all of Stefanos drawing code yet, other visual improvements

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


# b6257a8b 03-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed build with debugging enabled.

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


# 96f6ef63 03-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The bar and knob frame are now calculated. That way we god rid of some billions fPrivateData->fThumbFrame.OffsetBy() calls

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


# 862b0a4b 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Improved the look. Note that we still don't differentiate between enabled and disabled scrollbars

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


# 72f32cca 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed two bugs: 1. one doubled arrow scrolled in the wrong direction. 2. When the mouse exited the view while scrolling, the scrollbar would stopped scrolling.

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


# 3e054be1 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

removed debug printfs

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


# 4e4f2dcb 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Huge cleanup. We use a BMessageRunner instead of a thread.

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


# 7505732a 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Draw() -> Invalidate(). small color fix.

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


# 0ee76eaf 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More work on scrollbars. Some refactoring.

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


# 6fc5bc53 01-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed build. The 'nice' thing is that it worked on r5 (even with our app_server) as the function is present in the header (just not implemented in our libbe).

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


# 29e998ce 01-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some missing bits, removed small leftover

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


# 267b7214 01-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Started integration of new drawing code. Still so much work to do. Simplified some parts of the code. Scrollbars are broken in many ways, need refactoring

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


# dec3c805 16-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

No uses B_OP_OVER when drawing the arrows - this fixes the broken look
due to anti-aliasing. Have I mentioned that the arrows are very ugly
anyway right now, and don't match the rest of the look? :-)
Fixed a crashing bug in the "pressed button repeater" - it didn't lock
the looper when scrolling the view.


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


# 62d51012 30-May-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Converted ScrollBar.cpp to our style guide (more or less),
Renamed the private BScrollBarPrivateData class to be an internal BScrollBar's class (so it doesn't clobber the global namespace).
Added a ToDO item. Not a functional change.

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


# 423a41b8 21-May-2005 DarkWyrm <darkwyrm@gmail.com>

BScrollBar now sets the internal BView scrollbar pointers


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


# da0209e2 08-Oct-2004 DarkWyrm <darkwyrm@gmail.com>

Some fixes and tweaks by Kevin Field


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


# 56262fb4 11-Dec-2003 DarkWyrm <darkwyrm@gmail.com>

Implemented a few functions, added some documentation and some TODO reminders


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


# f30761e5 16-Nov-2003 DarkWyrm <darkwyrm@gmail.com>

Last-minute tweaks to fix control_scrollbar()'s Set Double command


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


# 9107dffa 16-Nov-2003 DarkWyrm <darkwyrm@gmail.com>

Converted display and interaction with scrollbar buttons from using BViews to having them be part of the scrollbar itself
Double and single modes should look the right way


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


# 745d0b4a 15-Nov-2003 DarkWyrm <darkwyrm@gmail.com>

Implemented a function to allow for R1's prefs to work like R5's
Serious speedups on redraw - needs a little more work
Added the beginnings of thumb tracking
Implemented rapid-fire small-step scrolling when holding down a scroll button
Tweaks to button-drawing code


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


# 40564fea 09-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Added license and header


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


# 30fd5147 14-May-2003 haydentech <haydentech@nowhere.fake>

Minor header-related changes


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


# 5b75be94 14-May-2003 haydentech <haydentech@nowhere.fake>

Default args allowed only in header (not implementation) with gcc 3.X


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


# 1f4c5bcd 30-Dec-2002 DarkWyrm <darkwyrm@gmail.com>

Check in of some (very) rudimentary client-based BScrollBar code


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


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

Style fixes to IK, focus on docs


# 1d09e9cee35bb74028ac9a23379b8419076bec1c 29-Apr-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

BScrollbar: remove unused field.

* Nothing ever reads fTargetName in the scrollbar code, so remove the
field.
* Frees one reserved slot, and a little memory, as the target name was
copied with strdup.


# 5d98ee1e4de58d0228a387ba1962e0bf9bd0f749 08-Mar-2014 John Scipione <jscipione@gmail.com>

Revert "BScrollView: Increase small scroll step size from 1 to 3"

This reverts commit bdcfc076173236ddecccfebd945530a309debdce.


# bdcfc076173236ddecccfebd945530a309debdce 07-Mar-2014 John Scipione <jscipione@gmail.com>

BScrollView: Increase small scroll step size from 1 to 3

... and then don't multiply by 3 in BView


# b7929c057493bb4c4505cf2fdad06b4395b8cd59 07-Mar-2014 John Scipione <jscipione@gmail.com>

BScrollBar: style fixes, update copyright header


# 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.


# 9f24981a56edba10807b550b521563b0cadd12c7 05-Apr-2013 John Scipione <jscipione@gmail.com>

Add B_SCROLL_BAR_THUMB_COLOR constant.

This allows you to change the scrollbar thumb color in Appearance preferences.
The default color is 216, 216, 216 so the scroll bar thumb looks the same by
default. Perhaps someday this can be updated to something a bit more colorful.


# dca92a6c75716c3572e1a37c8a96947c6c3188b3 03-Mar-2013 Ryan Leavengood <leavengood@gmail.com>

Removed unused colors from BScrollBar Draw.


# f9b1a47fa329a440024cfcb45a82841ff6961f42 03-Mar-2013 Ryan Leavengood <leavengood@gmail.com>

Use be_control_look for BScrollBar and FakeScrollBar.

Remove all code which checks for be_control_look being NULL.

Also fix the DrawArrowShape method in be_control_look so the arrow is aligned,
as per the previous commit. In addition the code to offset the arrow when the
scroll button is pressed was unnecessary.

There is still some room for improvement, and I am not happy with the
BControlLook behavior here, as noted in some TODOs.


# 8a9200992e8faad457261a888a8689f5aa4bfda7 02-Mar-2013 Ryan Leavengood <leavengood@gmail.com>

Fix Scrollbar arrow button alignment.

The arrow symbol on the right and down buttons was off by one pixel.

Because of the resurrected FakeScrollbar in the Appearance preflet I had to
change this code in two places, which makes me unhappy. This needs to be pulled
into BControlLook.

Fixes #9104.


# 95a11c765de55b451edd061a4b494ac363d893bd 25-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Style fix.


# fdb61e9836a604f056e74f47a739ffef3dc062eb 25-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Don't allow setting a scrollbar position to nan.

Since nan != nan, the scrollbar would otherwise try to move the view to
the new position, the view would try to set the scrollbar value again,
and so on.


# 21f50d63e6440f58af865849174a4639e6c6f0b6 03-Nov-2012 Oliver Tappe <zooey@hirschkaefer.de>

Use SHIFT to accelerate scrolling via the bar arrows.


# b5446310e961f84511a71964c4dca96ce6b7d2f9 04-Nov-2012 John Scipione <jscipione@gmail.com>

Remove the scroll bar knobs and corresponding setting


# a4f0328efe7fe56e8e49575eb31a0ac18b676c0b 02-Nov-2012 John Scipione <jscipione@gmail.com>

Rename hextent and vextent to knobWidth and knobHeight


# dfa8cf8c05bd7173fa5f25170bc297757175daab 02-Nov-2012 John Scipione <jscipione@gmail.com>

Change SCROLL_KNOB_* constants to B_SCROLL_KNOB_*


# 4b5a6861f2752fef9d2e48b8d8ab0d92ac4dfa09 01-Nov-2012 John Scipione <jscipione@gmail.com>

Add the scrollbar constants enum to the header.

Also make some minor tweaks in ScrollBar.cpp


# 51e2ba81f1f98fefaba618049b2df9202b93b561 31-Oct-2012 John Scipione <jscipione@gmail.com>

Variable name refactoring. They are knobs, not marks


# a0e61cdf4cb705110db0bb2138334e852a2d014d 31-Oct-2012 John Scipione <jscipione@gmail.com>

Implement BeOS style scrollbar knobs.

Not hooked up to a setting yet.


# 57c5b09e1a3d0f36f94cbab11c96842d782b8eaf 05-Aug-2012 Ryan Leavengood <leavengood@gmail.com>

Use be_control_look != NULL everywhere in the Interface Kit.

Should not be a functional change. It is not in the Haiku Coding Guidelines but
I feel like 'if (object != NULL)' is generally preferred to 'if (object)', plus
in this case of be_control_look that is the more common style.


# 9f5864ab093a8e363d1eba0405c57f0e2596b83a 24-Jun-2012 Ryan Leavengood <leavengood@gmail.com>

Handle the scroll wheel changing over scrollbars.

* Extract the scrollbar change based on the mouse wheel delta into a protected
method of BView.
* Call that method from BScrollBar's MessageReceived.

With this change it is now a bit easier to scroll horizontally around the
system by putting the mouse cursor over a horizontal scrollbar and using the
wheel.

Fixes #8631.


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

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


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

Small coding style fixes.


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


# 0161825261b75440c4de12514e89177d17c87beb 19-Oct-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed an annoying problem with the scroll bar repeat feature. If you clicked
a button or within the bar background within the timeout for the repeat-thread,
the thread would exit and there would be no repeating. I think there is still
a race condition somewhere since I managed to see it stall once again, probably
because it locks the looper twice in the loop...


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


# 89208c77f10235d43fda0c7b3fd6751db02cc12c 27-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Finished unifying the Interface Kit headers:
* Fixed copyrights (puncuation and capitalization, removed authors from
headers)
* Updated indentation style
* Unified pointer/reference style
* Re-ordered some methods for better grouping where it could be done
(abd adopted source accordingly)
* Small coding style fixes here and there

No functional change intended.

+alphabranch


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


# a7ed06ceddeb9aed57086437c48cfbdb509db5b4 02-May-2009 Philippe Saint-Pierre <stpere@gmail.com>

There was an "off by one" error in the routine used to detect if a click was inside the arrow buttons.

Reported by mmadia in ticket #3611. Thanks!


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


# 4ab94faa396c93d38103ef5db928a6f3e7161fbb 22-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

The BMessage constructor of BScrollBar had a couple of rather important
omissions.


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


# da34a08541c3e00ebe0751c2842a667118e11376 21-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Do not scale the scroll bar thumb size between min size and max size, but
between 0 and max size and restrict to min size afterwards. This leads to more
consistent behavior and a more reasonable scroll bar size until the minimum
size is reached. And it also fixes #3801. Probably also fixes the bug where
some Pe windows could not be scrolled, or only scrolled very little. I assume
this because a special trick is used for proportional scroll bars in Pe. It
does not set the proportion, but only large steps and then the proportion is
calculated from that. But since the minimum size was not taken into account
before, it would have exactly this inconsistency. Since the size now ranges
from 0 to max, this should now be in sync. But I didn't have a Pe window handy
which exposed this bug to confirm my assumption...


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


# 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


# 21bb6bd22b42b063faf25cb515e4be776462d3f6 13-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

* Update header indentation.
* Added BScrollBar::SetOrientation().
* Improved _DrawArrowButton() to have a good visual result even when the
scroll bar does not have the standard width or height.


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


# 1b0471487a3e284e8bb35d19837084ee0246657f 10-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

Added layout friendly constructor (untested).


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


# 7bf5abf4255abd43e4c6e82145b05682c99389ed 10-Sep-2008 Stephan Aßmus <superstippi@gmx.de>

Implemented BSize returning layout methods.


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


# 749a3c1ee31a35e4f7026a9dc6a92edd81277b8a 28-Jul-2008 Stephan Aßmus <superstippi@gmx.de>

Scrollbars do not need a pointer history.


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


# 188ba2f72a6dc6369d5cfe07374ffed12aece636 21-Jun-2008 Stephan Aßmus <superstippi@gmx.de>

* SetTarget((BView*)NULL) needs to unset the previous target's pointer to
the scrollbar.
* Added notes about BeOS behavior to SetTarget(const char*).
* Reuse SetTarget(NULL) in the destructor.
* Initialize fTarget and fTargetName in the archive constructor.
* Added TODO about possibly restoring the target in the archive constructor.


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


# 6d4ab8b00e7483ed9a9d3af0ae4a22bb04a9917a 09-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- The bug in Tracker (previous commit) uncovered a bug in BScrollBar's thumb positioning. The + 1.0 was well intented and produced the right effect unless fMax-fMin was too close to 1.0. It could
leave a unusable gap on the right (or down) of the thumb.


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


# 205cf95ff6eadd5bd17cd52744bbfa137de63573 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

More cleanup, disabled accidentally left on tracing.


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


# 2f8dc04583d945483a731b16f01f277b54faffc0 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

More style cleanup.


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


# 1158eeac58dd189fafad3289e463f6a43b21b550 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

According to my tests on R5, a BScrollBar with a proportion of 0.0, the value
that it has when you never set it, uses the large step to figure out the
proportion it should display. This fixes Pe's scroll bars to display the
"correct" proportion. Of course the proportion is only correct if the large
step indeed equals the page size. Fixes #1758.


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


# c2234e05982aedceb55b3d8485c52a5093ae041b 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

* Added optional tracing to ScrollBar.cpp.
* Fixed line breaks to not exceed 80 char limit.
* Removed any trailing spaces.


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


# 6a1d169c52c9378bb186c43b00c7c70e77eb85e3 06-Apr-2008 Stephan Aßmus <superstippi@gmx.de>

* Removed trailing spaces in ScrollBar.h
* It's not a good idea to archive fProportion as int32, seeing it's a float
on [0..1].
* Implemented archive constructor for BScrollBar. Untested.


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


# 96726e7e243b34f27590f7d2cbf5723e6d2e20be 05-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

* Applied Stefano's patch to fix bug #1241; BScrollBar::SetValue() did not work
correctly for out of bounds values.
* BView::ScrollBy() now limits itself to what eventually attached scroll bars allow;
this fixes the problem Stefano was observing after having applied his patch.
* Reenabled the limit check in BScrollBar::SetProportion(); after the above fix, I
could not see any misbehaviour of Tracker anymore; IOW Tracker did not rely on
this before, it was just hiding another bug :)
* Minor cleanup in ScrollBar.cpp


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


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

Minor cleanup.


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


# e327ea521ab83b7f8f8a14d41562c1d867499250 30-Jan-2007 Waldemar Kornewald <wkornewald@nowhere.fake>

This should fix absolute scrolling when clicking on an area covered by the thumb.


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


# 280ff9398ae118bff27dbffb486c495cf468d761 16-Nov-2006 Axel Dörfler <axeld@pinc-software.de>

Implemented absolute scrollbar setting via right mouse button as discussed on the list.


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


# eea29ee34b8d744c3e990a3d47ccc9d4c228a752 07-Nov-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fixed a warning

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


# 7e2e6a5d4ab01a7869ff5a4eabd8a3bf622151d2 06-Jun-2006 Jérôme Duval <korli@users.berlios.de>

fixed BStringView::GetSupportedSuites and BScrollBar::GetSupportedSuites


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


# 25f03a7bd8f8b219ae7cd8f3eb427b917c859be2 31-May-2006 Stephan Aßmus <superstippi@gmx.de>

* avoid endless loop in some cases concerning scrolling with fractional coords
* detect invalid params to SetRange()


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


# a9efee3047016dc9c2e207edf395506afd0126c5 03-May-2006 Stephan Aßmus <superstippi@gmx.de>

* removed left over debug output, sorry about that


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


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

long overdue fix for BScrollBar. fValue is now set in SetValue()
instead of ValueChanged(). This fixes BScrollBar implementations
which don't call the inherited version of ValueChanged(). All kinds
of weird behaviour seems to be fixed by this: StyledEdit window
resizing, scrolling in Pe, WonderBrush, eXposer and maybe more.


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


# 4fdedfbde40258f52c2778d1ca87131b6635fb5d 21-Apr-2006 Jérôme Duval <korli@users.berlios.de>

fixed some Archive() following stippi's path


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


# 3afffe04bb70c044672b61347b903ba79e2637c0 26-Feb-2006 Stephan Aßmus <superstippi@gmx.de>

the thumb is more visible when the ScrollBar has the disabled look... my girlfriend suggested that so you all just have to accept it

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


# 2ec687d889d0a904e828691c5bb35c5fa89d33be 23-Jan-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

small corrections for BScrollBar and BScrollView

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


# 370aa510902a7222dfa17d812fcf4e7679112c1e 30-Dec-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Scrollbars losed their target when detached. Once again, the problem showed up with BTabView

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


# 12b29b9f1a0069a398346a7d19172f80ae01a2bd 10-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

forgot to add a comment

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


# a80bd605226bf7cf473a3d70c910d069de974ef4 10-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

through the methods of chaos programming, I hope I have finally got this right

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


# a04f5a1a5b2b41807357c94d1a7e7d2cb9748e48 09-Dec-2005 Stephan Aßmus <superstippi@gmx.de>

Now the scrollbar works much more like the R5 scrollbar:
* prevents the target view from being scrolled out of range
* handles Trackers completely confused usage of scrollbars

There is just one problem with Tracker's horizontal scrollbar
scrolling the title view much further than it should, which I
will look into tomorrow...


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


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

remove left over debugging output

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


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

All controls/views now accept NULL arguments for "width" and "height" in GetPreferredSize().


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


# f4cee9d5f5ad8024e2553c79764cb9cbcd6695be 15-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

fix the FBC problem, as Ingo pointed out, derived classes contain slots for all virtuals defined in the base class, therefor, it is ok to just define WindowActivated for BScrollBar. The only problem is that BScrollBar::WindowActivated() cannot be called from apps having overridden WindowActivated() in a BScrollBar subclass of their own.

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


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

* drawing is on the road to perfection
* uses another virtual to implement WindowActivated() and draw itself in
disabled look just like in R5
* fixed _ButtonRectFor() off by one errors
* tiny problems remain when clicking on the ScrollBar (it is shifted)
* the _ValueFor() might not be perfect


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


# 9068e077ce72c76bd31469fef20a0b67a85b60c6 07-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

fixes thumb frame for 100% proportion

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


# 4f34cedfbad472fd3379d0fc7a2b74c559f5def0 06-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

also contains code and ideas from Stefano

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


# 5083a8d56da4a8b1c9a613317df36458b725e3fd 06-Nov-2005 Stephan Aßmus <superstippi@gmx.de>

stunning improvements to drawing, completely removed flickering, only minor visual problems remain, maybe needs testing with regard to targeted views being removed or the scrollbar being removed etc

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


# e3aa5a9a9ef9603aa5d9e5afa1a5f4c6b2e10cae 07-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

simplified the arrow look, still needs improvements, but I think they are better than before, some small display bugs remain, as well as some flickering, but no show-stopper

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


# 7dc436d8ddced8bde596634efe25ae5ceb11b704 07-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

usability improvements to scrollbar, sorry had no time to include all of Stefanos drawing code yet, other visual improvements

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


# b6257a8b3c469dfc61c5ec48539a894ea390bb14 03-Jul-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed build with debugging enabled.

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


# 96f6ef632c3c84788da1425fd2d4c09cf5b6a55a 03-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The bar and knob frame are now calculated. That way we god rid of some billions fPrivateData->fThumbFrame.OffsetBy() calls

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


# 862b0a4b4c956589b077f54b6dbeff1d63a6df67 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Improved the look. Note that we still don't differentiate between enabled and disabled scrollbars

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


# 72f32ccaf8febf7e74d72f0f4f7e32465a89d7c7 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed two bugs: 1. one doubled arrow scrolled in the wrong direction. 2. When the mouse exited the view while scrolling, the scrollbar would stopped scrolling.

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


# 3e054be14b7c5c10e502d9c72ddc8442d05536a6 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

removed debug printfs

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


# 4e4f2dcb55cb30e9faba140c0ac826ee24d8af84 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Huge cleanup. We use a BMessageRunner instead of a thread.

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


# 7505732a0c3786f352d5199fac113469ae37a218 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Draw() -> Invalidate(). small color fix.

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


# 0ee76eaf1223206dd9eba38492f807b0832ff115 02-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More work on scrollbars. Some refactoring.

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


# 6fc5bc53fa3fb4c4fd8f80a1b668faa618b1e0f7 01-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed build. The 'nice' thing is that it worked on r5 (even with our app_server) as the function is present in the header (just not implemented in our libbe).

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


# 29e998cec3e4a48aefe90040d05b82d761b7be75 01-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some missing bits, removed small leftover

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


# 267b7214308a965043f861511d8b90a64eebd57a 01-Jul-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Started integration of new drawing code. Still so much work to do. Simplified some parts of the code. Scrollbars are broken in many ways, need refactoring

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


# dec3c805d9d03443ca41436497fbae303dc1d19e 16-Jun-2005 Axel Dörfler <axeld@pinc-software.de>

No uses B_OP_OVER when drawing the arrows - this fixes the broken look
due to anti-aliasing. Have I mentioned that the arrows are very ugly
anyway right now, and don't match the rest of the look? :-)
Fixed a crashing bug in the "pressed button repeater" - it didn't lock
the looper when scrolling the view.


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


# 62d5101291730bc4d3a540397fc9a1aa9d671a95 30-May-2005 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Converted ScrollBar.cpp to our style guide (more or less),
Renamed the private BScrollBarPrivateData class to be an internal BScrollBar's class (so it doesn't clobber the global namespace).
Added a ToDO item. Not a functional change.

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


# 423a41b8cdcb8a5c4261228aaf315d136de5f0fe 21-May-2005 DarkWyrm <darkwyrm@gmail.com>

BScrollBar now sets the internal BView scrollbar pointers


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


# da0209e2e43016eb56fdb0aeabaf3206939b12cd 08-Oct-2004 DarkWyrm <darkwyrm@gmail.com>

Some fixes and tweaks by Kevin Field


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


# 56262fb48397c67b776e601a6ffe25f3ba5aa3ce 11-Dec-2003 DarkWyrm <darkwyrm@gmail.com>

Implemented a few functions, added some documentation and some TODO reminders


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


# f30761e5eef1b71d05720a0e7ea7cb4aa54029b2 16-Nov-2003 DarkWyrm <darkwyrm@gmail.com>

Last-minute tweaks to fix control_scrollbar()'s Set Double command


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


# 9107dffadcff1e0f468c2b9f473ea72af246b2da 16-Nov-2003 DarkWyrm <darkwyrm@gmail.com>

Converted display and interaction with scrollbar buttons from using BViews to having them be part of the scrollbar itself
Double and single modes should look the right way


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


# 745d0b4a95483db2bc9cded7fe06206e7e9282ac 15-Nov-2003 DarkWyrm <darkwyrm@gmail.com>

Implemented a function to allow for R1's prefs to work like R5's
Serious speedups on redraw - needs a little more work
Added the beginnings of thumb tracking
Implemented rapid-fire small-step scrolling when holding down a scroll button
Tweaks to button-drawing code


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


# 40564fead11bc909d729fd4afb7ccc1764778381 09-Jul-2003 DarkWyrm <darkwyrm@gmail.com>

Added license and header


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


# 30fd51473f390b92d40b3a3c83b25e2d4a042f08 14-May-2003 haydentech <haydentech@nowhere.fake>

Minor header-related changes


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


# 5b75be9487aae202fd2c9488072e3719bb858ac9 14-May-2003 haydentech <haydentech@nowhere.fake>

Default args allowed only in header (not implementation) with gcc 3.X


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


# 1f4c5bcd82ae570b503e71b1fbe5fe916784804b 30-Dec-2002 DarkWyrm <darkwyrm@gmail.com>

Check in of some (very) rudimentary client-based BScrollBar code


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