mirror of
https://github.com/labwc/labwc.git
synced 2026-02-10 04:27:47 -05:00
This is a common practice in C projects, which simply enforces that each header must compile cleanly without implicit dependencies on other headers (see also the previous commit).
27 lines
808 B
C
27 lines
808 B
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
#include "common/surface-helpers.h"
|
|
#include <wlr/types/wlr_layer_shell_v1.h>
|
|
#include <wlr/types/wlr_subcompositor.h>
|
|
#include <wlr/util/log.h>
|
|
|
|
struct wlr_layer_surface_v1 *
|
|
subsurface_parent_layer(struct wlr_surface *wlr_surface)
|
|
{
|
|
struct wlr_subsurface *subsurface =
|
|
wlr_subsurface_try_from_wlr_surface(wlr_surface);
|
|
if (!subsurface) {
|
|
return NULL;
|
|
}
|
|
struct wlr_surface *parent = subsurface->parent;
|
|
if (!parent) {
|
|
wlr_log(WLR_DEBUG, "subsurface %p has no parent", subsurface);
|
|
return NULL;
|
|
}
|
|
struct wlr_layer_surface_v1 *wlr_layer_surface =
|
|
wlr_layer_surface_v1_try_from_wlr_surface(parent);
|
|
if (wlr_layer_surface) {
|
|
return wlr_layer_surface;
|
|
}
|
|
/* Recurse in case there are nested sub-surfaces */
|
|
return subsurface_parent_layer(parent);
|
|
}
|