From 5966b198b65cebde6ae72d30ba499d204b54c46b Mon Sep 17 00:00:00 2001 From: o9000 Date: Sun, 24 Jan 2016 15:11:49 +0100 Subject: [PATCH] Executor: send click coordinates via environment variables --- src/execplugin/execplugin.c | 14 ++++++++++++-- src/execplugin/execplugin.h | 2 +- src/tint.c | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/execplugin/execplugin.c b/src/execplugin/execplugin.c index b270f43..00126ad 100644 --- a/src/execplugin/execplugin.c +++ b/src/execplugin/execplugin.c @@ -428,7 +428,7 @@ void draw_execp(void *obj, cairo_t *c) g_object_unref(layout); } -void execp_action(void *obj, int button) +void execp_action(void *obj, int button, int x, int y) { Execp *execp = obj; char *command = NULL; @@ -450,7 +450,17 @@ void execp_action(void *obj, int button) break; } if (command) { - tint_exec(command); + char *full_cmd = g_strdup_printf("export EXECP_X=%d;" + "export EXECP_Y=%d;" + "export EXECP_W=%d;" + "export EXECP_H=%d; %s", + x, + y, + execp->area.width, + execp->area.height, + command); + tint_exec(full_cmd); + g_free(full_cmd); } else { if (execp->backend->child_pipe > 0) { // Command currently running, nothing to do diff --git a/src/execplugin/execplugin.h b/src/execplugin/execplugin.h index c50997c..594c4f3 100644 --- a/src/execplugin/execplugin.h +++ b/src/execplugin/execplugin.h @@ -130,7 +130,7 @@ void draw_execp(void *obj, cairo_t *c); gboolean resize_execp(void *obj); // Called on mouse click event. -void execp_action(void *obj, int button); +void execp_action(void *obj, int button, int x, int y); // Called to check if new output from the command can be read. // No command might be running. diff --git a/src/tint.c b/src/tint.c index 5504cd4..b52c5eb 100644 --- a/src/tint.c +++ b/src/tint.c @@ -808,7 +808,7 @@ void event_button_release(XEvent *e) Execp *execp = click_execp(panel, e->xbutton.x, e->xbutton.y); if (execp) { - execp_action(execp, e->xbutton.button); + execp_action(execp, e->xbutton.button, e->xbutton.x - execp->area.posx, e->xbutton.y - execp->area.posy); if (panel_layer == BOTTOM_LAYER) XLowerWindow(server.display, panel->main_win); task_drag = 0;