--- 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