Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dc2ac8d

Browse files
committed
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.
1 parent 340eb88 commit dc2ac8d

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

Mac/Modules/qd/Qdmodule.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,14 @@ GrafObj_Convert(v, p_itself)
144144
PyObject *v;
145145
GrafPtr *p_itself;
146146
{
147-
if (DlgObj_Check(v) || WinObj_Check(v)) {
148-
*p_itself = ((GrafPortObject *)v)->ob_itself;
147+
if (DlgObj_Check(v)) {
148+
DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;
149+
*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));
150+
return 1;
151+
}
152+
if (WinObj_Check(v)) {
153+
WindowRef win = (WindowRef)((GrafPortObject *)v)->ob_itself;
154+
*p_itself = (GrafPtr)GetWindowPort(win);
149155
return 1;
150156
}
151157
if (!GrafObj_Check(v))

Mac/Modules/qd/qdsupport.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,14 @@ class MyGRObjectDefinition(GlobalObjectDefinition):
219219
def outputCheckNewArg(self):
220220
Output("if (itself == NULL) return PyMac_Error(resNotFound);")
221221
def outputCheckConvertArg(self):
222-
OutLbrace("if (DlgObj_Check(v) || WinObj_Check(v))")
223-
Output("*p_itself = ((GrafPortObject *)v)->ob_itself;")
222+
OutLbrace("if (DlgObj_Check(v))")
223+
Output("DialogRef dlg = (DialogRef)((GrafPortObject *)v)->ob_itself;")
224+
Output("*p_itself = (GrafPtr)GetWindowPort(GetDialogWindow(dlg));")
225+
Output("return 1;")
226+
OutRbrace()
227+
OutLbrace("if (WinObj_Check(v))")
228+
Output("WindowRef win = (WindowRef)((GrafPortObject *)v)->ob_itself;")
229+
Output("*p_itself = (GrafPtr)GetWindowPort(win);")
224230
Output("return 1;")
225231
OutRbrace()
226232
def outputGetattrHook(self):

0 commit comments

Comments
 (0)