diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2012-05-08 23:15:49 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2012-05-08 23:15:49 +0000 |
| commit | 1956dc2ab7ba876a1c5e6c627a38733b4847fc9d (patch) | |
| tree | aab5340567f5f6f78a89cb7a5c400055936a2e94 /src/display/sp-canvas.cpp | |
| parent | Follow-up conversion from bool. (diff) | |
| download | inkscape-1956dc2ab7ba876a1c5e6c627a38733b4847fc9d.tar.gz inkscape-1956dc2ab7ba876a1c5e6c627a38733b4847fc9d.zip | |
Fix drawing of eek-preview in GTK+3
(bzr r11348)
Diffstat (limited to 'src/display/sp-canvas.cpp')
| -rw-r--r-- | src/display/sp-canvas.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 22aad2442..8fa6d5f5a 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -19,7 +19,10 @@ # include <config.h> #endif +#if !WITH_GTKMM_3_0 #include <gdkmm/region.h> +#endif + #include "helper/sp-marshal.h" #include <2geom/rect.h> #include <2geom/affine.h> @@ -2002,25 +2005,41 @@ gint SPCanvasImpl::handleExpose(GtkWidget *widget, GdkEventExpose *event) return FALSE; } +#if GTK_CHECK_VERSION(3,0,0) + int n_rects = cairo_region_num_rectangles(event->region); +#else int n_rects = 0; GdkRectangle *rects = NULL; gdk_region_get_rectangles(event->region, &rects, &n_rects); + + if(rects == NULL) + return FALSE; +#endif - if ((rects == NULL) || (n_rects == 0)) + if (n_rects == 0) { return FALSE; } else { for (int i = 0; i < n_rects; i++) { +#if GTK_CHECK_VERSION(3,0,0) + cairo_rectangle_int_t rectangle; + cairo_region_get_rectangle(event->region, i, &rectangle); +#else + GdkRectangle rectangle = rects[i]; +#endif + Geom::IntRect r = Geom::IntRect::from_xywh( - rects[i].x + canvas->x0, rects[i].y + canvas->y0, - rects[i].width, rects[i].height); + rectangle.x + canvas->x0, rectangle.y + canvas->y0, + rectangle.width, rectangle.height); canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom()); } - + +#if !GTK_CHECK_VERSION(3,0,0) g_free (rects); +#endif return FALSE; } } |
