Accept Dialogs and Windows where Grafports are expected (such as in SetPort) and do a MacOSX compatible cast. Bit of a hack, but good enough for now.

This commit is contained in:
Jack Jansen 2001-02-02 22:41:48 +00:00
parent 340eb88fa8
commit dc2ac8d39f
2 changed files with 16 additions and 4 deletions

View File

@ -144,8 +144,14 @@ GrafObj_Convert(v, p_itself)
PyObject *v;
GrafPtr *p_itself;
{
if (DlgObj_Check(v) || WinObj_Check(v)) {
*p_itself = ((GrafPortObject *)v)->ob_itself;
if (DlgObj_Check(v)) {
DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;
*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));
return 1;
}
if (WinObj_Check(v)) {
WindowRef win = (WindowRef)((GrafPortObject *)v)->ob_itself;
*p_itself = (GrafPtr)GetWindowPort(win);
return 1;
}
if (!GrafObj_Check(v))

View File

@ -219,8 +219,14 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self):
Output("if (itself == NULL) return PyMac_Error(resNotFound);")
def outputCheckConvertArg(self):
OutLbrace("if (DlgObj_Check(v) || WinObj_Check(v))")
Output("*p_itself = ((GrafPortObject *)v)->ob_itself;")
OutLbrace("if (DlgObj_Check(v))")
Output("DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;")
Output("*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));")
Output("return 1;")
OutRbrace()
OutLbrace("if (WinObj_Check(v))")
Output("WindowRef win = (WindowRef)((GrafPortObject *)v)->ob_itself;")
Output("*p_itself = (GrafPtr)GetWindowPort(win);")
Output("return 1;")
OutRbrace()
def outputGetattrHook(self):