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:
Ryan Dwyer 2018-08-03 18:08:20 +10:00
parent 5ac3509d54
commit c17f0870ef
3 changed files with 6 additions and 10 deletions

View File

@ -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.

View File

@ -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,

View File

@ -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) {