version 1.15, 2020/04/13 13:42:35 |
version 1.16, 2020/04/13 14:04:25 |
|
|
cmd_display_menu_get_position(struct client *c, struct cmdq_item *item, |
cmd_display_menu_get_position(struct client *c, struct cmdq_item *item, |
struct args *args, u_int *px, u_int *py, u_int w, u_int h) |
struct args *args, u_int *px, u_int *py, u_int w, u_int h) |
{ |
{ |
struct cmdq_shared *shared = cmdq_get_shared(item); |
struct cmdq_state *state = cmdq_get_state(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct session *s = c->session; |
struct session *s = c->session; |
struct winlink *wl = target->wl; |
struct winlink *wl = target->wl; |
|
|
else |
else |
*px = 0; |
*px = 0; |
} else if (strcmp(xp, "M") == 0) { |
} else if (strcmp(xp, "M") == 0) { |
if (shared->event.m.valid && shared->event.m.x > w / 2) |
if (state->event.m.valid && state->event.m.x > w / 2) |
*px = shared->event.m.x - w / 2; |
*px = state->event.m.x - w / 2; |
else |
else |
*px = 0; |
*px = 0; |
} else if (strcmp(xp, "W") == 0) { |
} else if (strcmp(xp, "W") == 0) { |
|
|
else |
else |
*py = 0; |
*py = 0; |
} else if (strcmp(yp, "M") == 0) { |
} else if (strcmp(yp, "M") == 0) { |
if (shared->event.m.valid) |
if (state->event.m.valid) |
*py = shared->event.m.y + h; |
*py = state->event.m.y + h; |
else |
else |
*py = 0; |
*py = 0; |
} else if (strcmp(yp, "S") == 0) { |
} else if (strcmp(yp, "S") == 0) { |
|
|
cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item) |
cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item) |
{ |
{ |
struct args *args = cmd_get_args(self); |
struct args *args = cmd_get_args(self); |
struct cmdq_shared *shared = cmdq_get_shared(item); |
struct cmdq_state *state = cmdq_get_state(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct cmd_find_state *target = cmdq_get_target(item); |
struct client *c; |
struct client *c; |
struct menu *menu = NULL; |
struct menu *menu = NULL; |
|
|
cmd_display_menu_get_position(c, item, args, &px, &py, menu->width + 4, |
cmd_display_menu_get_position(c, item, args, &px, &py, menu->width + 4, |
menu->count + 2); |
menu->count + 2); |
|
|
if (!shared->event.m.valid) |
if (!state->event.m.valid) |
flags |= MENU_NOMOUSE; |
flags |= MENU_NOMOUSE; |
if (menu_display(menu, flags, item, px, py, c, target, NULL, NULL) != 0) |
if (menu_display(menu, flags, item, px, py, c, target, NULL, NULL) != 0) |
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |