aboutsummaryrefslogtreecommitdiff
path: root/dw
diff options
context:
space:
mode:
Diffstat (limited to 'dw')
-rw-r--r--dw/fltkviewbase.cc16
-rw-r--r--dw/fltkviewport.cc6
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();
}