-/* $Id: macpgkey.c,v 1.1 2003/02/16 13:03:12 ben Exp $ */
+/* $Id: macpgkey.c,v 1.2 2003/02/16 14:27:37 ben Exp $ */
/*
* Copyright (c) 2003 Ben Harris
* All rights reserved.
#include "mac.h"
#include "macpgrid.h"
+static void mac_clickkey(WindowPtr window, EventRecord *event)
+{
+ short item;
+ DialogRef dialog;
+
+ dialog = GetDialogFromWindow(window);
+ if (DialogSelect(event, &dialog, &item))
+ switch (item) {
+ case wiKeyGenerate:
+ /* Do something */
+ break;
+ }
+}
+
+static void mac_activatekey(WindowPtr window, EventRecord *event)
+{
+ DialogRef dialog;
+ DialogItemType itemtype;
+ Handle itemhandle;
+ short item;
+ Rect itemrect;
+ int active;
+
+ dialog = GetDialogFromWindow(window);
+ active = (event->modifiers & activeFlag) != 0;
+ GetDialogItem(dialog, wiKeyGenerate, &itemtype, &itemhandle, &itemrect);
+ HiliteControl((ControlHandle)itemhandle, active ? 0 : 255);
+ DialogSelect(event, &dialog, &item);
+}
+
+static void mac_updatekey(WindowPtr window)
+{
+#if TARGET_API_MAC_CARBON
+ RgnHandle rgn;
+#endif
+
+ BeginUpdate(window);
+#if TARGET_API_MAC_CARBON
+ rgn = NewRgn();
+ GetPortVisibleRegion(GetWindowPort(window), rgn);
+ UpdateDialog(GetDialogFromWindow(window), rgn);
+ DisposeRgn(rgn);
+#else
+ UpdateDialog(window, window->visRgn);
+#endif
+ EndUpdate(window);
+}
+
void mac_newkey(void)
{
KeyState *ks;
memset(wi, 0, sizeof(*wi));
wi->ks = ks;
wi->wtype = wKey;
- SetWRefCon(ks->box, (long)wi);
- ShowWindow(ks->box);
+ wi->update = &mac_updatekey;
+ wi->click = &mac_clickkey;
+ wi->activate = &mac_activatekey;
+ SetWRefCon(GetDialogWindow(ks->box), (long)wi);
+ ShowWindow(GetDialogWindow(ks->box));
}
/*