mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-17 05:33:52 -04:00
term: add ‘id’ parameter to term_osc8_open()
The current OSC-8 URL’s ID is now tracked along with the URI itself, and its starting point.
This commit is contained in:
parent
ecbfc2bbe9
commit
b934969b85
3 changed files with 7 additions and 4 deletions
2
osc.c
2
osc.c
|
|
@ -433,7 +433,7 @@ osc_uri(struct terminal *term, char *string)
|
||||||
if (uri[0] == '\0')
|
if (uri[0] == '\0')
|
||||||
term_osc8_close(term);
|
term_osc8_close(term);
|
||||||
else
|
else
|
||||||
term_osc8_open(term, uri);
|
term_osc8_open(term, id, uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -3016,7 +3016,7 @@ term_ime_set_cursor_rect(struct terminal *term, int x, int y, int width,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
term_osc8_open(struct terminal *term, const char *uri)
|
term_osc8_open(struct terminal *term, uint64_t id, const char *uri)
|
||||||
{
|
{
|
||||||
if (unlikely(term->vt.osc8.begin.row < 0)) {
|
if (unlikely(term->vt.osc8.begin.row < 0)) {
|
||||||
/* It’s valid to switch from one URI to another without
|
/* It’s valid to switch from one URI to another without
|
||||||
|
|
@ -3028,6 +3028,7 @@ term_osc8_open(struct terminal *term, const char *uri)
|
||||||
.col = term->grid->cursor.point.col,
|
.col = term->grid->cursor.point.col,
|
||||||
.row = grid_row_absolute(term->grid, term->grid->cursor.point.row),
|
.row = grid_row_absolute(term->grid, term->grid->cursor.point.row),
|
||||||
};
|
};
|
||||||
|
term->vt.osc8.id = id;
|
||||||
term->vt.osc8.uri = xstrdup(uri);
|
term->vt.osc8.uri = xstrdup(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3066,6 +3067,7 @@ term_osc8_close(struct terminal *term)
|
||||||
|
|
||||||
done:
|
done:
|
||||||
free(term->vt.osc8.uri);
|
free(term->vt.osc8.uri);
|
||||||
|
term->vt.osc8.id = 0;
|
||||||
term->vt.osc8.uri = NULL;
|
term->vt.osc8.uri = NULL;
|
||||||
term->vt.osc8.begin = (struct coord){-1, -1};
|
term->vt.osc8.begin = (struct coord){-1, -1};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -169,8 +169,9 @@ struct vt {
|
||||||
|
|
||||||
/* Start coordinate for current OSC-8 URI */
|
/* Start coordinate for current OSC-8 URI */
|
||||||
struct {
|
struct {
|
||||||
struct coord begin;
|
uint64_t id;
|
||||||
char *uri;
|
char *uri;
|
||||||
|
struct coord begin;
|
||||||
} osc8;
|
} osc8;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|
@ -690,5 +691,5 @@ void term_ime_set_cursor_rect(
|
||||||
void term_urls_reset(struct terminal *term);
|
void term_urls_reset(struct terminal *term);
|
||||||
void term_collect_urls(struct terminal *term);
|
void term_collect_urls(struct terminal *term);
|
||||||
|
|
||||||
void term_osc8_open(struct terminal *term, const char *uri);
|
void term_osc8_open(struct terminal *term, uint64_t id, const char *uri);
|
||||||
void term_osc8_close(struct terminal *term);
|
void term_osc8_close(struct terminal *term);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue