diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2025-12-01 22:58:13 +0100 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2025-12-01 23:06:37 +0100 |
| commit | feed81e124fe5fd07854e9ab2066beddb0ea8fc9 (patch) | |
| tree | 9f2a466dd3a531d0f1022abd78f13da473df538c /src/Fl_Scroll.cxx | |
| parent | 5a6a7eb009cde5c0613418a11b0fb637f0cd9468 (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.cxx | 47 |
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++; |
