mirror of https://github.com/python/cpython
- "manage" controls created by CreateXxxXxxControl() functions.
- FindControlUnderMouse() returns an existing control, not a new one.
This commit is contained in:
parent
f36cfef1ae
commit
7ec1c85d7a
|
@ -4035,29 +4035,6 @@ static PyObject *Ctl_FindControl(PyObject *_self, PyObject *_args)
|
|||
return _res;
|
||||
}
|
||||
|
||||
static PyObject *Ctl_FindControlUnderMouse(PyObject *_self, PyObject *_args)
|
||||
{
|
||||
PyObject *_res = NULL;
|
||||
ControlHandle _rv;
|
||||
Point inWhere;
|
||||
WindowPtr inWindow;
|
||||
SInt16 outPart;
|
||||
#ifndef FindControlUnderMouse
|
||||
PyMac_PRECHECK(FindControlUnderMouse);
|
||||
#endif
|
||||
if (!PyArg_ParseTuple(_args, "O&O&",
|
||||
PyMac_GetPoint, &inWhere,
|
||||
WinObj_Convert, &inWindow))
|
||||
return NULL;
|
||||
_rv = FindControlUnderMouse(inWhere,
|
||||
inWindow,
|
||||
&outPart);
|
||||
_res = Py_BuildValue("O&h",
|
||||
CtlObj_New, _rv,
|
||||
outPart);
|
||||
return _res;
|
||||
}
|
||||
|
||||
static PyObject *Ctl_IdleControls(PyObject *_self, PyObject *_args)
|
||||
{
|
||||
PyObject *_res = NULL;
|
||||
|
@ -4137,7 +4114,7 @@ static PyObject *Ctl_CreateRootControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4340,7 +4317,7 @@ static PyObject *Ctl_CreateDisclosureTriangleControl(PyObject *_self, PyObject *
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4375,7 +4352,7 @@ static PyObject *Ctl_CreateProgressBarControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4410,7 +4387,7 @@ static PyObject *Ctl_CreateLittleArrowsControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4433,7 +4410,7 @@ static PyObject *Ctl_CreateChasingArrowsControl(PyObject *_self, PyObject *_args
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4456,7 +4433,7 @@ static PyObject *Ctl_CreateSeparatorControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4485,7 +4462,7 @@ static PyObject *Ctl_CreateGroupBoxControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4520,7 +4497,7 @@ static PyObject *Ctl_CreateCheckGroupBoxControl(PyObject *_self, PyObject *_args
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4564,7 +4541,7 @@ static PyObject *Ctl_CreatePopupGroupBoxControl(PyObject *_self, PyObject *_args
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4593,7 +4570,7 @@ static PyObject *Ctl_CreatePopupArrowControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4616,7 +4593,7 @@ static PyObject *Ctl_CreatePlacardControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4645,7 +4622,7 @@ static PyObject *Ctl_CreateClockControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4671,7 +4648,7 @@ static PyObject *Ctl_CreateUserPaneControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4706,7 +4683,7 @@ static PyObject *Ctl_CreateEditTextControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4735,7 +4712,7 @@ static PyObject *Ctl_CreateStaticTextControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4761,7 +4738,7 @@ static PyObject *Ctl_CreateWindowHeaderControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4787,7 +4764,7 @@ static PyObject *Ctl_CreatePushButtonControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4819,7 +4796,7 @@ static PyObject *Ctl_CreateRadioButtonControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4851,7 +4828,7 @@ static PyObject *Ctl_CreateCheckBoxControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4892,7 +4869,7 @@ static PyObject *Ctl_CreatePopupButtonControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4915,7 +4892,7 @@ static PyObject *Ctl_CreateRadioGroupControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4953,7 +4930,7 @@ static PyObject *Ctl_CreateScrollingTextBoxControl(PyObject *_self, PyObject *_a
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -4979,7 +4956,30 @@ static PyObject *Ctl_CreateDataBrowserControl(PyObject *_self, PyObject *_args)
|
|||
&outControl);
|
||||
if (_err != noErr) return PyMac_Error(_err);
|
||||
_res = Py_BuildValue("O&",
|
||||
CtlObj_WhichControl, outControl);
|
||||
CtlObj_New, outControl);
|
||||
return _res;
|
||||
}
|
||||
|
||||
static PyObject *Ctl_FindControlUnderMouse(PyObject *_self, PyObject *_args)
|
||||
{
|
||||
PyObject *_res = NULL;
|
||||
ControlHandle _rv;
|
||||
Point inWhere;
|
||||
WindowPtr inWindow;
|
||||
SInt16 outPart;
|
||||
#ifndef FindControlUnderMouse
|
||||
PyMac_PRECHECK(FindControlUnderMouse);
|
||||
#endif
|
||||
if (!PyArg_ParseTuple(_args, "O&O&",
|
||||
PyMac_GetPoint, &inWhere,
|
||||
WinObj_Convert, &inWindow))
|
||||
return NULL;
|
||||
_rv = FindControlUnderMouse(inWhere,
|
||||
inWindow,
|
||||
&outPart);
|
||||
_res = Py_BuildValue("O&h",
|
||||
CtlObj_WhichControl, _rv,
|
||||
outPart);
|
||||
return _res;
|
||||
}
|
||||
|
||||
|
@ -5011,8 +5011,6 @@ static PyMethodDef Ctl_methods[] = {
|
|||
"(WindowPtr theWindow, RgnHandle updateRegion) -> None"},
|
||||
{"FindControl", (PyCFunction)Ctl_FindControl, 1,
|
||||
"(Point testPoint, WindowPtr theWindow) -> (ControlPartCode _rv, ControlHandle theControl)"},
|
||||
{"FindControlUnderMouse", (PyCFunction)Ctl_FindControlUnderMouse, 1,
|
||||
"(Point inWhere, WindowPtr inWindow) -> (ControlHandle _rv, SInt16 outPart)"},
|
||||
{"IdleControls", (PyCFunction)Ctl_IdleControls, 1,
|
||||
"(WindowPtr inWindow) -> None"},
|
||||
|
||||
|
@ -5090,6 +5088,8 @@ static PyMethodDef Ctl_methods[] = {
|
|||
"(WindowPtr window, Rect boundsRect, SInt16 contentResID, Boolean autoScroll, UInt32 delayBeforeAutoScroll, UInt32 delayBetweenAutoScroll, UInt16 autoScrollAmount) -> (ControlHandle outControl)"},
|
||||
{"CreateDataBrowserControl", (PyCFunction)Ctl_CreateDataBrowserControl, 1,
|
||||
"(WindowPtr window, Rect boundsRect, OSType style) -> (ControlHandle outControl)"},
|
||||
{"FindControlUnderMouse", (PyCFunction)Ctl_FindControlUnderMouse, 1,
|
||||
"(Point inWhere, WindowPtr inWindow) -> (ControlHandle _rv, SInt16 outPart)"},
|
||||
{"as_Control", (PyCFunction)Ctl_as_Control, 1,
|
||||
"(Handle h) -> (ControlHandle _rv)"},
|
||||
{NULL, NULL, 0}
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
# FindControlUnderMouse() returns an existing control, not a new one,
|
||||
# so create this one by hand.
|
||||
f = Function(ExistingControlHandle, 'FindControlUnderMouse',
|
||||
(Point, 'inWhere', InMode),
|
||||
(WindowRef, 'inWindow', InMode),
|
||||
(SInt16, 'outPart', OutMode),
|
||||
)
|
||||
functions.append(f)
|
||||
|
||||
f = Function(ControlHandle, 'as_Control',
|
||||
(Handle, 'h', InMode))
|
||||
functions.append(f)
|
||||
|
@ -25,3 +34,12 @@ f = ManualGenerator("DisposeControl", DisposeControl_body)
|
|||
f.docstring = lambda : "() -> None"
|
||||
|
||||
methods.append(f)
|
||||
|
||||
# All CreateXxxXxxControl() functions return a new object in an output
|
||||
# parameter; these should however be managed by us (we're creating them
|
||||
# after all), so set the type to ControlRef.
|
||||
for f in functions:
|
||||
if f.name.startswith("Create"):
|
||||
v = f.argumentList[-1]
|
||||
if v.type == ExistingControlHandle:
|
||||
v.type = ControlRef
|
||||
|
|
|
@ -45,6 +45,7 @@ class MyScanner(Scanner):
|
|||
|
||||
def makeblacklistnames(self):
|
||||
return [
|
||||
'FindControlUnderMouse', # Generated manually, returns an existing control, not a new one.
|
||||
'DisposeControl', # Generated manually
|
||||
'KillControls', # Implied by close of dialog
|
||||
'SetCtlAction',
|
||||
|
|
Loading…
Reference in New Issue