]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Allow setting the auto dispose flag on window objects.
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 22 Apr 2003 13:55:23 +0000 (13:55 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 22 Apr 2003 13:55:23 +0000 (13:55 +0000)
Mac/Modules/win/_Winmodule.c
Mac/Modules/win/winedit.py

index 258845d986799f87adcb21accb55cf1cfb57800a..d1b3ada32ddb7b9c8f37e44a89d3198a5c7b987e 100644 (file)
@@ -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}
 };
 
index d2551afda19d2071f0358d94900450f812eb9bb8..d79356fc634de8bd4d88a8fd1d89973eda1fb70a 100644 (file)
@@ -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)