X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/5cec2fd9fc0afb60289664fcfdda0dac135975b6..479fe1ba750b1cda0ad3a159f2727619555436b0:/mac/macdlg.c diff --git a/mac/macdlg.c b/mac/macdlg.c index b5272dbd..872d1894 100644 --- a/mac/macdlg.c +++ b/mac/macdlg.c @@ -1,4 +1,4 @@ -/* $Id: macdlg.c,v 1.14 2003/03/17 22:38:18 ben Exp $ */ +/* $Id: macdlg.c,v 1.18 2003/04/05 15:01:16 ben Exp $ */ /* * Copyright (c) 2002 Ben Harris * All rights reserved. @@ -46,11 +46,8 @@ #include "macresid.h" #include "storage.h" -static void mac_clickdlg(WindowPtr, EventRecord *); -static void mac_activatedlg(WindowPtr, EventRecord *); -static void mac_updatedlg(WindowPtr); -static void mac_adjustdlgmenus(WindowPtr); static void mac_closedlg(WindowPtr); +static void mac_enddlg(WindowPtr, int); void mac_newsession(void) { @@ -58,7 +55,7 @@ void mac_newsession(void) WinInfo *wi; static struct sesslist sesslist; - s = smalloc(sizeof(*s)); + s = snew(Session); memset(s, 0, sizeof(*s)); do_defaults(NULL, &s->cfg); s->hasfile = FALSE; @@ -73,28 +70,52 @@ void mac_newsession(void) setup_config_box(s->ctrlbox, &sesslist, FALSE, 0); s->settings_ctrls.data = &s->cfg; + s->settings_ctrls.end = &mac_enddlg; macctrl_layoutbox(s->ctrlbox, s->settings_window, &s->settings_ctrls); - wi = smalloc(sizeof(*wi)); + wi = snew(WinInfo); memset(wi, 0, sizeof(*wi)); wi->s = s; wi->mcs = &s->settings_ctrls; wi->wtype = wSettings; wi->update = &macctrl_update; wi->click = &macctrl_click; + wi->key = &macctrl_key; wi->activate = &macctrl_activate; wi->adjustmenus = &macctrl_adjustmenus; - wi->close = &macctrl_close; + wi->close = &mac_closedlg; SetWRefCon(s->settings_window, (long)wi); ShowWindow(s->settings_window); } +static void mac_closedlg(WindowPtr window) +{ + Session *s = mac_windowsession(window); + + macctrl_close(window); + DisposeWindow(window); + if (s->window == NULL) + sfree(s); +} + +static void mac_enddlg(WindowPtr window, int value) +{ + Session *s = mac_windowsession(window); + + if (value == 0) + mac_closedlg(window); + else { + mac_startsession(s); + mac_closedlg(window); + } +} + void mac_dupsession(void) { Session *s1 = mac_windowsession(FrontWindow()); Session *s2; - s2 = smalloc(sizeof(*s2)); + s2 = snew(Session); memset(s2, 0, sizeof(*s2)); s2->cfg = s1->cfg; s2->hasfile = s1->hasfile; @@ -110,7 +131,7 @@ static OSErr mac_opensessionfrom(FSSpec *fss) void *sesshandle; OSErr err; - s = smalloc(sizeof(*s)); + s = snew(Session); memset(s, 0, sizeof(*s)); err = FSpGetFInfo(fss, &fi);