mirror of
https://github.com/labwc/labwc.git
synced 2026-03-06 01:40:15 -05:00
action: Select resize edges for Resize triggered by keybind
This commit is contained in:
parent
f112fb636e
commit
bbc6c6bb94
3 changed files with 18 additions and 7 deletions
|
|
@ -545,6 +545,9 @@ struct cursor_context get_cursor_context(struct server *server);
|
||||||
*/
|
*/
|
||||||
void cursor_set(struct seat *seat, const char *cursor_name);
|
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
|
* cursor_update_focus - update cursor focus, may update the cursor icon
|
||||||
* @server - server
|
* @server - server
|
||||||
|
|
|
||||||
16
src/action.c
16
src/action.c
|
|
@ -167,7 +167,7 @@ show_menu(struct server *server, struct view *view, const char *menu_name)
|
||||||
|
|
||||||
static struct view *
|
static struct view *
|
||||||
view_for_action(struct view *activator, struct server *server,
|
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 */
|
/* View is explicitly specified for mousebinds */
|
||||||
if (activator) {
|
if (activator) {
|
||||||
|
|
@ -178,8 +178,15 @@ view_for_action(struct view *activator, struct server *server,
|
||||||
switch (action->type) {
|
switch (action->type) {
|
||||||
case ACTION_TYPE_FOCUS:
|
case ACTION_TYPE_FOCUS:
|
||||||
case ACTION_TYPE_MOVE:
|
case ACTION_TYPE_MOVE:
|
||||||
case ACTION_TYPE_RESIZE:
|
case ACTION_TYPE_RESIZE: {
|
||||||
return get_cursor_context(server).view;
|
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:
|
default:
|
||||||
return desktop_focused_view(server);
|
return desktop_focused_view(server);
|
||||||
}
|
}
|
||||||
|
|
@ -208,7 +215,8 @@ actions_run(struct view *activator, struct server *server,
|
||||||
* Refetch view because it may have been changed due to the
|
* Refetch view because it may have been changed due to the
|
||||||
* previous action
|
* previous action
|
||||||
*/
|
*/
|
||||||
view = view_for_action(activator, server, action);
|
view = view_for_action(activator, server, action,
|
||||||
|
&resize_edges);
|
||||||
|
|
||||||
switch (action->type) {
|
switch (action->type) {
|
||||||
case ACTION_TYPE_CLOSE:
|
case ACTION_TYPE_CLOSE:
|
||||||
|
|
|
||||||
|
|
@ -378,8 +378,8 @@ cursor_update_common(struct server *server, struct cursor_context *ctx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t
|
uint32_t
|
||||||
determine_resize_edges(struct wlr_cursor *cursor, struct cursor_context *ctx)
|
cursor_get_resize_edges(struct wlr_cursor *cursor, struct cursor_context *ctx)
|
||||||
{
|
{
|
||||||
uint32_t resize_edges = ssd_resize_edges(ctx->type);
|
uint32_t resize_edges = ssd_resize_edges(ctx->type);
|
||||||
if (ctx->view && !resize_edges) {
|
if (ctx->view && !resize_edges) {
|
||||||
|
|
@ -783,7 +783,7 @@ cursor_button_press(struct seat *seat, struct wlr_pointer_button_event *event)
|
||||||
struct cursor_context ctx = get_cursor_context(server);
|
struct cursor_context ctx = get_cursor_context(server);
|
||||||
|
|
||||||
/* Determine closest resize edges in case action is Resize */
|
/* 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) {
|
if (ctx.view || ctx.surface) {
|
||||||
/* Store resize edges for later action processing */
|
/* Store resize edges for later action processing */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue