Improve the tab order in the Tunnels box: the `Add' button should
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 18 Dec 2002 11:49:14 +0000 (11:49 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 18 Dec 2002 11:49:14 +0000 (11:49 +0000)
happen _after_ all the controls that set up the forwarding, since
that's the obvious order you'd want to use them in.

git-svn-id: svn://svn.tartarus.org/sgt/putty@2346 cda61777-01e9-0310-a592-d414129be87e

winctrls.c
windlg.c
winstuff.h

index f44a0be..5322823 100644 (file)
@@ -1139,14 +1139,17 @@ void progressbar(struct ctlpos *cp, int id)
  * Another special control: the forwarding options setter. First a
  * list box; next a static header line, introducing a pair of edit
  * boxes with associated statics, another button, and a radio
- * button pair.
+ * button pair. Then we have a bareradioline, which is included in
+ * this control group because it belongs before the `Add' button in
+ * the tab order.
  */
 void fwdsetter(struct ctlpos *cp, int listid, char *stext, int sid,
               char *e1stext, int e1sid, int e1id,
               char *e2stext, int e2sid, int e2id,
-              char *btext, int bid)
+              char *btext, int bid,
+              char *r1text, int r1id, char *r2text, int r2id)
 {
-    RECT r;
+    RECT r, button_r;
     const int height = (STATICHEIGHT > EDITHEIGHT
                        && STATICHEIGHT >
                        PUSHBTNHEIGHT ? STATICHEIGHT : EDITHEIGHT >
@@ -1195,11 +1198,19 @@ void fwdsetter(struct ctlpos *cp, int listid, char *stext, int sid,
                      WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL,
                      WS_EX_CLIENTEDGE, "", j == 0 ? e1id : e2id);
            } else if (i == 3) {
-               doctl(cp, r, "BUTTON",
-                     WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON,
-                     0, btext, bid);
+               /*
+                * We postpone creation of the button until we've
+                * done everything else, since it belongs last in
+                * the tab order.
+                */
+               button_r = r;          /* structure copy */
            }
        }
        cp->ypos += height + GAPWITHIN;
     }
+    bareradioline(cp, 2, r1text, r1id, r2text, r2id, NULL);
+    /* Create the postponed button. */
+    doctl(cp, button_r, "BUTTON",
+         WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON,
+         0, btext, bid);
 }
index 8119464..89ead9a 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -2037,10 +2037,9 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
                      "Add new forwarded port:", IDC_PFWDSTATIC2,
                      "&Source port", IDC_SPORTSTATIC, IDC_SPORTEDIT,
                      "Dest&ination", IDC_DPORTSTATIC, IDC_DPORTEDIT,
-                     "A&dd", IDC_PFWDADD);
-           bareradioline(&cp, 2,
-                         "&Local", IDC_PFWDLOCAL,
-                         "Re&mote", IDC_PFWDREMOTE, NULL);
+                     "A&dd", IDC_PFWDADD,
+                     "&Local", IDC_PFWDLOCAL,
+                     "Re&mote", IDC_PFWDREMOTE);
            endbox(&cp);
 
        }
index 9e62664..06fb944 100644 (file)
@@ -170,7 +170,8 @@ void progressbar(struct ctlpos *cp, int id);
 void fwdsetter(struct ctlpos *cp, int listid, char *stext, int sid,
               char *e1stext, int e1sid, int e1id,
               char *e2stext, int e2sid, int e2id,
-              char *btext, int bid);
+              char *btext, int bid,
+              char *r1text, int r1id, char *r2text, int r2id);
 
 /*
  * Exports from windlg.c.