yterm

commit 9d6f8951078af6ef5cb14001eefd0d31d07130d2

Author: mesyeti <mesyeti@mesyeti.uk>

change the window title

 source/app.c | 4 ++++
 source/window.h | 1 +
 source/window/sdl2.c | 18 ++++++++++++++++++
 source/window/sdl2.h | 2 ++


diff --git a/source/app.c b/source/app.c
index 3b200b3f4f68c40397cef1bc49ed04e8fee70dd9..3eeab25f095e31772a06caf52de5a1b23cf0f01b 100644
--- a/source/app.c
+++ b/source/app.c
@@ -139,6 +139,10 @@ 	for (size_t i = 0; i < app.tabNum; ++ i) {
 		Pane_Update(&app.tabs[i]);
 	}
 
+	// update window title
+	const char* winTitle = app.paneSel->v.terminal.title;
+	Window_SetTitle(&video.windows[0], winTitle);
+
 	// render
 	Buffer_Clear(&screen.buffer, BufAttr_Default());
 	BufCell bar;




diff --git a/source/window/sdl2.c b/source/window/sdl2.c
index 4f7cdd92673373cc1ea2f55817c4fdc4b1b9e7bd..c5a4e92e8a7ea667b541611349ab03c286920a53 100644
--- a/source/window/sdl2.c
+++ b/source/window/sdl2.c
@@ -36,11 +36,17 @@ 		Log("Failed to create window: %s", SDL_GetError());
 		exit(1);
 	}
 
+	ret.title = NewString(name);
+
 	return ret;
 }
 
 void Window_Free(Window* window) {
 	SDL_DestroyWindow(window->window);
+
+	if (window->title) {
+		free(window->title);
+	}
 }
 
 void Window_ShowCursor(bool show) {
@@ -71,6 +77,18 @@ }
 
 char* Window_GetClipboardText(void) {
 	return SDL_GetClipboardText();
+}
+
+void Window_SetTitle(Window* window, const char* title) {
+	if (window->title) {
+		if (strcmp(window->title, title) == 0) return;
+
+		free(window->title);
+	}
+
+	window->title = NewString(title);
+
+	SDL_SetWindowTitle(window->window, window->title);
 }
 
 #endif




diff --git a/source/window/sdl2.h b/source/window/sdl2.h
index 0ae0a0630016ec5d954ab9e235747ef3cfad1c1a..1c90a7914fa3b44039961917a30339c6f9d03a55 100644
--- a/source/window/sdl2.h
+++ b/source/window/sdl2.h
@@ -7,6 +7,8 @@ typedef struct {
 	WINDOW_COMMON;
 
 	SDL_Window* window;
+
+	char* title;
 } Window;
 
 #endif




diff --git a/source/window.h b/source/window.h
index 5977e0909c2e35dd25b8a55e5a61a111183bd4a1..79e9451024003108e90bc982636db4ae6de3d270 100644
--- a/source/window.h
+++ b/source/window.h
@@ -26,5 +26,6 @@ void   Window_ShowCursor(bool show);
 void   Window_SetRelativeMouseMode(bool enable);
 void   Window_MessageBox(int type, const char* title, const char* contents);
 char*  Window_GetClipboardText(void);
+void   Window_SetTitle(Window* window, const char* title);
 
 #endif