summaryrefslogtreecommitdiff
path: root/libs/canvas
diff options
context:
space:
mode:
Diffstat (limited to 'libs/canvas')
-rw-r--r--libs/canvas/canvas.cc20
1 files changed, 10 insertions, 10 deletions
diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc
index baa10f9cf7..7415478b60 100644
--- a/libs/canvas/canvas.cc
+++ b/libs/canvas/canvas.cc
@@ -1197,19 +1197,19 @@ GtkCanvas::request_redraw (Rect const & request)
return;
}
- Rect real_area;
-
- Coord const w = width ();
- Coord const h = height ();
-
/* clamp area requested to actual visible window */
- real_area.x0 = max (0.0, min (w, request.x0));
- real_area.x1 = max (0.0, min (w, request.x1));
- real_area.y0 = max (0.0, min (h, request.y0));
- real_area.y1 = max (0.0, min (h, request.y1));
+ Rect real_area = request.intersection (visible_area());
+
+ if (real_area) {
+ if (real_area.width () && real_area.height ()) {
+ // Item intersects with visible canvas area
+ queue_draw_area (real_area.x0, real_area.y0, real_area.width(), real_area.height());
+ }
- queue_draw_area (real_area.x0, real_area.y0, real_area.width(), real_area.height());
+ } else {
+ // Item does not intersect with visible canvas area
+ }
}
/** Called to request that we try to get a particular size for ourselves.