summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>2003-04-22 13:55:23 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>2003-04-22 13:55:23 (GMT)
commit8c46ce9addf8c30cce1e3a3f3814789160a430c4 (patch)
treee0a104f07fba833b9c2cd3fb2f048a9707d8ffcb
parentf776dee6dd3d11f084071f52200838aeed0f4613 (diff)
downloadcpython-8c46ce9addf8c30cce1e3a3f3814789160a430c4.zip
cpython-8c46ce9addf8c30cce1e3a3f3814789160a430c4.tar.gz
cpython-8c46ce9addf8c30cce1e3a3f3814789160a430c4.tar.bz2
Allow setting the auto dispose flag on window objects.
-rw-r--r--Mac/Modules/win/_Winmodule.c26
-rw-r--r--Mac/Modules/win/winedit.py19
2 files changed, 42 insertions, 3 deletions
diff --git a/Mac/Modules/win/_Winmodule.c b/Mac/Modules/win/_Winmodule.c
index 258845d..d1b3ada 100644
--- a/Mac/Modules/win/_Winmodule.c
+++ b/Mac/Modules/win/_Winmodule.c
@@ -14,9 +14,9 @@
/* Macro to test whether a weak-loaded CFM function exists */
#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
- PyErr_SetString(PyExc_NotImplementedError, \
- "Not available in this shared library/OS version"); \
- return NULL; \
+ PyErr_SetString(PyExc_NotImplementedError, \
+ "Not available in this shared library/OS version"); \
+ return NULL; \
}} while(0)
@@ -2300,6 +2300,24 @@ static PyObject *WinObj_ShowWindow(WindowObject *_self, PyObject *_args)
return _res;
}
+static PyObject *WinObj_AutoDispose(WindowObject *_self, PyObject *_args)
+{
+ PyObject *_res = NULL;
+
+ int onoff, old = 0;
+ if (!PyArg_ParseTuple(_args, "i", &onoff))
+ return NULL;
+ if ( _self->ob_freeit )
+ old = 1;
+ if ( onoff )
+ _self->ob_freeit = PyMac_AutoDisposeWindow;
+ else
+ _self->ob_freeit = NULL;
+ _res = Py_BuildValue("i", old);
+ return _res;
+
+}
+
static PyMethodDef WinObj_methods[] = {
{"GetWindowOwnerCount", (PyCFunction)WinObj_GetWindowOwnerCount, 1,
PyDoc_STR("() -> (UInt32 outCount)")},
@@ -2540,6 +2558,8 @@ static PyMethodDef WinObj_methods[] = {
PyDoc_STR("(short hGlobal, short vGlobal, Boolean front) -> None")},
{"ShowWindow", (PyCFunction)WinObj_ShowWindow, 1,
PyDoc_STR("() -> None")},
+ {"AutoDispose", (PyCFunction)WinObj_AutoDispose, 1,
+ PyDoc_STR("(int)->int. Automatically DisposeHandle the object on Python object cleanup")},
{NULL, NULL, 0}
};
diff --git a/Mac/Modules/win/winedit.py b/Mac/Modules/win/winedit.py
index d2551af..d79356f 100644
--- a/Mac/Modules/win/winedit.py
+++ b/Mac/Modules/win/winedit.py
@@ -48,5 +48,24 @@ f = Method(void, 'ShowWindow',
)
methods.append(f)
+#
+# A method to set the auto-dispose flag
+#
+AutoDispose_body = """
+int onoff, old = 0;
+if (!PyArg_ParseTuple(_args, "i", &onoff))
+ return NULL;
+if ( _self->ob_freeit )
+ old = 1;
+if ( onoff )
+ _self->ob_freeit = PyMac_AutoDisposeWindow;
+else
+ _self->ob_freeit = NULL;
+_res = Py_BuildValue("i", old);
+return _res;
+"""
+f = ManualGenerator("AutoDispose", AutoDispose_body)
+f.docstring = lambda: "(int)->int. Automatically DisposeHandle the object on Python object cleanup"
+methods.append(f)