Executor: send click coordinates via environment variables
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user