mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-22 18:09:49 +01:00
Add wlr_surface_is_*_surface
And wlr_*_surface_from_wlr_surface
This commit is contained in:
parent
9ae861c416
commit
333ab59902
9 changed files with 65 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue