mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
Basic support for Move action
- Add Move as a default mouse binding for a Titlebar Press action
- Remove the hard-coded handling in cursor_button()
Example config snippet:
<mouse>
<context name="Titlebar">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
<action name="Move"/>
</mousebind>
</context>
</mouse>
This commit is contained in:
parent
687993370f
commit
c01d1f124c
5 changed files with 20 additions and 8 deletions
|
|
@ -430,6 +430,8 @@ struct view *desktop_surface_and_view_at(struct server *server, double lx,
|
|||
double ly, struct wlr_surface **surface, double *sx, double *sy,
|
||||
int *view_area);
|
||||
|
||||
struct view *desktop_view_at_cursor(struct server *server);
|
||||
|
||||
void cursor_init(struct seat *seat);
|
||||
|
||||
void keyboard_init(struct seat *seat);
|
||||
|
|
|
|||
|
|
@ -72,6 +72,11 @@ action(struct server *server, const char *action, const char *command)
|
|||
if (view) {
|
||||
view_minimize(view, true);
|
||||
}
|
||||
} else if (!strcasecmp(action, "Move")) {
|
||||
struct view *view = desktop_view_at_cursor(server);
|
||||
if (view) {
|
||||
interactive_begin(view, LAB_INPUT_STATE_MOVE, 0);
|
||||
}
|
||||
} else {
|
||||
wlr_log(WLR_ERROR, "action (%s) not supported", action);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -465,6 +465,7 @@ load_default_key_bindings(void)
|
|||
static struct {
|
||||
const char *context, *button, *event, *action, *command;
|
||||
} mouse_combos[] = {
|
||||
{ "TitleBar", "Left", "Press", "Move", NULL },
|
||||
{ "TitleBar", "Left", "DoubleClick", "ToggleMaximize", NULL },
|
||||
{ "Close", "Left", "Click", "Close", NULL },
|
||||
{ "Iconify", "Left", "Click", "Iconify", NULL},
|
||||
|
|
|
|||
|
|
@ -574,15 +574,8 @@ cursor_button(struct wl_listener *listener, void *data)
|
|||
mousebindings:
|
||||
if (event->state == WLR_BUTTON_RELEASED) {
|
||||
handle_release_mousebinding(server, event->button, view_area);
|
||||
return;
|
||||
} else if (event->state == WLR_BUTTON_PRESSED) {
|
||||
if (handle_press_mousebinding(server, event->button, view_area)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (view_area == LAB_SSD_PART_TITLEBAR) {
|
||||
interactive_begin(view, LAB_INPUT_STATE_MOVE, 0);
|
||||
handle_press_mousebinding(server, event->button, view_area);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -342,3 +342,14 @@ desktop_surface_and_view_at(struct server *server, double lx, double ly,
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct view *
|
||||
desktop_view_at_cursor(struct server *server) {
|
||||
double sx, sy;
|
||||
struct wlr_surface *surface;
|
||||
int view_area = LAB_SSD_NONE;
|
||||
|
||||
return desktop_surface_and_view_at(server,
|
||||
server->seat.cursor->x, server->seat.cursor->y,
|
||||
&surface, &sx, &sy, &view_area);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue