Get rid of all the MSVC warnings.
[u/mdw/putty] / windows / winctrls.c
index 9ef09b7..9e8e0e7 100644 (file)
@@ -1161,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 */
@@ -2004,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.
@@ -2031,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;
 }
 
@@ -2236,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;