diff --git a/src/filechooser.c b/src/filechooser.c index d86f43f..57f79dd 100644 --- a/src/filechooser.c +++ b/src/filechooser.c @@ -98,6 +98,13 @@ static void addr_up_activate(MwWidget handle, void* user, void* call) { free(p); } +static void addr_activate(MwWidget handle, void* user, void* call) { + (void)user; + (void)call; + + scan(handle->parent, MwGetText(handle, MwNtext)); +} + static void layout(MwWidget handle) { filechooser_t* fc = handle->opaque; int w = MwGetInteger(handle, MwNwidth); @@ -147,6 +154,7 @@ static void layout(MwWidget handle) { wh = 24; if(fc->addr == NULL) { fc->addr = MwCreateWidget(MwEntryClass, "addr", handle, wx, wy, ww, wh); + MwAddUserHandler(fc->addr, MwNactivateHandler, addr_activate, NULL); } else { MwVaApply(fc->addr, MwNx, wx, @@ -312,6 +320,8 @@ static void scan(MwWidget handle, const char* path) { MwDirectoryClose(dir); qsort(fc->entries, arrlen(fc->entries), sizeof(MwDirectoryEntry*), qsort_files); + } else { + MwMessageBox(handle, "Directory does not exist!", "Error", MwMB_ICONERROR | MwMB_BUTTONOK); } if(fc->path != NULL) free(fc->path); diff --git a/src/widget/entry.c b/src/widget/entry.c index 20162cc..62c7f09 100644 --- a/src/widget/entry.c +++ b/src/widget/entry.c @@ -100,6 +100,8 @@ static void key(MwWidget handle, int code) { } else if(code == MwLLKeyRight) { if(t->cursor == MwUTF8Length(str)) return; t->cursor++; + } else if(code == MwLLKeyEnter) { + MwDispatchUserHandler(handle, MwNactivateHandler, NULL); } else if(!(code & MwLLKeyMask)) { int incr = 0; out = malloc(strlen(str) + 5 + 1);