diff options
author | Simon Howard | 2013-09-08 19:10:40 +0000 |
---|---|---|
committer | Simon Howard | 2013-09-08 19:10:40 +0000 |
commit | f2c204ccca3b93b318cda3aebf29592aa30385e4 (patch) | |
tree | d63ddaa28421cccdf9789673cd2cb2dc688fb982 /textscreen/txt_fileselect.c | |
parent | f3afff090adb5af99dc6e1929a9907bf72fda920 (diff) | |
parent | e10af52152ba793d983497cd86d7ccc10d32a13d (diff) | |
download | chocolate-doom-f2c204ccca3b93b318cda3aebf29592aa30385e4.tar.gz chocolate-doom-f2c204ccca3b93b318cda3aebf29592aa30385e4.tar.bz2 chocolate-doom-f2c204ccca3b93b318cda3aebf29592aa30385e4.zip |
Merge from trunk.
Subversion-branch: /branches/v2-branch
Subversion-revision: 2639
Diffstat (limited to 'textscreen/txt_fileselect.c')
-rw-r--r-- | textscreen/txt_fileselect.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/textscreen/txt_fileselect.c b/textscreen/txt_fileselect.c index 56fa1108..52b0dc1c 100644 --- a/textscreen/txt_fileselect.c +++ b/textscreen/txt_fileselect.c @@ -149,7 +149,7 @@ static char *ExecReadOutput(char **argv) #include <windows.h> #include <shlobj.h> -static BOOL WINAPI (*MyGetOpenFileName)(LPOPENFILENAME) = NULL; +static BOOL (*MyGetOpenFileName)(LPOPENFILENAME) = NULL; static LPITEMIDLIST (*MySHBrowseForFolder)(LPBROWSEINFO) = NULL; static BOOL (*MySHGetPathFromIDList)(LPITEMIDLIST, LPTSTR) = NULL; @@ -591,6 +591,16 @@ static int DoSelectFile(txt_fileselect_t *fileselect) { path = TXT_SelectFile(fileselect->prompt, fileselect->extensions); + + // Update inputbox variable. + // If cancel was pressed (ie. NULL was returned by TXT_SelectFile) + // then reset to empty string, not NULL). + + if (path == NULL) + { + path = strdup(""); + } + var = fileselect->inputbox->value; free(*var); *var = path; @@ -658,6 +668,16 @@ txt_widget_class_t txt_fileselect_class = TXT_FileSelectFocused, }; +// If the (inner) inputbox widget is changed, emit a change to the +// outer (fileselect) widget. + +static void InputBoxChanged(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(fileselect)) +{ + TXT_CAST_ARG(txt_fileselect_t, fileselect); + + TXT_EmitSignal(&fileselect->widget, "changed"); +} + txt_fileselect_t *TXT_NewFileSelector(char **variable, int size, char *prompt, char **extensions) { @@ -671,6 +691,9 @@ txt_fileselect_t *TXT_NewFileSelector(char **variable, int size, fileselect->prompt = prompt; fileselect->extensions = extensions; + TXT_SignalConnect(fileselect->inputbox, "changed", + InputBoxChanged, fileselect); + return fileselect; } |