Get rid of all the MSVC warnings.
[u/mdw/putty] / windows / winctrls.c
index 6d0b21c..9e8e0e7 100644 (file)
@@ -1039,6 +1039,10 @@ int handle_prefslist(struct prefslist *hdl,
             int dest = 0;             /* initialise to placate gcc */
             switch (dlm->uNotification) {
               case DL_BEGINDRAG:
+               /* Add a dummy item to make pl_itemfrompt() work
+                * better.
+                * FIXME: this causes scrollbar glitches if the count of
+                *        listbox contains >= its height. */
                hdl->dummyitem =
                    SendDlgItemMessage(hwnd, hdl->listid,
                                       LB_ADDSTRING, 0, (LPARAM) "");
@@ -1046,7 +1050,7 @@ int handle_prefslist(struct prefslist *hdl,
                 hdl->srcitem = LBItemFromPt(dlm->hWnd, dlm->ptCursor, TRUE);
                hdl->dragging = 0;
                /* XXX hack Q183115 */
-               SetWindowLong(hwnd, DWL_MSGRESULT, TRUE);
+               SetWindowLongPtr(hwnd, DWLP_MSGRESULT, TRUE);
                 ret |= 1; break;
               case DL_CANCELDRAG:
                DrawInsert(hwnd, dlm->hWnd, -1);     /* Clear arrow */
@@ -1060,9 +1064,9 @@ int handle_prefslist(struct prefslist *hdl,
                if (dest > hdl->dummyitem) dest = hdl->dummyitem;
                DrawInsert (hwnd, dlm->hWnd, dest);
                if (dest >= 0)
-                   SetWindowLong(hwnd, DWL_MSGRESULT, DL_MOVECURSOR);
+                   SetWindowLongPtr(hwnd, DWLP_MSGRESULT, DL_MOVECURSOR);
                else
-                   SetWindowLong(hwnd, DWL_MSGRESULT, DL_STOPCURSOR);
+                   SetWindowLongPtr(hwnd, DWLP_MSGRESULT, DL_STOPCURSOR);
                 ret |= 1; break;
               case DL_DROPPED:
                if (hdl->dragging) {
@@ -1157,10 +1161,11 @@ void progressbar(struct ctlpos *cp, int id)
  * Return value is a malloc'ed copy of the processed version of the
  * string.
  */
-static char *shortcut_escape(char *text, char shortcut)
+static char *shortcut_escape(const char *text, char shortcut)
 {
     char *ret;
-    char *p, *q;
+    char const *p;
+    char *q;
 
     if (!text)
        return NULL;                   /* sfree won't choke on this */
@@ -2000,13 +2005,12 @@ int winctrl_handle_command(struct dlgparam *dp, UINT msg,
 
 /*
  * This function can be called to produce context help on a
- * control. Returns TRUE if it has actually launched WinHelp.
+ * control. Returns TRUE if it has actually launched some help.
  */
 int winctrl_context_help(struct dlgparam *dp, HWND hwnd, int id)
 {
     int i;
     struct winctrl *c;
-    char *cmd;
 
     /*
      * Look up the control ID in our data.
@@ -2027,9 +2031,7 @@ int winctrl_context_help(struct dlgparam *dp, HWND hwnd, int id)
     if (!c->ctrl || !c->ctrl->generic.helpctx.p)
        return 0;                      /* no help available for this ctrl */
 
-    cmd = dupprintf("JI(`',`%s')", c->ctrl->generic.helpctx.p);
-    WinHelp(hwnd, help_path, HELP_COMMAND, (DWORD)cmd);
-    sfree(cmd);
+    launch_help(hwnd, c->ctrl->generic.helpctx.p);
     return 1;
 }
 
@@ -2232,6 +2234,53 @@ void dlg_text_set(union control *ctrl, void *dlg, char const *text)
     SetDlgItemText(dp->hwnd, c->base_id, text);
 }
 
+void dlg_label_change(union control *ctrl, void *dlg, char const *text)
+{
+    struct dlgparam *dp = (struct dlgparam *)dlg;
+    struct winctrl *c = dlg_findbyctrl(dp, ctrl);
+    char *escaped = NULL;
+    int id = -1;
+
+    assert(c);
+    switch (c->ctrl->generic.type) {
+      case CTRL_EDITBOX:
+       escaped = shortcut_escape(text, c->ctrl->editbox.shortcut);
+       id = c->base_id;
+       break;
+      case CTRL_RADIO:
+       escaped = shortcut_escape(text, c->ctrl->radio.shortcut);
+       id = c->base_id;
+       break;
+      case CTRL_CHECKBOX:
+       escaped = shortcut_escape(text, ctrl->checkbox.shortcut);
+       id = c->base_id;
+       break;
+      case CTRL_BUTTON:
+       escaped = shortcut_escape(text, ctrl->button.shortcut);
+       id = c->base_id;
+       break;
+      case CTRL_LISTBOX:
+       escaped = shortcut_escape(text, ctrl->listbox.shortcut);
+       id = c->base_id;
+       break;
+      case CTRL_FILESELECT:
+       escaped = shortcut_escape(text, ctrl->fileselect.shortcut);
+       id = c->base_id;
+       break;
+      case CTRL_FONTSELECT:
+       escaped = shortcut_escape(text, ctrl->fontselect.shortcut);
+       id = c->base_id;
+       break;
+      default:
+       assert(!"Can't happen");
+       break;
+    }
+    if (escaped) {
+       SetDlgItemText(dp->hwnd, id, escaped);
+       sfree(escaped);
+    }
+}
+
 void dlg_filesel_set(union control *ctrl, void *dlg, Filename fn)
 {
     struct dlgparam *dp = (struct dlgparam *)dlg;