static void pr_update_signal(PixbufRenderer *pr)
{
-#if 0
- log_printf("FIXME: send updated signal\n");
-#endif
DEBUG_1("%s pixbuf renderer updated - started drawing %p, img: %dx%d", get_exec_time(), pr, pr->image_width, pr->image_height);
pr->debug_updated = TRUE;
}
}
parent = gtk_widget_get_parent(widget);
-#if GTK_CHECK_VERSION(2,20,0)
if (widget && gtk_widget_get_can_focus(parent))
-#else
- if (widget && GTK_WIDGET_CAN_FOCUS(parent))
-#endif
{
gtk_widget_grab_focus(parent);
}
return TRUE;
}
-#if GTK_CHECK_VERSION(2,20,0)
if (gdk_pointer_is_grabbed() && gtk_widget_has_grab(GTK_WIDGET(pr)))
-#else
- if (gdk_pointer_is_grabbed() && GTK_WIDGET_HAS_GRAB(pr))
-#endif
{
gtk_grab_remove(widget);
gdk_pointer_ungrab(bevent->time);
G_CALLBACK(pr_leave_notify_cb), pr);
gtk_widget_set_events(GTK_WIDGET(pr), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
- GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK |
+ GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_SCROLL_MASK |
GDK_LEAVE_NOTIFY_MASK);
g_signal_connect(G_OBJECT(pr), "drag_begin",
if (!pr->pixbuf)
{
- GtkWidget *box;
-
/* no pixbuf so just clear the window */
pr->image_width = 0;
pr->image_height = 0;
pr->zoom = zoom; /* don't throw away the zoom value, it is set by pixbuf_renderer_move, among others,
and used for pixbuf_renderer_zoom_get */
- box = GTK_WIDGET(pr);
-
pr->renderer->update_pixbuf(pr->renderer, flags & PR_ZOOM_LAZY);
if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, flags & PR_ZOOM_LAZY);
pr->scroll_reset = scroll_reset;
pixbuf_renderer_set_pixbuf(source, NULL, source->zoom);
-// pr_queue_clear(source);
-// pr_tile_free_all(source);
+}
+
+void pixbuf_renderer_copy(PixbufRenderer *pr, PixbufRenderer *source)
+{
+ GObject *object;
+ PixbufRendererScrollResetType scroll_reset;
+
+ g_return_if_fail(IS_PIXBUF_RENDERER(pr));
+ g_return_if_fail(IS_PIXBUF_RENDERER(source));
+
+ if (pr == source) return;
+
+ object = G_OBJECT(pr);
+
+ g_object_set(object, "zoom_min", source->zoom_min, NULL);
+ g_object_set(object, "zoom_max", source->zoom_max, NULL);
+ g_object_set(object, "loading", source->loading, NULL);
+
+ pr->complete = source->complete;
+
+ pr->x_scroll = source->x_scroll;
+ pr->y_scroll = source->y_scroll;
+ pr->x_mouse = source->x_mouse;
+ pr->y_mouse = source->y_mouse;
+
+ scroll_reset = pr->scroll_reset;
+ pr->scroll_reset = PR_SCROLL_RESET_NOCHANGE;
+
+ pr->orientation = source->orientation;
+ pr->stereo_data = source->stereo_data;
+
+ if (source->source_tiles_enabled)
+ {
+ pr->source_tiles_enabled = source->source_tiles_enabled;
+ pr->source_tiles_cache_size = source->source_tiles_cache_size;
+ pr->source_tile_width = source->source_tile_width;
+ pr->source_tile_height = source->source_tile_height;
+ pr->image_width = source->image_width;
+ pr->image_height = source->image_height;
+
+ pr->func_tile_request = source->func_tile_request;
+ pr->func_tile_dispose = source->func_tile_dispose;
+ pr->func_tile_data = source->func_tile_data;
+
+ pr->source_tiles = source->source_tiles;
+ source->source_tiles = NULL;
+
+ pr_zoom_sync(pr, source->zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
+ }
+ else
+ {
+ pixbuf_renderer_set_pixbuf(pr, source->pixbuf, source->zoom);
+ }
+
+ pr->scroll_reset = scroll_reset;
}
void pixbuf_renderer_area_changed(PixbufRenderer *pr, gint x, gint y, gint w, gint h)