mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-05 07:15:30 -04:00
feature: add resize-keep-grid to allow text reflow on font changes
This commit is contained in:
parent
a2fc2a986e
commit
1969717527
5 changed files with 23 additions and 1 deletions
4
config.c
4
config.c
|
|
@ -931,6 +931,9 @@ parse_section_main(struct context *ctx)
|
||||||
else if (streq(key, "resize-by-cells"))
|
else if (streq(key, "resize-by-cells"))
|
||||||
return value_to_bool(ctx, &conf->resize_by_cells);
|
return value_to_bool(ctx, &conf->resize_by_cells);
|
||||||
|
|
||||||
|
else if (streq(key, "resize-keep-grid"))
|
||||||
|
return value_to_bool(ctx, &conf->resize_keep_grid);
|
||||||
|
|
||||||
else if (streq(key, "bold-text-in-bright")) {
|
else if (streq(key, "bold-text-in-bright")) {
|
||||||
if (streq(value, "palette-based")) {
|
if (streq(value, "palette-based")) {
|
||||||
conf->bold_in_bright.enabled = true;
|
conf->bold_in_bright.enabled = true;
|
||||||
|
|
@ -3101,6 +3104,7 @@ config_load(struct config *conf, const char *conf_path,
|
||||||
.pad_x = 0,
|
.pad_x = 0,
|
||||||
.pad_y = 0,
|
.pad_y = 0,
|
||||||
.resize_by_cells = true,
|
.resize_by_cells = true,
|
||||||
|
.resize_keep_grid = true,
|
||||||
.resize_delay_ms = 100,
|
.resize_delay_ms = 100,
|
||||||
.bold_in_bright = {
|
.bold_in_bright = {
|
||||||
.enabled = false,
|
.enabled = false,
|
||||||
|
|
|
||||||
1
config.h
1
config.h
|
|
@ -140,6 +140,7 @@ struct config {
|
||||||
bool center;
|
bool center;
|
||||||
|
|
||||||
bool resize_by_cells;
|
bool resize_by_cells;
|
||||||
|
bool resize_keep_grid;
|
||||||
|
|
||||||
uint16_t resize_delay_ms;
|
uint16_t resize_delay_ms;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -287,6 +287,18 @@ empty string to be set, but it must be quoted: *KEY=""*)
|
||||||
|
|
||||||
Default: _yes_
|
Default: _yes_
|
||||||
|
|
||||||
|
*resize-keep-grid*
|
||||||
|
Boolean.
|
||||||
|
|
||||||
|
When set to *yes*, the window size will be adjusted with changes in font
|
||||||
|
size to preserve the dimensions of the text grid. When set to *no*, the
|
||||||
|
window size will remain constant and the text grid will be adjusted as
|
||||||
|
necessary to fit the window.
|
||||||
|
|
||||||
|
This option only applies to floating windows.
|
||||||
|
|
||||||
|
Default: _yes_
|
||||||
|
|
||||||
*initial-window-size-pixels*
|
*initial-window-size-pixels*
|
||||||
Initial window width and height in _pixels_ (subject to output
|
Initial window width and height in _pixels_ (subject to output
|
||||||
scaling), in the form _WIDTHxHEIGHT_. The height _includes_ the
|
scaling), in the form _WIDTHxHEIGHT_. The height _includes_ the
|
||||||
|
|
|
||||||
1
foot.ini
1
foot.ini
|
|
@ -27,6 +27,7 @@
|
||||||
# initial-window-mode=windowed
|
# initial-window-mode=windowed
|
||||||
# pad=0x0 # optionally append 'center'
|
# pad=0x0 # optionally append 'center'
|
||||||
# resize-by-cells=yes
|
# resize-by-cells=yes
|
||||||
|
# resize-keep-grid=yes
|
||||||
# resize-delay-ms=100
|
# resize-delay-ms=100
|
||||||
|
|
||||||
# bold-text-in-bright=no
|
# bold-text-in-bright=no
|
||||||
|
|
|
||||||
|
|
@ -819,11 +819,15 @@ term_set_fonts(struct terminal *term, struct fcft_font *fonts[static 4],
|
||||||
* render_resize() after this function */
|
* render_resize() after this function */
|
||||||
if (resize_grid) {
|
if (resize_grid) {
|
||||||
/* Use force, since cell-width/height may have changed */
|
/* Use force, since cell-width/height may have changed */
|
||||||
|
enum resize_options resize_opts = RESIZE_FORCE;
|
||||||
|
if (conf->resize_keep_grid)
|
||||||
|
resize_opts |= RESIZE_KEEP_GRID;
|
||||||
|
|
||||||
render_resize(
|
render_resize(
|
||||||
term,
|
term,
|
||||||
(int)roundf(term->width / term->scale),
|
(int)roundf(term->width / term->scale),
|
||||||
(int)roundf(term->height / term->scale),
|
(int)roundf(term->height / term->scale),
|
||||||
RESIZE_FORCE | RESIZE_KEEP_GRID);
|
resize_opts);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue