]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - windows/winctrls.c
first pass
[PuTTY.git] / windows / winctrls.c
index c9300cdd82d10057c08cdda34a0a1d8d011cc407..a03967e6f81917a07e9669ea89448ba9b57098d7 100644 (file)
@@ -76,7 +76,7 @@ HWND doctl(struct ctlpos *cp, RECT r,
     if (cp->hwnd) {
        ctl = CreateWindowEx(exstyle, wclass, wtext, wstyle,
                             r.left, r.top, r.right, r.bottom,
-                            cp->hwnd, (HMENU) wid, hinst, NULL);
+                            cp->hwnd, (HMENU)(ULONG_PTR)wid, hinst, NULL);
        SendMessage(ctl, WM_SETFONT, cp->font, MAKELPARAM(TRUE, 0));
 
        if (!strcmp(wclass, "LISTBOX")) {
@@ -267,10 +267,9 @@ void radioline(struct ctlpos *cp, char *text, int id, int nacross, ...)
     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);
@@ -299,10 +298,10 @@ void bareradioline(struct ctlpos *cp, int nacross, ...)
     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);
     buttons = snewn(nbuttons, struct radio);
@@ -330,10 +329,10 @@ void radiobig(struct ctlpos *cp, char *text, int id, ...)
     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);
     buttons = snewn(nbuttons, struct radio);
@@ -372,7 +371,6 @@ void checkbox(struct ctlpos *cp, char *text, int id)
 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;
@@ -448,6 +446,8 @@ char *staticwrap(struct ctlpos *cp, HWND hwnd, char *text, int *lines)
 
     if (lines) *lines = nlines;
 
+    sfree(pwidths);
+
     return ret;
 }
 
@@ -1665,7 +1665,9 @@ void winctrl_layout(struct dlgparam *dp, struct winctrls *wc,
            winctrl_add_shortcuts(dp, c);
            if (actual_base_id == base_id)
                base_id += num_ids;
-       }
+       } else {
+            sfree(data);
+        }
 
        if (colstart >= 0) {
            /*
@@ -2366,6 +2368,8 @@ void dlg_set_focus(union control *ctrl, void *dlg)
     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:
@@ -2400,7 +2404,7 @@ void dlg_beep(void *dlg)
     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,
@@ -2526,23 +2530,6 @@ void dlg_set_fixed_pitch_flag(void *dlg, int flag)
     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;
@@ -2552,7 +2539,6 @@ void dp_init(struct dlgparam *dp)
     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;
 }
 
@@ -2564,67 +2550,6 @@ void dp_add_tree(struct dlgparam *dp, struct winctrls *wc)
 
 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;
-}