Correct context menu placement if bar is bottom

Originally the context menu would draw at the top of the screen, which
is incorrect.
This commit is contained in:
Calvin Lee 2017-10-31 12:42:08 -06:00
parent 2f1eb30c38
commit 5c8dc9cb73
3 changed files with 8 additions and 1 deletions

View file

@ -21,6 +21,7 @@ struct bar {
struct output {
struct window *window;
struct registry *registry;
struct output_state *state;
list_t *workspaces;
#ifdef ENABLE_TRAY
list_t *items;

View file

@ -247,6 +247,8 @@ void bar_setup(struct bar *bar, const char *socket_path, const char *bar_id) {
/* set window height */
set_window_height(bar_output->window, bar->config->height);
bar_output->state = output;
}
/* spawn status command */
spawn_status_cmd_proc(bar);

View file

@ -432,9 +432,13 @@ err:
return -1;
}
void tray_mouse_event(struct output *output, int x, int y,
void tray_mouse_event(struct output *output, int rel_x, int rel_y,
uint32_t button, uint32_t state) {
int x = rel_x;
int y = rel_y + (swaybar.config->position == DESKTOP_SHELL_PANEL_POSITION_TOP
? 0 : (output->state->height - output->window->height));
struct window *window = output->window;
uint32_t tray_padding = swaybar.config->tray_padding;
int tray_width = window->width * window->scale;