*/
void cursor_set(struct seat *seat, const char *cursor_name);
+uint32_t cursor_get_resize_edges(struct wlr_cursor *cursor,
+ struct cursor_context *ctx);
+
/**
* cursor_update_focus - update cursor focus, may update the cursor icon
* @server - server
static struct view *
view_for_action(struct view *activator, struct server *server,
- struct action *action)
+ struct action *action, uint32_t *resize_edges)
{
/* View is explicitly specified for mousebinds */
if (activator) {
switch (action->type) {
case ACTION_TYPE_FOCUS:
case ACTION_TYPE_MOVE:
- case ACTION_TYPE_RESIZE:
- return get_cursor_context(server).view;
+ case ACTION_TYPE_RESIZE: {
+ struct cursor_context ctx = get_cursor_context(server);
+ if (action->type == ACTION_TYPE_RESIZE) {
+ /* Select resize edges for the keybind case */
+ *resize_edges = cursor_get_resize_edges(
+ server->seat.cursor, &ctx);
+ }
+ return ctx.view;
+ }
default:
return desktop_focused_view(server);
}
* Refetch view because it may have been changed due to the
* previous action
*/
- view = view_for_action(activator, server, action);
+ view = view_for_action(activator, server, action,
+ &resize_edges);
switch (action->type) {
case ACTION_TYPE_CLOSE:
}
}
-static uint32_t
-determine_resize_edges(struct wlr_cursor *cursor, struct cursor_context *ctx)
+uint32_t
+cursor_get_resize_edges(struct wlr_cursor *cursor, struct cursor_context *ctx)
{
uint32_t resize_edges = ssd_resize_edges(ctx->type);
if (ctx->view && !resize_edges) {
struct cursor_context ctx = get_cursor_context(server);
/* Determine closest resize edges in case action is Resize */
- uint32_t resize_edges = determine_resize_edges(seat->cursor, &ctx);
+ uint32_t resize_edges = cursor_get_resize_edges(seat->cursor, &ctx);
if (ctx.view || ctx.surface) {
/* Store resize edges for later action processing */