From afa890e8e9f10667a56e896a114bf81fbc3ff54a Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski Date: Mon, 14 Sep 2020 19:49:01 +0200 Subject: [PATCH 1/3] input/cursor: reset event source after unhide Reset the event source after unhiding the cursor, to ensure that the timeout starts after showing the cursor. Also remove the open coded variant in seat_consider_warp_to_focus(). Fixes #5679 --- sway/input/cursor.c | 1 + sway/input/seat.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/sway/input/cursor.c b/sway/input/cursor.c index e43a0e719..dbb8c48d7 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -299,6 +299,7 @@ void cursor_unhide(struct sway_cursor *cursor) { cursor_set_image(cursor, image, cursor->image_client); } cursor_rebase(cursor); + wl_event_source_timer_update(cursor->hide_source, cursor_get_timeout(cursor)); } static void pointer_motion(struct sway_cursor *cursor, uint32_t time_msec, diff --git a/sway/input/seat.c b/sway/input/seat.c index e16d747cf..8c80e41c3 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -1482,7 +1482,6 @@ void seat_consider_warp_to_focus(struct sway_seat *seat) { } if (seat->cursor->hidden){ cursor_unhide(seat->cursor); - wl_event_source_timer_update(seat->cursor->hide_source, cursor_get_timeout(seat->cursor)); } } From eb1c09030ece6fcf0c6b387c8b74ded106eccecb Mon Sep 17 00:00:00 2001 From: Mustafa Abdul-Kader Date: Tue, 8 Sep 2020 21:43:35 -0500 Subject: [PATCH 2/3] swaynag: add details background option Adds a new config option for details background for swaynag issue/#5673 --- include/swaynag/types.h | 1 + swaynag/config.c | 8 ++++++++ swaynag/render.c | 4 ++-- swaynag/swaynag.1.scd | 3 +++ swaynag/swaynag.5.scd | 3 +++ swaynag/types.c | 7 +++++++ 6 files changed, 24 insertions(+), 2 deletions(-) diff --git a/include/swaynag/types.h b/include/swaynag/types.h index f7518d95b..24da94187 100644 --- a/include/swaynag/types.h +++ b/include/swaynag/types.h @@ -11,6 +11,7 @@ struct swaynag_type { // Colors uint32_t button_text; uint32_t button_background; + uint32_t details_background; uint32_t background; uint32_t text; uint32_t border; diff --git a/swaynag/config.c b/swaynag/config.c index 3488a74db..a57597ef8 100644 --- a/swaynag/config.c +++ b/swaynag/config.c @@ -38,6 +38,7 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag, TO_COLOR_BORDER, TO_COLOR_BORDER_BOTTOM, TO_COLOR_BUTTON, + TO_COLOR_DETAILS, TO_COLOR_TEXT, TO_COLOR_BUTTON_TEXT, TO_THICK_BAR_BORDER, @@ -77,6 +78,7 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag, {"border-bottom-size", required_argument, NULL, TO_THICK_BAR_BORDER}, {"message-padding", required_argument, NULL, TO_PADDING_MESSAGE}, {"details-border-size", required_argument, NULL, TO_THICK_DET_BORDER}, + {"details-background", required_argument, NULL, TO_COLOR_DETAILS}, {"button-border-size", required_argument, NULL, TO_THICK_BTN_BORDER}, {"button-gap", required_argument, NULL, TO_GAP_BTN}, {"button-dismiss-gap", required_argument, NULL, TO_GAP_BTN_DISMISS}, @@ -122,6 +124,7 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag, " --border-bottom-size size Thickness of the bar border.\n" " --message-padding padding Padding for the message.\n" " --details-border-size size Thickness for the details border.\n" + " --details-background RRGGBB[AA] Details background color.\n" " --button-border-size size Thickness for the button border.\n" " --button-gap gap Size of the gap between buttons\n" " --button-dismiss-gap gap Size of the gap for dismiss button.\n" @@ -253,6 +256,11 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag, fprintf(stderr, "Invalid button background color: %s", optarg); } break; + case TO_COLOR_DETAILS: // Details background color + if (type && !parse_color(optarg, &type->details_background)) { + fprintf(stderr, "Invalid details background color: %s", optarg); + } + break; case TO_COLOR_TEXT: // Text color if (type && !parse_color(optarg, &type->text)) { fprintf(stderr, "Invalid text color: %s", optarg); diff --git a/swaynag/render.c b/swaynag/render.c index 4537ec04a..cf2cc9e05 100644 --- a/swaynag/render.c +++ b/swaynag/render.c @@ -37,7 +37,7 @@ static void render_details_scroll_button(cairo_t *cairo, int border = swaynag->type->button_border_thickness * swaynag->scale; int padding = swaynag->type->button_padding * swaynag->scale; - cairo_set_source_u32(cairo, swaynag->type->border); + cairo_set_source_u32(cairo, swaynag->type->details_background); cairo_rectangle(cairo, button->x, button->y, button->width, button->height); cairo_fill(cairo); @@ -153,7 +153,7 @@ static uint32_t render_detailed(cairo_t *cairo, struct swaynag *swaynag, &swaynag->details.button_down); } - cairo_set_source_u32(cairo, swaynag->type->border); + cairo_set_source_u32(cairo, swaynag->type->details_background); cairo_rectangle(cairo, swaynag->details.x, swaynag->details.y, swaynag->details.width, swaynag->details.height); cairo_fill(cairo); diff --git a/swaynag/swaynag.1.scd b/swaynag/swaynag.1.scd index 61a699097..4a03469e4 100644 --- a/swaynag/swaynag.1.scd +++ b/swaynag/swaynag.1.scd @@ -106,6 +106,9 @@ _swaynag_ [options...] *--message-padding* Set the padding for the message. +*--details-background* + Set the color for the background for details. + *--details-border-size* Set the thickness for the details border. diff --git a/swaynag/swaynag.5.scd b/swaynag/swaynag.5.scd index 87f214232..a078a4d78 100644 --- a/swaynag/swaynag.5.scd +++ b/swaynag/swaynag.5.scd @@ -53,6 +53,9 @@ The following sizing options can also be set: *message-padding=* Set the padding for the message. +*details-gackground=* + The background color for the details. + *details-border-size=* Set the thickness for the details border. diff --git a/swaynag/types.c b/swaynag/types.c index 576dcbff9..fa045532e 100644 --- a/swaynag/types.c +++ b/swaynag/types.c @@ -36,6 +36,7 @@ void swaynag_types_add_default(list_t *types) { | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT; type_defaults->button_background = 0x333333FF; + type_defaults->details_background = 0x333333FF; type_defaults->background = 0x323232FF; type_defaults->text = 0xFFFFFFFF; type_defaults->button_text = 0xFFFFFFFF; @@ -53,6 +54,7 @@ void swaynag_types_add_default(list_t *types) { struct swaynag_type *type_error = swaynag_type_new("error"); type_error->button_background = 0x680A0AFF; + type_error->details_background = 0x680A0AFF; type_error->background = 0x900000FF; type_error->text = 0xFFFFFFFF; type_error->button_text = 0xFFFFFFFF; @@ -62,6 +64,7 @@ void swaynag_types_add_default(list_t *types) { struct swaynag_type *type_warning = swaynag_type_new("warning"); type_warning->button_background = 0xFFC100FF; + type_warning->details_background = 0xFFC100FF; type_warning->background = 0xFFA800FF; type_warning->text = 0x000000FF; type_warning->button_text = 0x000000FF; @@ -102,6 +105,10 @@ void swaynag_type_merge(struct swaynag_type *dest, struct swaynag_type *src) { dest->button_background = src->button_background; } + if (src->details_background > 0) { + dest->details_background = src->details_background; + } + if (src->background > 0) { dest->background = src->background; } From 2efecc14ef8ea7c82ae85f632a0def1a1719a91d Mon Sep 17 00:00:00 2001 From: Tudor Brindus Date: Mon, 14 Sep 2020 18:40:26 -0400 Subject: [PATCH 3/3] input/pointer: update cursor activity after updating button counts Otherwise, Sway will not re-hide a cursor after the last button has been released. Needed alongside afa890e to fix #5679. --- sway/input/cursor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway/input/cursor.c b/sway/input/cursor.c index dbb8c48d7..f5c2bd17c 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -378,7 +378,6 @@ void dispatch_cursor_button(struct sway_cursor *cursor, static void handle_pointer_button(struct wl_listener *listener, void *data) { struct sway_cursor *cursor = wl_container_of(listener, cursor, button); struct wlr_event_pointer_button *event = data; - cursor_handle_activity(cursor, event->device); if (event->state == WLR_BUTTON_PRESSED) { cursor->pressed_button_count++; @@ -390,6 +389,7 @@ static void handle_pointer_button(struct wl_listener *listener, void *data) { } } + cursor_handle_activity(cursor, event->device); dispatch_cursor_button(cursor, event->device, event->time_msec, event->button, event->state); transaction_commit_dirty();