Fix crash when moving cursor over a fullscreen split container
Calling container_at_view fails an assertion if the container isn't a view. Calling tiling_container_at works correctly, as that function checks if the container is a view and calls container_at_view if so.
This commit is contained in:
parent
5ac3509d54
commit
c17f0870ef
|
@ -234,9 +234,9 @@ struct sway_container *container_at(struct sway_container *workspace,
|
||||||
double lx, double ly, struct wlr_surface **surface,
|
double lx, double ly, struct wlr_surface **surface,
|
||||||
double *sx, double *sy);
|
double *sx, double *sy);
|
||||||
|
|
||||||
struct sway_container *container_at_view(struct sway_container *view,
|
struct sway_container *tiling_container_at(
|
||||||
double lx, double ly, struct wlr_surface **surface,
|
struct sway_container *con, double lx, double ly,
|
||||||
double *sx, double *sy);
|
struct wlr_surface **surface, double *sx, double *sy);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply the function for each descendant of the container breadth first.
|
* Apply the function for each descendant of the container breadth first.
|
||||||
|
|
|
@ -99,7 +99,7 @@ static struct sway_container *container_at_coords(
|
||||||
return ws;
|
return ws;
|
||||||
}
|
}
|
||||||
if (ws->sway_workspace->fullscreen) {
|
if (ws->sway_workspace->fullscreen) {
|
||||||
return container_at_view(ws->sway_workspace->fullscreen, lx, ly,
|
return tiling_container_at(ws->sway_workspace->fullscreen, lx, ly,
|
||||||
surface, sx, sy);
|
surface, sx, sy);
|
||||||
}
|
}
|
||||||
if ((*surface = layer_surface_at(output,
|
if ((*surface = layer_surface_at(output,
|
||||||
|
|
|
@ -535,7 +535,7 @@ struct sway_container *container_parent(struct sway_container *container,
|
||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sway_container *container_at_view(struct sway_container *swayc,
|
static struct sway_container *container_at_view(struct sway_container *swayc,
|
||||||
double lx, double ly,
|
double lx, double ly,
|
||||||
struct wlr_surface **surface, double *sx, double *sy) {
|
struct wlr_surface **surface, double *sx, double *sy) {
|
||||||
if (!sway_assert(swayc->type == C_VIEW, "Expected a view")) {
|
if (!sway_assert(swayc->type == C_VIEW, "Expected a view")) {
|
||||||
|
@ -574,10 +574,6 @@ struct sway_container *container_at_view(struct sway_container *swayc,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sway_container *tiling_container_at(
|
|
||||||
struct sway_container *con, double lx, double ly,
|
|
||||||
struct wlr_surface **surface, double *sx, double *sy);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* container_at for a container with layout L_TABBED.
|
* container_at for a container with layout L_TABBED.
|
||||||
*/
|
*/
|
||||||
|
@ -684,7 +680,7 @@ static struct sway_container *floating_container_at(double lx, double ly,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sway_container *tiling_container_at(
|
struct sway_container *tiling_container_at(
|
||||||
struct sway_container *con, double lx, double ly,
|
struct sway_container *con, double lx, double ly,
|
||||||
struct wlr_surface **surface, double *sx, double *sy) {
|
struct wlr_surface **surface, double *sx, double *sy) {
|
||||||
if (con->type == C_VIEW) {
|
if (con->type == C_VIEW) {
|
||||||
|
|
Loading…
Reference in a new issue