nbuttons = 0;
while (1) {
char *btext = va_arg(ap, char *);
- int bid;
if (!btext)
break;
- bid = va_arg(ap, int);
+ (void) va_arg(ap, int); /* id */
nbuttons++;
}
va_end(ap);
nbuttons = 0;
while (1) {
char *btext = va_arg(ap, char *);
- int bid;
if (!btext)
break;
- bid = va_arg(ap, int);
+ (void) va_arg(ap, int); /* id */
}
va_end(ap);
buttons = snewn(nbuttons, struct radio);
nbuttons = 0;
while (1) {
char *btext = va_arg(ap, char *);
- int bid;
if (!btext)
break;
- bid = va_arg(ap, int);
+ (void) va_arg(ap, int); /* id */
}
va_end(ap);
buttons = snewn(nbuttons, struct radio);
char *staticwrap(struct ctlpos *cp, HWND hwnd, char *text, int *lines)
{
HDC hdc = GetDC(hwnd);
- int lpx = GetDeviceCaps(hdc, LOGPIXELSX);
int width, nlines, j;
INT *pwidths, nfit;
SIZE size;
if (lines) *lines = nlines;
+ sfree(pwidths);
+
return ret;
}
winctrl_add_shortcuts(dp, c);
if (actual_base_id == base_id)
base_id += num_ids;
- }
+ } else {
+ sfree(data);
+ }
if (colstart >= 0) {
/*
{
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)
struct winctrl *c = dlg_findbyctrl(dp, ctrl);
int id;
HWND ctl;
+ if (!c)
+ return;
switch (ctrl->generic.type) {
case CTRL_EDITBOX: id = c->base_id + 1; break;
case CTRL_RADIO:
MessageBeep(0);
}
-void dlg_error_msg(void *dlg, char *msg)
+void dlg_error_msg(void *dlg, const char *msg)
{
struct dlgparam *dp = (struct dlgparam *)dlg;
MessageBox(dp->hwnd, msg,
dp->fixed_pitch_fonts = flag;
}
-struct perctrl_privdata {
- union control *ctrl;
- void *data;
- int needs_free;
-};
-
-static int perctrl_privdata_cmp(void *av, void *bv)
-{
- struct perctrl_privdata *a = (struct perctrl_privdata *)av;
- struct perctrl_privdata *b = (struct perctrl_privdata *)bv;
- if (a->ctrl < b->ctrl)
- return -1;
- else if (a->ctrl > b->ctrl)
- return +1;
- return 0;
-}
-
void dp_init(struct dlgparam *dp)
{
dp->nctrltrees = 0;
memset(dp->shortcuts, 0, sizeof(dp->shortcuts));
dp->hwnd = NULL;
dp->wintitle = dp->errtitle = NULL;
- dp->privdata = newtree234(perctrl_privdata_cmp);
dp->fixed_pitch_fonts = TRUE;
}
void dp_cleanup(struct dlgparam *dp)
{
- struct perctrl_privdata *p;
-
- if (dp->privdata) {
- while ( (p = index234(dp->privdata, 0)) != NULL ) {
- del234(dp->privdata, p);
- if (p->needs_free)
- sfree(p->data);
- sfree(p);
- }
- freetree234(dp->privdata);
- dp->privdata = NULL;
- }
sfree(dp->wintitle);
sfree(dp->errtitle);
}
-
-void *dlg_get_privdata(union control *ctrl, void *dlg)
-{
- struct dlgparam *dp = (struct dlgparam *)dlg;
- struct perctrl_privdata tmp, *p;
- tmp.ctrl = ctrl;
- p = find234(dp->privdata, &tmp, NULL);
- if (p)
- return p->data;
- else
- return NULL;
-}
-
-void dlg_set_privdata(union control *ctrl, void *dlg, void *ptr)
-{
- struct dlgparam *dp = (struct dlgparam *)dlg;
- struct perctrl_privdata tmp, *p;
- tmp.ctrl = ctrl;
- p = find234(dp->privdata, &tmp, NULL);
- if (!p) {
- p = snew(struct perctrl_privdata);
- p->ctrl = ctrl;
- p->needs_free = FALSE;
- add234(dp->privdata, p);
- }
- p->data = ptr;
-}
-
-void *dlg_alloc_privdata(union control *ctrl, void *dlg, size_t size)
-{
- struct dlgparam *dp = (struct dlgparam *)dlg;
- struct perctrl_privdata tmp, *p;
- tmp.ctrl = ctrl;
- p = find234(dp->privdata, &tmp, NULL);
- if (!p) {
- p = snew(struct perctrl_privdata);
- p->ctrl = ctrl;
- p->needs_free = FALSE;
- add234(dp->privdata, p);
- }
- assert(!p->needs_free);
- p->needs_free = TRUE;
- /*
- * This is an internal allocation routine, so it's allowed to
- * use smalloc directly.
- */
- p->data = smalloc(size);
- return p->data;
-}