summaryrefslogtreecommitdiff
path: root/src/Fl_Scroll.cxx
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2025-12-01 22:58:13 +0100
committerAlbrecht Schlosser <albrechts.fltk@online.de>2025-12-01 23:06:37 +0100
commitfeed81e124fe5fd07854e9ab2066beddb0ea8fc9 (patch)
tree9f2a466dd3a531d0f1022abd78f13da473df538c /src/Fl_Scroll.cxx
parent5a6a7eb009cde5c0613418a11b0fb637f0cd9468 (diff)
Fix more box drawing stuff - using Fl::box_bg(box())
The biggest changes are in src/Fl_Scroll.cxx where most of the changes are caused only by formatting (alignment). The behavior is the same for all boxtypes that had been covered by the old switch/case code and should be improved for other FL_*_FRAME boxtypes that had been ignored.
Diffstat (limited to 'src/Fl_Scroll.cxx')
-rw-r--r--src/Fl_Scroll.cxx47
1 files changed, 16 insertions, 31 deletions
diff --git a/src/Fl_Scroll.cxx b/src/Fl_Scroll.cxx
index e90809d1f..f64dbb952 100644
--- a/src/Fl_Scroll.cxx
+++ b/src/Fl_Scroll.cxx
@@ -147,42 +147,27 @@ int Fl_Scroll::delete_child(int index) {
}
// Draw widget's background and children within a specific clip region
-// So widget can just redraw damaged parts.
+// so widget can just redraw damaged parts.
//
void Fl_Scroll::draw_clip(void* v,int X, int Y, int W, int H) {
fl_push_clip(X,Y,W,H);
- Fl_Scroll* s = (Fl_Scroll*)v;
- // erase background as needed...
- switch (s->box()) {
- case FL_NO_BOX :
- case FL_UP_FRAME :
- case FL_DOWN_FRAME :
- case FL_THIN_UP_FRAME :
- case FL_THIN_DOWN_FRAME :
- case FL_ENGRAVED_FRAME :
- case FL_EMBOSSED_FRAME :
- case FL_BORDER_FRAME :
- case _FL_SHADOW_FRAME :
- case _FL_ROUNDED_FRAME :
- case _FL_OVAL_FRAME :
- case _FL_PLASTIC_UP_FRAME :
- case _FL_PLASTIC_DOWN_FRAME :
- if (s->parent() == (Fl_Group *)s->window() && Fl::scheme_bg_) {
- Fl::scheme_bg_->draw(X-(X%((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->w()),
- Y-(Y%((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->h()),
- W+((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->w(),
- H+((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->h());
- break;
- }
+ Fl_Scroll *s = (Fl_Scroll*)v;
- default :
- if (s->active_r())
- fl_color(s->color());
- else
- fl_color(fl_inactive(s->color()));
- fl_rectf(X,Y,W,H);
- break;
+ // erase background as needed...
+ if (!Fl::box_bg(s->box()) && (s->parent() == (Fl_Group *)s->window() && Fl::scheme_bg_)) {
+ Fl::scheme_bg_->draw(X - (X%((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->w()),
+ Y - (Y%((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->h()),
+ W + ((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->w(),
+ H + ((Fl_Tiled_Image *)Fl::scheme_bg_)->image()->h());
+ } else {
+ if (s->active_r())
+ fl_color(s->color());
+ else
+ fl_color(fl_inactive(s->color()));
+ fl_rectf(X,Y,W,H);
}
+
+ // draw visible children
Fl_Widget*const* a = s->array();
for (int i=s->children()-2; i--;) {
Fl_Widget& o = **a++;