--- a/ui/gtk/image.h Sat Mar 29 18:17:01 2025 +0100 +++ b/ui/gtk/image.h Sat Mar 29 20:03:25 2025 +0100 @@ -47,6 +47,14 @@ UiBool adjustsize; UiBool useradjustable; GdkPixbuf *pixbuf; + + int zoom_scale; + int transx; + int transy; + int begin_transx; + int begin_transy; + int zoom; + double prev_scale; } UiImageViewer; void ui_cairo_draw_image(UiImageViewer *imgviewer, cairo_t *cr, int width, int height); @@ -55,6 +63,51 @@ const char* ui_imageviewer_get_type(UiGeneric *g); int ui_imageviewer_set(UiGeneric *g, void *value, const char *type); +#if GTK_MAJOR_VERSION >= 4 + +gboolean ui_imageviewer_scroll( + GtkEventControllerScroll *widget, + gdouble dx, + gdouble dy, + gpointer userdata); + +void ui_imageviewer_drag_begin_cb( + GtkGestureDrag* self, + gdouble start_x, + gdouble start_y, + gpointer userdata); + +void ui_imageviewer_drag_end_cb( + GtkGestureDrag* self, + gdouble x, + gdouble y, + gpointer userdata); + +void ui_imageviewer_drag_update_cb( + GtkGestureDrag* self, + gdouble x, + gdouble y, + gpointer userdata); + +#else + +gboolean ui_imageviewer_scroll_event( + GtkWidget *widget, + GdkEventScroll event, + gpointer userdata); + +gboolean ui_imageviewer_button_press_event( + GtkWidget *widget, + GdkEventButton event, + gpointer userdata); + +gboolean ui_imageviewer_button_release_event( + GtkWidget *widget, + GdkEventButton event, + gpointer userdata); + +#endif + #ifdef __cplusplus } #endif