-/* $Id: mac.c,v 1.49 2003/02/15 16:22:15 ben Exp $ */
+/* $Id: mac.c,v 1.50 2003/02/20 22:31:52 ben Exp $ */
/*
* Copyright (c) 1999, 2003 Ben Harris
* All rights reserved.
static void mac_keypress(EventRecord *event) {
WindowPtr window;
- window = FrontWindow();
+ window = mac_frontwindow();
/*
* Check for a command-key combination, but ignore it if it counts
* as a meta-key combination and we're in a terminal window.
mac_adjustmenus();
mac_menucommand(MenuKey(event->message & charCodeMask));
} else {
- if (mac_wininfo(window)->key != NULL)
+ if (window != NULL && mac_wininfo(window)->key != NULL)
(*mac_wininfo(window)->key)(window, event);
}
}
menu = HiWord(result);
item = LoWord(result);
- window = FrontWindow();
+ window = mac_frontwindow();
/* Things which do the same whatever window we're in. */
switch (menu) {
case mApple:
break;
}
/* If we get here, handling is up to window-specific code. */
- if (mac_wininfo(window)->menu != NULL)
+ if (window != NULL && mac_wininfo(window)->menu != NULL)
(*mac_wininfo(window)->menu)(window, menu, item);
done:
WindowPtr window;
MenuHandle menu;
- window = FrontWindow();
+ window = mac_frontwindow();
menu = GetMenuHandle(mApple);
EnableItem(menu, 0);
EnableItem(menu, iAbout);
DisableItem(menu, iClose);
EnableItem(menu, iQuit);
- if (mac_wininfo(window)->adjustmenus != NULL)
+ if (window != NULL && mac_wininfo(window)->adjustmenus != NULL)
(*mac_wininfo(window)->adjustmenus)(window);
else {
DisableItem(menu, iSave);
/* PuTTYgen per-window state */
typedef struct KeyState {
DialogPtr box;
+ int collecting_entropy;
+ int entropy_got, entropy_required, entropy_size;
+ unsigned *entropy;
+ ControlHandle progress;
} KeyState;
#define mac_windowkey(w) (((WinInfo *)GetWRefCon(w))->ks)
+/* from macmisc.c */
+extern WindowPtr mac_frontwindow(void);
/* from macdlg.c */
extern void mac_newsession(void);
extern void mac_dupsession(void);
-/* $Id: macmisc.c,v 1.1 2003/02/12 23:53:15 ben Exp $ */
+/* $Id: macmisc.c,v 1.2 2003/02/20 22:31:52 ben Exp $ */
/*
* Copyright (c) 1999, 2003 Ben Harris
* All rights reserved.
#include <MacTypes.h>
#include <Dialogs.h>
#include <Files.h>
+#include <MacWindows.h>
+#include <Processes.h>
#include <Quickdraw.h>
#include <TextUtils.h>
#include <stdio.h>
#include "putty.h"
+#include "mac.h"
#if TARGET_API_MAC_CARBON
/*
QDGlobals qd;
#endif
+/*
+ * Like FrontWindow(), but return NULL if we aren't the front process
+ * (i.e. the front window isn't one of ours).
+ */
+WindowPtr mac_frontwindow(void)
+{
+ ProcessSerialNumber frontpsn;
+ ProcessSerialNumber curpsn = { 0, kCurrentProcess };
+ Boolean result;
+
+ GetFrontProcess(&frontpsn);
+ if (SameProcess(&frontpsn, &curpsn, &result) == noErr && result)
+ return FrontWindow();
+ return NULL;
+}
+
void fatalbox(char *fmt, ...) {
va_list ap;
Str255 stuff;