xdg: add snapping.notifyClient option to control tiling events

This commit is contained in:
Andrew J. Hesford 2024-01-22 22:11:53 -05:00
parent 9f51384b6a
commit 3162bbb3c2
7 changed files with 100 additions and 41 deletions

View file

@ -1043,6 +1043,15 @@ view_is_floating(struct view *view)
|| view_is_tiled(view));
}
static void
view_notify_tiled(struct view *view)
{
assert(view);
if (view->impl->notify_tiled) {
view->impl->notify_tiled(view);
}
}
/* Reset tiled state of view without changing geometry */
void
view_set_untiled(struct view *view)
@ -1051,10 +1060,7 @@ view_set_untiled(struct view *view)
view->tiled = VIEW_EDGE_INVALID;
view->tiled_region = NULL;
zfree(view->tiled_region_evacuate);
if (view->impl->set_tiled) {
view->impl->set_tiled(view);
}
view_notify_tiled(view);
}
void
@ -1775,11 +1781,7 @@ view_snap_to_edge(struct view *view, enum view_edge edge,
view_set_untiled(view);
view_set_output(view, output);
view->tiled = edge;
if (view->impl->set_tiled) {
view->impl->set_tiled(view);
}
view_notify_tiled(view);
view_apply_tiled_geometry(view);
}
@ -1813,11 +1815,7 @@ view_snap_to_region(struct view *view, struct region *region,
}
view_set_untiled(view);
view->tiled_region = region;
if (view->impl->set_tiled) {
view->impl->set_tiled(view);
}
view_notify_tiled(view);
view_apply_region_geometry(view);
}