const GValue *value, GParamSpec *pspec);
static void pixbuf_renderer_get_property(GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec);
+#if GTK_CHECK_VERSION(3,0,0)
+static gboolean pixbuf_renderer_draw(GtkWidget *widget, cairo_t *cr);
+#else
static gboolean pixbuf_renderer_expose(GtkWidget *widget, GdkEventExpose *event);
+#endif
static void pr_scroller_timer_set(PixbufRenderer *pr, gboolean start);
gobject_class->finalize = pixbuf_renderer_finalize;
- widget_class->expose_event = pixbuf_renderer_expose;
+#if GTK_CHECK_VERSION(3,0,0)
+ widget_class->draw = pixbuf_renderer_draw;
+#else
+ widget_class->expose_event = pixbuf_renderer_expose;
+#endif
g_object_class_install_property(gobject_class,
PROP_ZOOM_MIN,
NULL,
FALSE,
G_PARAM_READABLE | G_PARAM_WRITABLE));
-
+#if !GTK_CHECK_VERSION(3,0,0)
g_object_class_install_property(gobject_class,
PROP_DITHER_QUALITY,
g_param_spec_uint("dither_quality",
GDK_RGB_DITHER_MAX,
GDK_RGB_DITHER_NORMAL,
G_PARAM_READABLE | G_PARAM_WRITABLE));
-
+#endif
g_object_class_install_property(gobject_class,
PROP_SCROLL_RESET,
g_param_spec_uint("scroll_reset",
pr->scale = 1.0;
pr->aspect_ratio = 1.0;
+#if !GTK_CHECK_VERSION(3,0,0)
pr->dither_quality = GDK_RGB_DITHER_NORMAL;
+#endif
pr->scroll_reset = PR_SCROLL_RESET_TOPLEFT;
case PROP_ZOOM_EXPAND:
pr->zoom_expand = g_value_get_boolean(value);
break;
+#if !GTK_CHECK_VERSION(3,0,0)
case PROP_DITHER_QUALITY:
pr->dither_quality = g_value_get_uint(value);
break;
+#endif
case PROP_SCROLL_RESET:
pr->scroll_reset = g_value_get_uint(value);
break;
case PROP_ZOOM_EXPAND:
g_value_set_boolean(value, pr->zoom_expand);
break;
+#if !GTK_CHECK_VERSION(3,0,0)
case PROP_DITHER_QUALITY:
g_value_set_uint(value, pr->dither_quality);
break;
+#endif
case PROP_SCROLL_RESET:
g_value_set_uint(value, pr->scroll_reset);
break;
}
}
+#if GTK_CHECK_VERSION(3,0,0)
+
+static gboolean pixbuf_renderer_draw(GtkWidget *widget, cairo_t *cr)
+{
+ if (gtk_widget_is_drawable(widget))
+ {
+ if (gtk_widget_get_has_window(widget))
+ {
+ GdkRectangle area;
+ if (gdk_cairo_get_clip_rectangle(cr, &area))
+ {
+ pixbuf_renderer_paint(PIXBUF_RENDERER(widget), &area);
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+#else
static gboolean pixbuf_renderer_expose(GtkWidget *widget, GdkEventExpose *event)
{
#if GTK_CHECK_VERSION(2,20,0)
GdkRectangle area;
gdk_window_get_position(event->window, &area.x, &area.y);
-
area.x += event->area.x;
area.y += event->area.y;
area.width = event->area.width;
return FALSE;
}
+#endif
/*
*-------------------------------------------------------------------
if (GTK_WIDGET_REALIZED(box))
#endif
{
+#if !GTK_CHECK_VERSION(3,0,0)
gdk_window_clear(gtk_widget_get_window(box));
+#endif
pr->renderer->overlay_draw(pr->renderer, 0, 0, pr->viewport_width, pr->viewport_height);
if (pr->renderer2) pr->renderer2->overlay_draw(pr->renderer2, 0, 0, pr->viewport_width, pr->viewport_height);
}