mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-21 05:33:45 -04:00
render: add render_resize_force()
This forces a full resize operation, even though actual window size (or scale) hasn't changed.
This commit is contained in:
parent
2560e83c54
commit
9e2ca2b1a3
2 changed files with 20 additions and 5 deletions
23
render.c
23
render.c
|
|
@ -995,10 +995,10 @@ reflow(struct row **new_grid, int new_cols, int new_rows,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move to terminal.c? */
|
/* Move to terminal.c? */
|
||||||
void
|
static void
|
||||||
render_resize(struct terminal *term, int width, int height)
|
maybe_resize(struct terminal *term, int width, int height, bool force)
|
||||||
{
|
{
|
||||||
if (width == 0 || height == 0)
|
if (!force && (width == 0 || height == 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int scale = -1;
|
int scale = -1;
|
||||||
|
|
@ -1015,12 +1015,12 @@ render_resize(struct terminal *term, int width, int height)
|
||||||
width *= scale;
|
width *= scale;
|
||||||
height *= scale;
|
height *= scale;
|
||||||
|
|
||||||
if (width == 0 && height == 0) {
|
if (!force && width == 0 && height == 0) {
|
||||||
/* Assume we're not fully up and running yet */
|
/* Assume we're not fully up and running yet */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width == term->width && height == term->height && scale == term->scale)
|
if (!force && width == term->width && height == term->height && scale == term->scale)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Cancel an application initiated "Synchronized Update" */
|
/* Cancel an application initiated "Synchronized Update" */
|
||||||
|
|
@ -1124,10 +1124,23 @@ render_resize(struct terminal *term, int width, int height)
|
||||||
|
|
||||||
term->render.last_cursor.cell = NULL;
|
term->render.last_cursor.cell = NULL;
|
||||||
|
|
||||||
|
term->render.last_buf = NULL;
|
||||||
term_damage_view(term);
|
term_damage_view(term);
|
||||||
render_refresh(term);
|
render_refresh(term);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
render_resize(struct terminal *term, int width, int height)
|
||||||
|
{
|
||||||
|
return maybe_resize(term, width, height, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
render_resize_force(struct terminal *term, int width, int height)
|
||||||
|
{
|
||||||
|
return maybe_resize(term, width, height, true);
|
||||||
|
}
|
||||||
|
|
||||||
static void xcursor_callback(
|
static void xcursor_callback(
|
||||||
void *data, struct wl_callback *wl_callback, uint32_t callback_data);
|
void *data, struct wl_callback *wl_callback, uint32_t callback_data);
|
||||||
|
|
||||||
|
|
|
||||||
2
render.h
2
render.h
|
|
@ -9,6 +9,8 @@ struct renderer *render_init(struct fdm *fdm, struct wayland *wayl);
|
||||||
void render_destroy(struct renderer *renderer);
|
void render_destroy(struct renderer *renderer);
|
||||||
|
|
||||||
void render_resize(struct terminal *term, int width, int height);
|
void render_resize(struct terminal *term, int width, int height);
|
||||||
|
void render_resize_force(struct terminal *term, int width, int height);
|
||||||
|
|
||||||
void render_set_title(struct terminal *term, const char *title);
|
void render_set_title(struct terminal *term, const char *title);
|
||||||
void render_refresh(struct terminal *term);
|
void render_refresh(struct terminal *term);
|
||||||
bool render_xcursor_set(struct terminal *term);
|
bool render_xcursor_set(struct terminal *term);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue