summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Jones <philj56@gmail.com>2022-07-29 13:06:59 +0100
committerPhil Jones <philj56@gmail.com>2022-07-29 14:32:37 +0100
commit36296bb7005f35baa1b5e29e1d06d4c4a8356762 (patch)
tree53aeea9c6226879177fdfebbbc63e123144a1584
parent82d4c237d1f501cd7b0b8afc53ed87fd3ccf0e18 (diff)
Make a selection-padding of -1 be infinite.
-rw-r--r--doc/tofi.5.md3
-rw-r--r--doc/tofi.5.scd3
-rw-r--r--src/config.c2
-rw-r--r--src/entry.h2
-rw-r--r--src/entry_backend/harfbuzz.c5
-rw-r--r--src/entry_backend/pango.c5
6 files changed, 14 insertions, 6 deletions
diff --git a/doc/tofi.5.md b/doc/tofi.5.md
index 93db9c7..539b525 100644
--- a/doc/tofi.5.md
+++ b/doc/tofi.5.md
@@ -96,7 +96,8 @@ options.
**selection-padding**=*px*
-> Extra horizontal padding of the selection background.
+> Extra horizontal padding of the selection background. If *px* = -1,
+> the padding will fill the whole window width.
>
> Default: 0
diff --git a/doc/tofi.5.scd b/doc/tofi.5.scd
index 53ea3b3..8341200 100644
--- a/doc/tofi.5.scd
+++ b/doc/tofi.5.scd
@@ -86,7 +86,8 @@ options.
Default: #F92672
*selection-padding*=_px_
- Extra horizontal padding of the selection background.
+ Extra horizontal padding of the selection background. If _px_ = -1,
+ the padding will fill the whole window width.
Default: 0
diff --git a/src/config.c b/src/config.c
index b5e7d49..9b0fe91 100644
--- a/src/config.c
+++ b/src/config.c
@@ -264,7 +264,7 @@ bool parse_option(struct tofi *tofi, const char *filename, size_t lineno, const
} else if (strcasecmp(option, "selection-color") == 0) {
tofi->window.entry.selection_foreground_color = parse_color(filename, lineno, value, &err);
} else if (strcasecmp(option, "selection-padding") == 0) {
- tofi->window.entry.selection_background_padding = parse_uint32(filename, lineno, value, &err);
+ tofi->window.entry.selection_background_padding = parse_int32(filename, lineno, value, &err);
} else if (strcasecmp(option, "selection-background") == 0) {
tofi->window.entry.selection_background_color = parse_color(filename, lineno, value, &err);
} else if (strcasecmp(option, "width") == 0) {
diff --git a/src/entry.h b/src/entry.h
index 690cb2f..5536e06 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -59,7 +59,7 @@ struct entry {
uint32_t padding_bottom;
uint32_t padding_left;
uint32_t padding_right;
- uint32_t selection_background_padding;
+ int32_t selection_background_padding;
uint32_t input_width;
uint32_t border_width;
uint32_t outline_width;
diff --git a/src/entry_backend/harfbuzz.c b/src/entry_backend/harfbuzz.c
index db3be66..cba1fd8 100644
--- a/src/entry_backend/harfbuzz.c
+++ b/src/entry_backend/harfbuzz.c
@@ -257,7 +257,10 @@ void entry_backend_harfbuzz_update(struct entry *entry)
cairo_save(cr);
color = entry->selection_background_color;
cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a);
- uint32_t pad = entry->selection_background_padding;
+ int32_t pad = entry->selection_background_padding;
+ if (pad < 0) {
+ pad = entry->clip_width;
+ }
cairo_translate(cr, -pad, 0);
cairo_rectangle(cr, 0, 0, width + pad * 2, font_extents.height);
cairo_translate(cr, pad, 0);
diff --git a/src/entry_backend/pango.c b/src/entry_backend/pango.c
index bb0847a..73eeb49 100644
--- a/src/entry_backend/pango.c
+++ b/src/entry_backend/pango.c
@@ -109,7 +109,10 @@ void entry_backend_pango_update(struct entry *entry)
cairo_save(cr);
color = entry->selection_background_color;
cairo_set_source_rgba(cr, color.r, color.g, color.b, color.a);
- uint32_t pad = entry->selection_background_padding;
+ int32_t pad = entry->selection_background_padding;
+ if (pad < 0) {
+ pad = entry->clip_width;
+ }
cairo_translate(cr, -pad, 0);
cairo_rectangle(cr, 0, 0, (int)(width / PANGO_SCALE) + pad * 2, (int)(height / PANGO_SCALE));
cairo_translate(cr, pad, 0);