[PATCH weston 3/6] window: Require the serial in window_show_menu
Dima Ryazanov
dima at gmail.com
Mon Dec 5 03:36:32 UTC 2016
The serial that triggered the menu may not always be the latest serial - as will
be the case for the desktop-shell. Let's just require clients to pass it
explicitly. They already do it when starting a grab, moving a window, etc.
Signed-off-by: Dima Ryazanov <dima at gmail.com>
---
clients/editor.c | 4 +++-
clients/resizor.c | 4 +++-
clients/stacking.c | 4 +++-
clients/terminal.c | 4 +++-
clients/window.c | 12 ++++++------
clients/window.h | 4 ++--
6 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/clients/editor.c b/clients/editor.c
index 42c7f52..a201eff 100644
--- a/clients/editor.c
+++ b/clients/editor.c
@@ -683,7 +683,9 @@ show_menu(struct editor *editor, struct input *input, uint32_t time)
};
input_get_position(input, &x, &y);
- window_show_menu(editor->display, input, time, editor->window,
+ window_show_menu(editor->display, input,
+ display_get_serial(editor->display),
+ time, editor->window,
x + 10, y + 20, menu_func,
entries, ARRAY_LENGTH(entries));
}
diff --git a/clients/resizor.c b/clients/resizor.c
index 5d342e1..481b9f0 100644
--- a/clients/resizor.c
+++ b/clients/resizor.c
@@ -221,7 +221,9 @@ show_menu(struct resizor *resizor, struct input *input, uint32_t time)
};
input_get_position(input, &x, &y);
- window_show_menu(resizor->display, input, time, resizor->window,
+ window_show_menu(resizor->display, input,
+ display_get_serial(resizor->display),
+ time, resizor->window,
x - 10, y - 10, menu_func, entries, 4);
}
diff --git a/clients/stacking.c b/clients/stacking.c
index 0682e60..246ef59 100644
--- a/clients/stacking.c
+++ b/clients/stacking.c
@@ -102,7 +102,9 @@ show_popup(struct stacking *stacking, struct input *input, uint32_t time,
};
input_get_position(input, &x, &y);
- window_show_menu(stacking->display, input, time, window, x, y,
+ window_show_menu(stacking->display, input,
+ display_get_serial(stacking->display),
+ time, window, x, y,
show_popup_cb, entries, ARRAY_LENGTH(entries));
}
diff --git a/clients/terminal.c b/clients/terminal.c
index 5c25fa8..b12d334 100644
--- a/clients/terminal.c
+++ b/clients/terminal.c
@@ -2725,7 +2725,9 @@ show_menu(struct terminal *terminal, struct input *input, uint32_t time)
};
input_get_position(input, &x, &y);
- window_show_menu(terminal->display, input, time, terminal->window,
+ window_show_menu(terminal->display, input,
+ display_get_serial(terminal->display),
+ time, terminal->window,
x - 10, y - 10, menu_func,
entries, ARRAY_LENGTH(entries));
}
diff --git a/clients/window.c b/clients/window.c
index afc7cab..f49ce72 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -2358,7 +2358,9 @@ window_show_frame_menu(struct window *window,
count = ARRAY_LENGTH(entries) - 1;
input_get_position(input, &x, &y);
- window_show_menu(window->display, input, time, window,
+ window_show_menu(window->display, input,
+ display_get_serial(window->display),
+ time, window,
x - 10, y - 10, frame_menu_func, entries, count);
}
@@ -5499,8 +5501,8 @@ create_simple_positioner(struct display *display,
void
window_show_menu(struct display *display,
- struct input *input, uint32_t time, struct window *parent,
- int32_t x, int32_t y,
+ struct input *input, uint32_t serial, uint32_t time,
+ struct window *parent, int32_t x, int32_t y,
menu_func_t func, const char **entries, int count)
{
struct menu *menu;
@@ -5547,9 +5549,7 @@ window_show_menu(struct display *display,
positioner);
fail_on_null(window->xdg_popup, 0, __FILE__, __LINE__);
zxdg_positioner_v6_destroy(positioner);
- zxdg_popup_v6_grab(window->xdg_popup,
- input->seat,
- display_get_serial(window->display));
+ zxdg_popup_v6_grab(window->xdg_popup, input->seat, serial);
zxdg_popup_v6_add_listener(window->xdg_popup,
&xdg_popup_listener, window);
diff --git a/clients/window.h b/clients/window.h
index 1ec9eac..1cb3d27 100644
--- a/clients/window.h
+++ b/clients/window.h
@@ -324,8 +324,8 @@ typedef void (*menu_func_t)(void *data, struct input *input, int index);
void
window_show_menu(struct display *display,
- struct input *input, uint32_t time, struct window *parent,
- int32_t x, int32_t y,
+ struct input *input, uint32_t serial, uint32_t time,
+ struct window *parent, int32_t x, int32_t y,
menu_func_t func, const char **entries, int count);
void
--
2.9.3
More information about the wayland-devel
mailing list