aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-25 01:57:29 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-25 01:57:29 -0400
commit5d16e595aafeac013398c846de5edfbf604bff96 (patch)
tree4a46dcbdac1f495fed272efdaf0a7eb7ba7ac49a
parent43e0b893dc4840705974d9314e299abc9170a699 (diff)
downloadrunes-5d16e595aafeac013398c846de5edfbf604bff96.tar.gz
runes-5d16e595aafeac013398c846de5edfbf604bff96.zip
implement window title setting
-rw-r--r--src/screen.c22
-rw-r--r--src/screen.h2
-rw-r--r--src/window-xlib.c12
3 files changed, 28 insertions, 8 deletions
diff --git a/src/screen.c b/src/screen.c
index d8b2388..24413ed 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -462,18 +462,24 @@ void runes_screen_reset_mouse_reporting_press_release(RunesTerm *t)
void runes_screen_set_window_title(RunesTerm *t, char *buf, size_t len)
{
- UNUSED(t);
- UNUSED(buf);
- UNUSED(len);
- fprintf(stderr, "set_window_title nyi\n");
+ RunesScreen *scr = &t->scr;
+
+ free(scr->title);
+ scr->title_len = len;
+ scr->title = malloc(scr->title_len);
+ memcpy(scr->title, buf, scr->title_len);
+ scr->update_title = 1;
}
void runes_screen_set_icon_name(RunesTerm *t, char *buf, size_t len)
{
- UNUSED(t);
- UNUSED(buf);
- UNUSED(len);
- fprintf(stderr, "set_icon_name nyi\n");
+ RunesScreen *scr = &t->scr;
+
+ free(scr->icon_name);
+ scr->icon_name_len = len;
+ scr->icon_name = malloc(scr->icon_name_len);
+ memcpy(scr->icon_name, buf, scr->icon_name_len);
+ scr->update_icon_name = 1;
}
void runes_screen_cleanup(RunesTerm *t)
diff --git a/src/screen.h b/src/screen.h
index d0e8e8a..932d5fe 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -58,7 +58,9 @@ struct runes_screen {
int scroll_bottom;
char *title;
+ size_t title_len;
char *icon_name;
+ size_t icon_name_len;
struct runes_row *rows;
struct runes_row *alternate;
diff --git a/src/window-xlib.c b/src/window-xlib.c
index 9b7b228..85864e3 100644
--- a/src/window-xlib.c
+++ b/src/window-xlib.c
@@ -453,6 +453,18 @@ static void runes_window_backend_flush(RunesTerm *t)
t->scr.visual_bell = 0;
}
+ if (t->scr.update_title) {
+ runes_window_backend_set_window_title(
+ t, t->scr.title, t->scr.title_len);
+ t->scr.update_title = 0;
+ }
+
+ if (t->scr.update_icon_name) {
+ runes_window_backend_set_icon_name(
+ t, t->scr.icon_name, t->scr.icon_name_len);
+ t->scr.update_icon_name = 0;
+ }
+
if (t->visual_bell_is_ringing) {
return;
}