From 277ca3a397955ac4bcb112cc50998b27ebcbcdc3 Mon Sep 17 00:00:00 2001 From: Ben Harris <bjh21@bjh21.me.uk> Date: Sat, 5 Apr 2003 15:01:16 +0000 Subject: [PATCH] Implement dlg_end(). [originally from svn r3059] --- mac/mac.h | 1 + mac/macctrls.c | 5 ++++- mac/macdlg.c | 15 ++++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/mac/mac.h b/mac/mac.h index d453de74..0f089229 100644 --- a/mac/mac.h +++ b/mac/mac.h @@ -71,6 +71,7 @@ union macctrl; struct macctrls { WindowPtr window; + void (*end)(WindowPtr, int); tree234 *byctrl; void *data; /* private data for config box */ unsigned int npanels; diff --git a/mac/macctrls.c b/mac/macctrls.c index f717b6d9..857a6340 100644 --- a/mac/macctrls.c +++ b/mac/macctrls.c @@ -1,4 +1,4 @@ -/* $Id: macctrls.c,v 1.24 2003/04/03 23:18:06 ben Exp $ */ +/* $Id: macctrls.c,v 1.25 2003/04/05 15:01:16 ben Exp $ */ /* * Copyright (c) 2003 Ben Harris * All rights reserved. @@ -1092,7 +1092,10 @@ void dlg_error_msg(void *dlg, char *msg) void dlg_end(void *dlg, int value) { + struct macctrls *mcs = dlg; + if (mcs->end != NULL) + (*mcs->end)(mcs->window, value); }; void dlg_refresh(union control *ctrl, void *dlg) diff --git a/mac/macdlg.c b/mac/macdlg.c index ec18aea8..872d1894 100644 --- a/mac/macdlg.c +++ b/mac/macdlg.c @@ -1,4 +1,4 @@ -/* $Id: macdlg.c,v 1.17 2003/03/29 23:07:55 ben Exp $ */ +/* $Id: macdlg.c,v 1.18 2003/04/05 15:01:16 ben Exp $ */ /* * Copyright (c) 2002 Ben Harris * All rights reserved. @@ -47,6 +47,7 @@ #include "storage.h" static void mac_closedlg(WindowPtr); +static void mac_enddlg(WindowPtr, int); void mac_newsession(void) { @@ -69,6 +70,7 @@ 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 = snew(WinInfo); @@ -96,6 +98,17 @@ static void mac_closedlg(WindowPtr window) 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) {