Add wlr_surface_is_*_surface

And wlr_*_surface_from_wlr_surface
This commit is contained in:
Drew DeVault 2018-04-02 20:39:33 -04:00
parent 9ae861c416
commit 333ab59902
9 changed files with 65 additions and 2 deletions

View File

@ -99,4 +99,9 @@ void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
*/
void wlr_layer_surface_close(struct wlr_layer_surface *surface);
bool wlr_surface_is_layer_surface(struct wlr_surface *surface);
struct wlr_layer_surface *wlr_layer_surface_from_wlr_surface(
struct wlr_surface *surface);
#endif

View File

@ -150,4 +150,9 @@ struct wlr_wl_shell_surface *wlr_wl_shell_surface_popup_at(
struct wlr_wl_shell_surface *surface, double sx, double sy,
double *popup_sx, double *popup_sy);
bool wlr_surface_is_wl_shell_surface(struct wlr_surface *surface);
struct wlr_wl_surface *wlr_wl_shell_surface_from_wlr_surface(
struct wlr_surface *surface);
#endif

View File

@ -229,4 +229,9 @@ struct wlr_xdg_surface *wlr_xdg_surface_popup_at(
struct wlr_xdg_surface *surface, double sx, double sy,
double *popup_sx, double *popup_sy);
bool wlr_surface_is_xdg_surface(struct wlr_surface *surface);
struct wlr_xdg_surface *wlr_xdg_surface_from_wlr_surface(
struct wlr_surface *surface);
#endif

View File

@ -289,4 +289,9 @@ void wlr_positioner_v6_invert_x(
void wlr_positioner_v6_invert_y(
struct wlr_xdg_positioner_v6 *positioner);
bool wlr_surface_is_xdg_surface_v6(struct wlr_surface *surface);
struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6_from_wlr_surface(
struct wlr_surface *surface);
#endif

View File

@ -271,8 +271,9 @@ static void roots_cursor_press_button(struct roots_cursor *cursor,
break;
case WLR_BUTTON_PRESSED:
roots_seat_set_focus(seat, view);
if (surface && !view) {
struct wlr_layer_surface *layer = surface->role_data;
if (wlr_surface_is_layer_surface(surface)) {
struct wlr_layer_surface *layer =
wlr_layer_surface_from_wlr_surface(surface);
if (layer->current.keyboard_interactive) {
roots_seat_set_focus_layer(seat, layer);
}

View File

@ -34,6 +34,16 @@ static struct wlr_layer_surface *layer_surface_from_resource(
return wl_resource_get_user_data(resource);
}
bool wlr_surface_is_layer_surface(struct wlr_surface *surface) {
return strcmp(surface->role, zwlr_layer_surface_role) == 0;
}
struct wlr_layer_surface *wlr_layer_surface_from_wlr_surface(
struct wlr_surface *surface) {
assert(wlr_surface_is_layer_surface(surface));
return (struct wlr_layer_surface *)surface->role_data;
}
static void layer_surface_configure_destroy(
struct wlr_layer_surface_configure *configure) {
if (configure == NULL) {

View File

@ -12,6 +12,16 @@
static const char *wlr_wl_shell_surface_role = "wl-shell-surface";
bool wlr_surface_is_wl_shell_surface(struct wlr_surface *surface) {
return strcmp(surface->role, wlr_wl_shell_surface_role) == 0;
}
struct wlr_wl_surface *wlr_wl_shell_surface_from_wlr_surface(
struct wlr_surface *surface) {
assert(wlr_surface_is_wl_shell_surface(surface));
return (struct wlr_wl_surface *)surface->role_data;
}
static void shell_pointer_grab_end(struct wlr_seat_pointer_grab *grab) {
struct wlr_wl_shell_popup_grab *popup_grab = grab->data;

View File

@ -16,6 +16,17 @@
static const char *wlr_desktop_xdg_toplevel_role = "xdg_toplevel";
static const char *wlr_desktop_xdg_popup_role = "xdg_popup";
bool wlr_surface_is_xdg_surface(struct wlr_surface *surface) {
return strcmp(surface->role, wlr_desktop_xdg_toplevel_role) == 0 ||
strcmp(surface->role, wlr_desktop_xdg_popup_role) == 0;
}
struct wlr_xdg_surface *wlr_xdg_surface_from_wlr_surface(
struct wlr_surface *surface) {
assert(wlr_surface_is_xdg_surface(surface));
return (struct wlr_xdg_surface *)surface->role_data;
}
struct wlr_xdg_positioner {
struct wl_resource *resource;

View File

@ -16,6 +16,17 @@
static const char *wlr_desktop_xdg_toplevel_role = "xdg_toplevel_v6";
static const char *wlr_desktop_xdg_popup_role = "xdg_popup_v6";
bool wlr_surface_is_xdg_surface_v6(struct wlr_surface *surface) {
return strcmp(surface->role, wlr_desktop_xdg_toplevel_role) == 0 ||
strcmp(surface->role, wlr_desktop_xdg_popup_role) == 0;
}
struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6_from_wlr_surface(
struct wlr_surface *surface) {
assert(wlr_surface_is_xdg_surface_v6(surface));
return (struct wlr_xdg_surface_v6 *)surface->role_data;
}
struct wlr_xdg_positioner_v6_resource {
struct wl_resource *resource;
struct wlr_xdg_positioner_v6 attrs;