diff options
Diffstat (limited to 'dw')
-rw-r--r-- | dw/fltkviewbase.cc | 16 | ||||
-rw-r--r-- | dw/fltkviewport.cc | 6 |
2 files changed, 14 insertions, 8 deletions
diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc index 72983de0..a5cde27f 100644 --- a/dw/fltkviewbase.cc +++ b/dw/fltkviewbase.cc @@ -172,11 +172,19 @@ PORT1.3 exposeArea = NULL; } #endif - core::Rectangle r (rect->x, rect->y, rect->width, rect->height); + int X, Y, W, H; + + fl_clip_box(x () + translateCanvasXToViewX (rect->x), + y () + translateCanvasYToViewY (rect->y), + rect->width, + rect->height, + X, Y, W, H); + fl_color(bgColor); - fl_rectf(x () + translateCanvasXToViewX (rect->x), - y () + translateCanvasYToViewY (rect->y), - rect->width, rect->height); + fl_rectf(X, Y, W, H); + + core::Rectangle r (translateViewXToCanvasX (X - x ()), + translateViewYToCanvasY (Y - y ()), W, H); theLayout->expose (this, &r); } diff --git a/dw/fltkviewport.cc b/dw/fltkviewport.cc index a50be898..c423a3b9 100644 --- a/dw/fltkviewport.cc +++ b/dw/fltkviewport.cc @@ -179,10 +179,9 @@ void FltkViewport::draw () int d = damage(); if (d & FL_DAMAGE_SCROLL) { - Fl::damage (FL_DAMAGE_SCROLL); + clear_damage (FL_DAMAGE_SCROLL); fl_scroll(x(), y(), w () - hdiff, h () - vdiff, -scrollDX, -scrollDY, draw_area, this); - d &= ~FL_DAMAGE_SCROLL; - Fl::damage (d); + clear_damage (d & ~FL_DAMAGE_SCROLL); } if (d) { @@ -369,7 +368,6 @@ void FltkViewport::scrollTo (int x, int y) adjustScrollbarValues (); damage(FL_DAMAGE_SCROLL); - redraw(); theLayout->scrollPosChanged (this, scrollX, scrollY); positionChanged(); } |