{
struct dlgparam *dp = (struct dlgparam *)dlg;
struct winctrl *c = dlg_findbyctrl(dp, ctrl);
- char *ret;
- int size;
assert(c && c->ctrl->generic.type == CTRL_EDITBOX);
-
- size = 0;
- ret = NULL;
- do {
- size = size * 4 / 3 + 512;
- ret = sresize(ret, size, char);
- GetDlgItemText(dp->hwnd, c->base_id+1, ret, size);
- } while (!memchr(ret, '\0', size-1));
-
- return ret;
+ return GetDlgItemText_alloc(dp->hwnd, c->base_id+1);
}
/* The `listbox' functions can also apply to combo boxes. */
}
}
-void dlg_filesel_set(union control *ctrl, void *dlg, Filename fn)
+void dlg_filesel_set(union control *ctrl, void *dlg, Filename *fn)
{
struct dlgparam *dp = (struct dlgparam *)dlg;
struct winctrl *c = dlg_findbyctrl(dp, ctrl);
assert(c && c->ctrl->generic.type == CTRL_FILESELECT);
- SetDlgItemText(dp->hwnd, c->base_id+1, fn.path);
+ SetDlgItemText(dp->hwnd, c->base_id+1, fn->path);
}
-void dlg_filesel_get(union control *ctrl, void *dlg, Filename *fn)
+Filename *dlg_filesel_get(union control *ctrl, void *dlg)
{
struct dlgparam *dp = (struct dlgparam *)dlg;
struct winctrl *c = dlg_findbyctrl(dp, ctrl);
+ char *tmp;
+ Filename *ret;
assert(c && c->ctrl->generic.type == CTRL_FILESELECT);
- GetDlgItemText(dp->hwnd, c->base_id+1, fn->path, lenof(fn->path));
- fn->path[lenof(fn->path)-1] = '\0';
+ tmp = GetDlgItemText_alloc(dp->hwnd, c->base_id+1);
+ ret = filename_from_str(tmp);
+ sfree(tmp);
+ return ret;
}
void dlg_fontsel_set(union control *ctrl, void *dlg, FontSpec *fs)