int h, w;
} drawcsr;
-void win_init(char* title, KeyBinding* bindings);
+void win_init(KeyBinding* bindings);
+void win_title(char* path);
void win_prop_set(char* xname, char* ename, char* value);
-void win_save(char* path);
void win_update(int ms);
void win_loop(void);
void win_quit(void);
/******************************************************************************/
-void win_init(char* title, KeyBinding* bindings) {
+void win_init(KeyBinding* bindings) {
Keys = bindings;
view_init(&Regions[TAGS], NULL);
view_init(&Regions[EDIT], NULL);
X.screen = DefaultScreen(X.display);
X.depth = DefaultDepth(X.display, X.screen);
font_load(FontString);
- x11_window("tide");
+ x11_window("unnamed");
/* initialize selection atoms */
for (int i = 0; i < (sizeof(Selections) / sizeof(Selections[0])); i++)
Selections[i].atom = XInternAtom(X.display, Selections[i].name, 0);
buf_logclear(&(view->buffer));
}
+void win_title(char* path) {
+ XStoreName(X.display, X.self, path);
+}
+
void win_prop_set(char* xname, char* ename, char* value) {
Atom propname = XInternAtom(X.display, xname, 0);
XChangeProperty(X.display, X.self, propname, XA_STRING, 8, PropModeReplace,
if (ename) setenv(ename, value, 1);
}
-void win_save(char* path) {
- View* view = win_view(EDIT);
- if (!path) path = view->buffer.path;
- if (!path) return;
- path = realpath(path, NULL);
- free(view->buffer.path);
- view->buffer.path = path;
- buf_save(&(view->buffer));
- win_prop_set("TIDE_FILE", "file", path);
-}
-
void win_update(int ms) {
job_poll(Timeout);
xupdate(NULL);
}
static void put(char* arg) {
- win_save(arg);
+ View* view = win_view(EDIT);
+ if (!arg) arg = view->buffer.path;
+ if (!arg) return;
+ char* path = realpath(arg, NULL);
+ free(view->buffer.path);
+ view->buffer.path = path;
+ buf_save(&(view->buffer));
+ win_title(path);
+ win_prop_set("TIDE_FILE", "file", path);
}
static void save(char* arg) {
if (!ShellCmd[0]) ShellCmd[0] = "/bin/sh";
/* create the window */
- win_init("tide", Bindings);
+ win_init(Bindings);
/* if we still have args left we're going to open it in this instance */
if (*argv) {
char* path = realpath(*argv, NULL);
view_init(win_view(EDIT), path);
+ win_title(path);
win_prop_set("TIDE_FILE", "file", path);
+ } else {
+ win_title("*scratch*");
}
/* now create the window and start the event loop */