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