From 5d16e595aafeac013398c846de5edfbf604bff96 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 25 Apr 2014 01:57:29 -0400 Subject: implement window title setting --- src/screen.c | 22 ++++++++++++++-------- src/screen.h | 2 ++ src/window-xlib.c | 12 ++++++++++++ 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; } -- cgit v1.2.3