summaryrefslogtreecommitdiffstats
path: root/src/display/sp-canvas.cpp
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-05-08 23:15:49 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-05-08 23:15:49 +0000
commit1956dc2ab7ba876a1c5e6c627a38733b4847fc9d (patch)
treeaab5340567f5f6f78a89cb7a5c400055936a2e94 /src/display/sp-canvas.cpp
parentFollow-up conversion from bool. (diff)
downloadinkscape-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.cpp27
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;
}
}