mirror of
https://github.com/swaywm/sway.git
synced 2024-11-24 00:41:28 +00:00
Make pointer disablement when using hide_cursor optional
This commit is contained in:
parent
f5ce4a4413
commit
f23a380ccb
|
@ -207,6 +207,12 @@ enum seat_config_hide_cursor_when_typing {
|
|||
HIDE_WHEN_TYPING_DISABLE,
|
||||
};
|
||||
|
||||
enum seat_config_hide_cursor_but_keep_active {
|
||||
HIDE_CURSOR_BUT_KEEP_ACTIVE_DEFAULT, // the default is currently disabled
|
||||
HIDE_CURSOR_BUT_KEEP_ACTIVE_ENABLE,
|
||||
HIDE_CURSOR_BUT_KEEP_ACTIVE_DISABLE,
|
||||
};
|
||||
|
||||
enum seat_config_allow_constrain {
|
||||
CONSTRAIN_DEFAULT, // the default is currently enabled
|
||||
CONSTRAIN_ENABLE,
|
||||
|
@ -243,6 +249,7 @@ struct seat_config {
|
|||
list_t *attachments; // list of seat_attachment configs
|
||||
int hide_cursor_timeout;
|
||||
enum seat_config_hide_cursor_when_typing hide_cursor_when_typing;
|
||||
enum seat_config_hide_cursor_but_keep_active hide_cursor_but_keep_active;
|
||||
enum seat_config_allow_constrain allow_constrain;
|
||||
enum seat_config_shortcuts_inhibit shortcuts_inhibit;
|
||||
enum seat_keyboard_grouping keyboard_grouping;
|
||||
|
|
|
@ -31,12 +31,16 @@ struct cmd_results *seat_cmd_hide_cursor(int argc, char **argv) {
|
|||
}
|
||||
seat_config->hide_cursor_timeout = timeout;
|
||||
} else {
|
||||
if (strcmp(argv[0], "when-typing") != 0) {
|
||||
if (strcmp(argv[0], "when-typing") == 0) {
|
||||
seat_config->hide_cursor_when_typing = parse_boolean(argv[1], true) ?
|
||||
HIDE_WHEN_TYPING_ENABLE : HIDE_WHEN_TYPING_DISABLE;
|
||||
} else if (strcmp(argv[0], "but-keep-active") == 0) {
|
||||
seat_config->hide_cursor_but_keep_active = parse_boolean(argv[1], true) ?
|
||||
HIDE_CURSOR_BUT_KEEP_ACTIVE_ENABLE : HIDE_CURSOR_BUT_KEEP_ACTIVE_DISABLE;
|
||||
} else {
|
||||
return cmd_results_new(CMD_INVALID,
|
||||
"Expected 'hide_cursor <timeout>|when-typing [enable|disable]'");
|
||||
"Expected 'hide_cursor <timeout>|when-typing|but-keep-active [enable|disable]'");
|
||||
}
|
||||
seat_config->hide_cursor_when_typing = parse_boolean(argv[1], true) ?
|
||||
HIDE_WHEN_TYPING_ENABLE : HIDE_WHEN_TYPING_DISABLE;
|
||||
}
|
||||
|
||||
return cmd_results_new(CMD_SUCCESS, NULL);
|
||||
|
|
|
@ -29,6 +29,7 @@ struct seat_config *new_seat_config(const char* name) {
|
|||
}
|
||||
seat->hide_cursor_timeout = -1;
|
||||
seat->hide_cursor_when_typing = HIDE_WHEN_TYPING_DEFAULT;
|
||||
seat->hide_cursor_but_keep_active = HIDE_CURSOR_BUT_KEEP_ACTIVE_DEFAULT;
|
||||
seat->allow_constrain = CONSTRAIN_DEFAULT;
|
||||
seat->shortcuts_inhibit = SHORTCUTS_INHIBIT_DEFAULT;
|
||||
seat->keyboard_grouping = KEYBOARD_GROUP_DEFAULT;
|
||||
|
@ -154,6 +155,10 @@ void merge_seat_config(struct seat_config *dest, struct seat_config *source) {
|
|||
dest->hide_cursor_when_typing = source->hide_cursor_when_typing;
|
||||
}
|
||||
|
||||
if (source->hide_cursor_but_keep_active != HIDE_CURSOR_BUT_KEEP_ACTIVE_DEFAULT) {
|
||||
dest->hide_cursor_but_keep_active = source->hide_cursor_but_keep_active;
|
||||
}
|
||||
|
||||
if (source->allow_constrain != CONSTRAIN_DEFAULT) {
|
||||
dest->allow_constrain = source->allow_constrain;
|
||||
}
|
||||
|
|
|
@ -183,7 +183,10 @@ void cursor_update_image(struct sway_cursor *cursor,
|
|||
static void cursor_hide(struct sway_cursor *cursor) {
|
||||
wlr_cursor_unset_image(cursor->cursor);
|
||||
cursor->hidden = true;
|
||||
wlr_seat_pointer_notify_clear_focus(cursor->seat->wlr_seat);
|
||||
if (cursor->seat->config->hide_cursor_but_keep_active
|
||||
!= HIDE_CURSOR_BUT_KEEP_ACTIVE_ENABLE) {
|
||||
wlr_seat_pointer_notify_clear_focus(cursor->seat->wlr_seat);
|
||||
}
|
||||
}
|
||||
|
||||
static int hide_notify(void *data) {
|
||||
|
|
|
@ -258,7 +258,7 @@ correct seat.
|
|||
Set this seat as the fallback seat. A fallback seat will attach any device
|
||||
not explicitly attached to another seat (similar to a "default" seat).
|
||||
|
||||
*seat* <name> hide_cursor <timeout>|when-typing [enable|disable]
|
||||
*seat* <name> hide_cursor <timeout>|when-typing|but-keep-active [enable|disable]
|
||||
Hides the cursor image after the specified event occurred.
|
||||
|
||||
If _timeout_ is specified, then the cursor will be hidden after _timeout_
|
||||
|
@ -273,6 +273,9 @@ correct seat.
|
|||
certain types of software (Gimp, Blender etc) that rely on simultaneous
|
||||
input from mouse and keyboard.
|
||||
|
||||
If _but-keep-active_ is enabled, then the cursor will remain active when
|
||||
hidden. This solves the issues with _when-typing_ as mentioned above.
|
||||
|
||||
*seat* <name> idle_inhibit <sources...>
|
||||
Sets the set of input event sources which can prevent the seat from
|
||||
becoming idle, as a space separated list of source names. Valid names are
|
||||
|
|
Loading…
Reference in a new issue