ui/gtk/image.c

changeset 1240
3e2516e7a957
parent 1238
a40c1ec7883d
--- a/ui/gtk/image.c	Tue Sep 01 19:41:45 2026 +0200
+++ b/ui/gtk/image.c	Wed Sep 02 16:57:28 2026 +0200
@@ -33,11 +33,14 @@
 #include "widget.h"
 #include "../common/context.h"
 #include "../common/object.h"
+#include "../common/action.h"
 
 static void imageviewer_destroy(UiImageViewer *iv) {
     if(iv->pixbuf) {
         g_object_unref(iv->pixbuf);
     }
+    free(iv->onbuttonpress_action);
+    free(iv->onbuttonrelease_action);
     free(iv);
 }
 
@@ -96,8 +99,10 @@
     imgviewer->obj = obj;
     imgviewer->onbuttonpress = args->onbuttonpress;
     imgviewer->onbuttonpressdata = args->onbuttonpressdata;
+    imgviewer->onbuttonpress_action = args->onbuttonpress_action ? strdup(args->onbuttonpress_action) : NULL;
     imgviewer->onbuttonrelease = args->onbuttonrelease;
     imgviewer->onbuttonreleasedata = args->onbuttonreleasedata;
+    imgviewer->onbuttonrelease_action = args->onbuttonrelease_action ? strdup(args->onbuttonrelease_action) : NULL;
     if(args->image_padding > 0) {
         imgviewer->padding_left = args->image_padding;
         imgviewer->padding_right = args->image_padding;
@@ -464,7 +469,8 @@
         GtkGestureClick *gesture,
         UiImageViewer *imgviewer,
         ui_callback callback,
-        void *userdata)
+        void *userdata,
+        const char *action)
 {
     UiEvent event;
     event.obj = imgviewer->obj;
@@ -474,7 +480,13 @@
     event.eventdatatype = 0;
     event.intval = gtk_gesture_single_get_current_button(GTK_GESTURE_SINGLE(gesture));
     event.set = 0;
-    callback(&event, userdata);
+    
+    if(callback) {
+        callback(&event, userdata);
+    }
+    if(action) {
+        uic_action_callback(&event, action);
+    }
 }
 
 void ui_imageviewer_pressed_cb(
@@ -485,9 +497,7 @@
         gpointer userdata)
 {
     UiImageViewer *imgviewer = userdata;
-    if(imgviewer->onbuttonpress) {
-        imgviewer_button_event(self, imgviewer, imgviewer->onbuttonpress, imgviewer->onbuttonpressdata);
-    }
+    imgviewer_button_event(self, imgviewer, imgviewer->onbuttonpress, imgviewer->onbuttonpressdata, imgviewer->onbuttonpress_action);
 }
 
 void ui_imageviewer_released_cb(
@@ -498,9 +508,7 @@
         gpointer userdata)
 {
     UiImageViewer *imgviewer = userdata;
-    if(imgviewer->onbuttonrelease) {
-        imgviewer_button_event(self, imgviewer, imgviewer->onbuttonrelease, imgviewer->onbuttonreleasedata);
-    }
+    imgviewer_button_event(self, imgviewer, imgviewer->onbuttonrelease, imgviewer->onbuttonreleasedata, imgviewer->onbuttonrelease_action);
 }
 
 #else

mercurial