fix bug in filterproc interface
diff --git a/Mac/Lib/test/tdlg.py b/Mac/Lib/test/tdlg.py
index f234a70..d6fdd97 100644
--- a/Mac/Lib/test/tdlg.py
+++ b/Mac/Lib/test/tdlg.py
@@ -1,15 +1,30 @@
-# This program requires that a DLOG resource with ID=128 exists.
-# You can make one with ResEdit if necessary.
+# Function to display a message and wait for the user to hit OK.
+# This uses a DLOG resource with ID=256 which is part of the standard
+# Python library.
+# The ID can be overridden by passing a second parameter.
 
-from Res import *
 from Dlg import *
+from Events import *
+import string
 
-ires = 128
+ID = 256
 
-def filter(*args): print 'filter:', args
+def f(d, event):
+	what, message, when, where, modifiers = event
+	if what == keyDown and modifiers & cmdKey and \
+	   string.lower(chr(message & charCodeMask)) == 'o':
+		return 1
 
-d = GetNewDialog(ires, -1)
-while 1:
-	n = ModalDialog(filter)
-	print 'item:', n
-	if n == 1: break
+def message(str = "Hello, world!", id = ID):
+	d = GetNewDialog(id, -1)
+	tp, h, rect = d.GetDItem(2)
+	SetIText(h, str)
+	while 1:
+		n = ModalDialog(f)
+		if n == 1: break
+
+def test():
+	message()
+
+if __name__ == '__main__':
+	test()
diff --git a/Mac/Modules/dlg/Dlgmodule.c b/Mac/Modules/dlg/Dlgmodule.c
index 0cd9dbb..b297e1c 100644
--- a/Mac/Modules/dlg/Dlgmodule.c
+++ b/Mac/Modules/dlg/Dlgmodule.c
@@ -55,7 +55,7 @@
 	if (callback == NULL)
 		return 0; /* Default behavior */
 	Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
-	args = Py_BuildValue("O&s#", DlgObj_New, dialog, event, (int)sizeof(EventRecord));
+	args = Py_BuildValue("O&O&", WinObj_WhichWindow, dialog, PyMac_BuildEventRecord, event);
 	if (args == NULL)
 		res = NULL;
 	else {
diff --git a/Mac/Modules/dlg/dlggen.py b/Mac/Modules/dlg/dlggen.py
index ea64ab7..bd65cd0 100644
--- a/Mac/Modules/dlg/dlggen.py
+++ b/Mac/Modules/dlg/dlggen.py
@@ -20,16 +20,6 @@
 )
 functions.append(f)
 
-f = Function(void, 'CouldDialog',
-    (short, 'dialogID', InMode),
-)
-functions.append(f)
-
-f = Function(void, 'FreeDialog',
-    (short, 'dialogID', InMode),
-)
-functions.append(f)
-
 f = Function(void, 'ParamText',
     (ConstStr255Param, 'param0', InMode),
     (ConstStr255Param, 'param1', InMode),
@@ -61,12 +51,6 @@
 )
 methods.append(f)
 
-f = Method(void, 'UpdtDialog',
-    (DialogPtr, 'theDialog', InMode),
-    (RgnHandle, 'updateRgn', InMode),
-)
-methods.append(f)
-
 f = Method(void, 'UpdateDialog',
     (DialogPtr, 'theDialog', InMode),
     (RgnHandle, 'updateRgn', InMode),
@@ -97,16 +81,6 @@
 )
 functions.append(f)
 
-f = Function(void, 'CouldAlert',
-    (short, 'alertID', InMode),
-)
-functions.append(f)
-
-f = Function(void, 'FreeAlert',
-    (short, 'alertID', InMode),
-)
-functions.append(f)
-
 f = Method(void, 'GetDItem',
     (DialogPtr, 'theDialog', InMode),
     (short, 'itemNo', InMode),
@@ -222,3 +196,4 @@
     (short, 'numberItems', InMode),
 )
 methods.append(f)
+
diff --git a/Mac/Modules/dlg/dlgsupport.py b/Mac/Modules/dlg/dlgsupport.py
index 1eb5576..d3491fe 100644
--- a/Mac/Modules/dlg/dlgsupport.py
+++ b/Mac/Modules/dlg/dlgsupport.py
@@ -40,7 +40,7 @@
 	if (callback == NULL)
 		return 0; /* Default behavior */
 	Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
-	args = Py_BuildValue("O&s#", DlgObj_New, dialog, event, (int)sizeof(EventRecord));
+	args = Py_BuildValue("O&O&", WinObj_WhichWindow, dialog, PyMac_BuildEventRecord, event);
 	if (args == NULL)
 		res = NULL;
 	else {