summaryrefslogtreecommitdiff
path: root/src/Fl_Browser_.cxx
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2009-04-02 06:44:34 +0000
committerGreg Ercolano <erco@seriss.com>2009-04-02 06:44:34 +0000
commitbb20a128f271d5d26497af7eacc2bf5b78fa22d5 (patch)
tree3ca09f9b440161e2c8401cce1e08679948999403 /src/Fl_Browser_.cxx
parenteb6b632b0ace98947907ffb8546b85fb4331c91c (diff)
Fl_Browser mods for scrollbar sizing
1) Moved Fl::scrollbar_size() implementation from Fl_Browser_ to Fl:: 2) Modified Fl_Browser as per fltk.dev discussions: * Deprecate Fl_Browser scrollbar_width() method * Introduce Fl_Browser scrollbar_size() method with global fallback behavior * Docs for above Todo: Make similar changes to other scrollbar oriented widgets git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6737 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Browser_.cxx')
-rw-r--r--src/Fl_Browser_.cxx60
1 files changed, 17 insertions, 43 deletions
diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx
index 91c8b4e1c..ed5641b41 100644
--- a/src/Fl_Browser_.cxx
+++ b/src/Fl_Browser_.cxx
@@ -67,36 +67,6 @@ static void hscrollbar_callback(Fl_Widget* s, void*) {
((Fl_Browser_*)(s->parent()))->hposition(int(((Fl_Scrollbar*)s)->value()));
}
-// Scrollbar size should be part of the Fl class, but is left here for
-// binary compatibility in 1.1.x - M. Sweet
-int Fl_Browser_::scrollbar_width_ = 16;
-
-/**
- Gets the default scrollbar size used by
- Fl_Browser_,
- Fl_Help_View,
- Fl_Scroll, and
- Fl_Text_Display widgets.
- \returns The default size for widget scrollbars, in pixels.
- \todo The source code for this method needs to be moved from Fl_Browser_.cxx to Fl.cxx
-*/
-int Fl::scrollbar_size() {
- return Fl_Browser_::scrollbar_width();
-}
-
-/**
- Sets the default scrollbar size that is used by the
- Fl_Browser_,
- Fl_Help_View,
- Fl_Scroll, and
- Fl_Text_Display widgets.
- \param[in] W The new default size for widget scrollbars, in pixels.
- \todo The source code for this method needs to be moved from Fl_Browser_.cxx to Fl.cxx
-*/
-void Fl::scrollbar_size(int W) {
- Fl_Browser_::scrollbar_width(W);
-}
-
// return where to draw the actual box:
/**
Returns the bounding box for the interior of the list's display window, inside
@@ -105,19 +75,20 @@ void Fl::scrollbar_size(int W) {
(The original contents of these parameters are overwritten)
*/
void Fl_Browser_::bbox(int& X, int& Y, int& W, int& H) const {
+ int scrollsize = scrollbar_size_ ? scrollbar_size_ : Fl::scrollbar_size();
Fl_Boxtype b = box() ? box() : FL_DOWN_BOX;
X = x()+Fl::box_dx(b);
Y = y()+Fl::box_dy(b);
W = w()-Fl::box_dw(b);
H = h()-Fl::box_dh(b);
if (scrollbar.visible()) {
- W -= scrollbar_width_;
- if (scrollbar.align() & FL_ALIGN_LEFT) X += scrollbar_width_;
+ W -= scrollsize;
+ if (scrollbar.align() & FL_ALIGN_LEFT) X += scrollsize;
}
if (W < 0) W = 0;
if (hscrollbar.visible()) {
- H -= scrollbar_width_;
- if (scrollbar.align() & FL_ALIGN_TOP) Y += scrollbar_width_;
+ H -= scrollsize;
+ if (scrollbar.align() & FL_ALIGN_TOP) Y += scrollsize;
}
if (H < 0) H = 0;
}
@@ -141,15 +112,16 @@ int Fl_Browser_::leftedge() const {
\param[in] X,Y,W,H The new position and size for the browser, in pixels.
*/
void Fl_Browser_::resize(int X, int Y, int W, int H) {
+ int scrollsize = scrollbar_size_ ? scrollbar_size_ : Fl::scrollbar_size();
Fl_Widget::resize(X, Y, W, H);
// move the scrollbars so they can respond to events:
bbox(X,Y,W,H);
scrollbar.resize(
- scrollbar.align()&FL_ALIGN_LEFT ? X-scrollbar_width_ : X+W,
- Y, scrollbar_width_, H);
+ scrollbar.align()&FL_ALIGN_LEFT ? X-scrollsize : X+W,
+ Y, scrollsize, H);
hscrollbar.resize(
- X, scrollbar.align()&FL_ALIGN_TOP ? Y-scrollbar_width_ : Y+H,
- W, scrollbar_width_);
+ X, scrollbar.align()&FL_ALIGN_TOP ? Y-scrollsize : Y+H,
+ W, scrollsize);
}
// Cause minimal update to redraw the given item:
@@ -483,11 +455,12 @@ J1:
}
// update the scrollbars and redraw them:
+ int scrollsize = scrollbar_size_ ? scrollbar_size_ : Fl::scrollbar_size();
int dy = top_ ? item_quick_height(top_) : 0; if (dy < 10) dy = 10;
if (scrollbar.visible()) {
scrollbar.damage_resize(
- scrollbar.align()&FL_ALIGN_LEFT ? X-scrollbar_width_ : X+W,
- Y, scrollbar_width_, H);
+ scrollbar.align()&FL_ALIGN_LEFT ? X-scrollsize : X+W,
+ Y, scrollsize, H);
scrollbar.value(position_, H, 0, full_height_);
scrollbar.linesize(dy);
if (drawsquare) draw_child(scrollbar);
@@ -495,8 +468,8 @@ J1:
}
if (hscrollbar.visible()) {
hscrollbar.damage_resize(
- X, scrollbar.align()&FL_ALIGN_TOP ? Y-scrollbar_width_ : Y+H,
- W, scrollbar_width_);
+ X, scrollbar.align()&FL_ALIGN_TOP ? Y-scrollsize : Y+H,
+ W, scrollsize);
hscrollbar.value(hposition_, W, 0, full_width_);
hscrollbar.linesize(dy);
if (drawsquare) draw_child(hscrollbar);
@@ -506,7 +479,7 @@ J1:
// draw that little square between the scrollbars:
if (drawsquare && scrollbar.visible() && hscrollbar.visible()) {
fl_color(parent()->color());
- fl_rectf(scrollbar.x(), hscrollbar.y(), scrollbar_width_,scrollbar_width_);
+ fl_rectf(scrollbar.x(), hscrollbar.y(), scrollsize, scrollsize);
}
real_hposition_ = hposition_;
@@ -964,6 +937,7 @@ Fl_Browser_::Fl_Browser_(int X, int Y, int W, int H, const char* L)
has_scrollbar_ = BOTH;
max_width = 0;
max_width_item = 0;
+ scrollbar_size_ = 0;
redraw1 = redraw2 = 0;
end();
}