commit 7745e1a47059c54e3dec5a271ce31f6b119cc961
parent d74a4e3bac06ffb9df754d1c61dbe091bf468a23
Author: bsandro <email@bsandro.tech>
Date:   Tue, 22 Apr 2025 23:55:42 +0300
Always open a home directory by default
Diffstat:
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/gui/ui.c b/gui/ui.c
@@ -7,7 +7,7 @@
 #include "spritesheet.h"
 
 static int cols = 1;
-static volatile UIWindow *modal_win = NULL;
+static UIWindow *modal_win = NULL;
 static UIImageDisplay *img_disp = NULL;
 static UILabel *lbl_header = NULL;
 static Animation *img = NULL;
@@ -49,7 +49,7 @@ UIWindow * MainWindowCreate(const char *wname, int w, int h) {
 	UIButton *btnsave = UIButtonCreate(&panelh->e, 0, "Save", -1);
 	btnsave->e.messageUser = ButtonSaveEvent;
 	btnsave->e.cp = win;
-	UIButton *btn_exit = UIButtonCreate(&panelh->e, 0, "Close", -1);
+	UIButton *btn_exit = UIButtonCreate(&panelh->e, 0, "Exit", -1);
 	btn_exit->e.messageUser = ButtonCloseEvent;
 
 	img_disp = UIImageDisplayCreate(&panelv->e, UI_ELEMENT_V_FILL|UI_ELEMENT_H_FILL|UI_IMAGE_DISPLAY_INTERACTIVE|_UI_IMAGE_DISPLAY_ZOOM_FIT, NULL, 0, 0, 0);
@@ -62,7 +62,7 @@ UIWindow * MainWindowCreate(const char *wname, int w, int h) {
 int WinModalEvent(UIElement *element, UIMessage msg, int di, void *dp) {
 	if (msg==UI_MSG_DESTROY) {
 		//printf("modal bye\n");
-		assert(element==modal_win);
+		assert(element==(UIElement *)modal_win);
 		modal_win = NULL;
 	}
 	return 0;
@@ -188,7 +188,7 @@ int TableEvent(UIElement *element, UIMessage msg, int di, void *dp) {
 		filelist = NULL;
 		selected = -1;
 		UIElement *el = table->e.children;
-			printf("child %p\n", el);
+		printf("child %p\n", el);
 		while (el!=NULL) {
 			printf("child %p\n", el);
 		}
@@ -222,7 +222,7 @@ void ShowModalWindow(UIWindow *parent, const char *def_dir, const char *def_file
 
 		UITextbox *filename_input = UITextboxCreate(&panel_top->e, UI_ELEMENT_TAB_STOP|UI_ELEMENT_H_FILL);
 
-		printf("path_input: %p\nfilename_input: %p\n", path_input, filename_input);
+		printf("path_input: %p (%s)\nfilename_input: %p (%s)\n", path_input, def_dir, filename_input, def_file);
 		if (def_file!=NULL) {
 			UITextboxReplace(filename_input, def_file, -1, false);
 		}
@@ -236,9 +236,14 @@ void ShowModalWindow(UIWindow *parent, const char *def_dir, const char *def_file
 		UITable *table = UITableCreate(&panel_out->e, UI_ELEMENT_V_FILL, "Directory");
 		table->itemCount = 1; // at least '..' element
 		// @todo setting the initial directory this way is 100% trashcan
-		char *init_path = (char *)malloc(2*sizeof(char));
-		init_path[0] = '.';
-		init_path[1] = '\0';
+		char *init_path = NULL;
+		if (def_dir==NULL) {
+			init_path = malloc(sizeof(char)*2);
+			init_path[0] = '.';
+			init_path[1] = '\0';
+		} else {
+			init_path = strdup(def_dir);
+		}
 		table->e.cp = (void *)init_path;
 		table->e.messageUser = TableEvent;
 		UITableResizeColumns(table);
@@ -248,7 +253,7 @@ void ShowModalWindow(UIWindow *parent, const char *def_dir, const char *def_file
 }
 
 int ButtonSaveEvent(UIElement *element, UIMessage msg, int di, void *dp) {
-	if (msg==UI_MSG_CLICKED) {
+	if (msg==UI_MSG_CLICKED && img!=NULL) {
 		// printf("save button clicked\n");
 		char fname[strlen(img->filename)+7];
 		int n = snprintf(fname, NAME_MAX, "atlas_%s", img->filename);