Buttons: export alignment variables for menu

This commit is contained in:
o9000 2017-04-02 10:09:24 +02:00
parent 39480f48ac
commit fc5385aa38

View file

@ -535,35 +535,54 @@ void button_action(void *obj, int mouse_button, int x, int y)
break; break;
} }
if (command) { if (command) {
int aligned_x, aligned_y; int aligned_x, aligned_y, aligned_x1, aligned_y1, aligned_x2, aligned_y2;
if (panel_horizontal) { if (panel_horizontal) {
if (area_is_first(button)) if (area_is_first(button))
aligned_x = panel->posx; aligned_x1 = panel->posx;
else if (area_is_last(button))
aligned_x = panel->posx + panel->area.width;
else if (panel->posx + button->area.posx > 0.75 * panel->area.width)
aligned_x = panel->posx + button->area.posx + button->area.width;
else else
aligned_x = panel->posx + button->area.posx; aligned_x1 = panel->posx + button->area.posx;
if (area_is_last(button))
aligned_x2 = panel->posx + panel->area.width;
else
aligned_x2 = panel->posx + button->area.posx + button->area.width;
if (area_is_first(button))
aligned_x = aligned_x1;
else if (area_is_last(button))
aligned_x = aligned_x2;
else
aligned_x = aligned_x1;
if (panel_position & BOTTOM) if (panel_position & BOTTOM)
aligned_y = panel->posy; aligned_y = panel->posy;
else else
aligned_y = panel->posy + panel->area.height; aligned_y = panel->posy + panel->area.height;
aligned_y1 = aligned_y2 = aligned_y;
} else { } else {
if (area_is_first(button)) if (area_is_first(button))
aligned_y = panel->posy; aligned_y1 = panel->posy;
else if (area_is_last(button))
aligned_y = panel->posy + panel->area.height;
else if (panel->posy + button->area.posy > 0.75 * panel->area.height)
aligned_y = panel->posy + button->area.posy + button->area.height;
else else
aligned_y = panel->posy + button->area.posy; aligned_y1 = panel->posy + button->area.posy;
if (panel_position & LEFT) if (area_is_last(button))
aligned_x = panel->posx + panel->area.width; aligned_y2 = panel->posy + panel->area.height;
else else
aligned_y2 = panel->posy + button->area.posy + button->area.height;
if (panel_position & RIGHT)
aligned_x = panel->posx; aligned_x = panel->posx;
else
aligned_x = panel->posx + panel->area.width;
aligned_x1 = aligned_x2 = aligned_x;
if (area_is_first(button))
aligned_y = aligned_y1;
else if (area_is_last(button))
aligned_y = aligned_y2;
else
aligned_y = aligned_y1;
} }
char *full_cmd = g_strdup_printf("export BUTTON_X=%d;" char *full_cmd = g_strdup_printf("export BUTTON_X=%d;"
@ -572,6 +591,10 @@ void button_action(void *obj, int mouse_button, int x, int y)
"export BUTTON_H=%d;" "export BUTTON_H=%d;"
"export BUTTON_ALIGNED_X=%d;" "export BUTTON_ALIGNED_X=%d;"
"export BUTTON_ALIGNED_Y=%d;" "export BUTTON_ALIGNED_Y=%d;"
"export BUTTON_ALIGNED_X1=%d;"
"export BUTTON_ALIGNED_Y1=%d;"
"export BUTTON_ALIGNED_X2=%d;"
"export BUTTON_ALIGNED_Y2=%d;"
"%s", "%s",
x, x,
y, y,
@ -579,6 +602,10 @@ void button_action(void *obj, int mouse_button, int x, int y)
button->area.height, button->area.height,
aligned_x, aligned_x,
aligned_y, aligned_y,
aligned_x1,
aligned_y1,
aligned_x2,
aligned_y2,
command); command);
pid_t pid = fork(); pid_t pid = fork();
if (pid < 0) { if (pid < 0) {