Add input-focus support for System 7, where the Control Manager can't do
[u/mdw/putty] / mac / mac.h
index 07c8513..d453de7 100644 (file)
--- a/mac/mac.h
+++ b/mac/mac.h
@@ -15,6 +15,7 @@
 #include <UnicodeConverter.h>
 
 #include "charset.h"
+#include "tree234.h"
 
 #define PUTTY_CREATOR  FOUR_CHAR_CODE('pTTY')
 #define INTERNAL_CREATOR FOUR_CHAR_CODE('pTTI')
@@ -47,6 +48,7 @@ extern UInt32 sleeptime;
 typedef struct {
     struct Session *s;    /* Only used in PuTTY */
     struct KeyState *ks; /* Only used in PuTTYgen */
+    struct macctrls *mcs;
 
     void (*activate)   (WindowPtr, EventRecord *);
     void (*adjustcursor)(WindowPtr, Point, RgnHandle);
@@ -63,6 +65,19 @@ typedef struct {
 
 #define mac_wininfo(w)         ((WinInfo *)GetWRefCon(w))
 #define mac_windowsession(w)   (((WinInfo *)GetWRefCon(w))->s)
+#define mac_winctrls(w)                (((WinInfo *)GetWRefCon(w))->mcs)
+
+union macctrl;
+
+struct macctrls {
+    WindowPtr          window;
+    tree234            *byctrl;
+    void               *data; /* private data for config box */
+    unsigned int       npanels;
+    unsigned int       curpanel;
+    union macctrl      **panels; /* lists of controls by panel */
+    union macctrl      *focus; /* Input focus for System 7 */
+};    
 
 typedef struct Session {
     struct Session *next;
@@ -96,7 +111,6 @@ typedef struct Session {
     Point              font_bignumer;
     Point              font_bigdenom;
     WindowPtr          window;
-    WindowPtr          settings_window;
     WindowPtr          eventlog_window;
     ListHandle         eventlog;
     PaletteHandle      palette;
@@ -107,6 +121,11 @@ typedef struct Session {
     charset_t          font_charset; /* font_charset is used at a time. */
     int                        hasfile;
     FSSpec             savefile;
+
+    /* Config dialogue bits */
+    WindowPtr          settings_window;
+    struct controlbox  *ctrlbox;
+    struct macctrls    settings_ctrls;
 } Session;
 
 extern Session *sesslist;
@@ -179,6 +198,17 @@ extern Socket ot_newlistener(char *, int, Plug, int);
 extern char *ot_addr_error(SockAddr);
 /* from macabout.c */
 extern void mac_openabout(void);
+/* from macctrls.c */
+extern void macctrl_layoutbox(struct controlbox *, WindowPtr,
+                             struct macctrls *);
+extern void macctrl_activate(WindowPtr, EventRecord *);
+extern void macctrl_click(WindowPtr, EventRecord *);
+extern void macctrl_key(WindowPtr, EventRecord *);
+extern void macctrl_update(WindowPtr);
+extern void macctrl_adjustmenus(WindowPtr);
+extern void macctrl_close(WindowPtr);
+
+
 /* from macpgkey.c */
 extern void mac_newkey(void);
 /* Apple Event Handlers (in various files) */