Fixed thread state problem in wxTreeCtrl.GetBoundingBox

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2000-02-13 00:29:38 +00:00
parent 2b4313be05
commit 164b735b71
5 changed files with 90 additions and 10 deletions

View File

@@ -240,6 +240,25 @@ enum wxTreeItemIcon
};
// constants for HitTest
enum {
wxTREE_HITTEST_ABOVE,
wxTREE_HITTEST_BELOW,
wxTREE_HITTEST_NOWHERE,
wxTREE_HITTEST_ONITEMBUTTON,
wxTREE_HITTEST_ONITEMICON,
wxTREE_HITTEST_ONITEMINDENT,
wxTREE_HITTEST_ONITEMLABEL,
wxTREE_HITTEST_ONITEMRIGHT,
wxTREE_HITTEST_ONITEMSTATEICON,
wxTREE_HITTEST_TOLEFT,
wxTREE_HITTEST_TORIGHT,
wxTREE_HITTEST_ONITEMUPPERPART,
wxTREE_HITTEST_ONITEMLOWERPART,
wxTREE_HITTEST_ONITEM
};
class wxTreeItemId {
public:
wxTreeItemId();
@@ -464,7 +483,7 @@ public:
void SetItemBold(const wxTreeItemId& item, int bold = TRUE);
bool IsBold(const wxTreeItemId& item) const;
wxTreeItemId HitTest(const wxPoint& point);
wxTreeItemId HitTest(const wxPoint& point, int& OUTPUT);
void SetItemTextColour(const wxTreeItemId& item, const wxColour& col);
void SetItemBackgroundColour(const wxTreeItemId& item, const wxColour& col);
@@ -477,8 +496,13 @@ public:
%addmethods {
PyObject* GetBoundingRect(const wxTreeItemId& item, int textOnly = FALSE) {
wxRect rect;
if (self->GetBoundingRect(item, rect, textOnly))
return wxPyConstructObject((void*)&rect, "wxRect");
if (self->GetBoundingRect(item, rect, textOnly)) {
bool doSave = wxPyRestoreThread();
wxRect* r = new wxRect(rect);
PyObject* val = wxPyConstructObject((void*)r, "wxRect");
wxPySaveThread(doSave);
return val;
}
else {
Py_INCREF(Py_None);
return Py_None;

View File

@@ -5742,19 +5742,24 @@ static PyObject *_wrap_wxTreeCtrl_IsBold(PyObject *self, PyObject *args, PyObjec
return _resultobj;
}
#define wxTreeCtrl_HitTest(_swigobj,_swigarg0) (_swigobj->HitTest(_swigarg0))
#define wxTreeCtrl_HitTest(_swigobj,_swigarg0,_swigarg1) (_swigobj->HitTest(_swigarg0,_swigarg1))
static PyObject *_wrap_wxTreeCtrl_HitTest(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
wxTreeItemId * _result;
wxTreeCtrl * _arg0;
wxPoint * _arg1;
int * _arg2;
int temp;
PyObject * _argo0 = 0;
wxPoint temp;
wxPoint temp0;
PyObject * _obj1 = 0;
char *_kwnames[] = { "self","point", NULL };
char _ptemp[128];
self = self;
{
_arg2 = &temp;
}
if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxTreeCtrl_HitTest",_kwnames,&_argo0,&_obj1))
return NULL;
if (_argo0) {
@@ -5765,17 +5770,22 @@ static PyObject *_wrap_wxTreeCtrl_HitTest(PyObject *self, PyObject *args, PyObje
}
}
{
_arg1 = &temp;
_arg1 = &temp0;
if (! wxPoint_helper(_obj1, &_arg1))
return NULL;
}
{
wxPy_BEGIN_ALLOW_THREADS;
_result = new wxTreeItemId (wxTreeCtrl_HitTest(_arg0,*_arg1));
_result = new wxTreeItemId (wxTreeCtrl_HitTest(_arg0,*_arg1,*_arg2));
wxPy_END_ALLOW_THREADS;
} SWIG_MakePtr(_ptemp, (void *) _result,"_wxTreeItemId_p");
_resultobj = Py_BuildValue("s",_ptemp);
{
PyObject *o;
o = PyInt_FromLong((long) (*_arg2));
_resultobj = t_output_helper(_resultobj, o);
}
return _resultobj;
}
@@ -5953,8 +5963,13 @@ static PyObject *_wrap_wxTreeCtrl_SetItemDropHighlight(PyObject *self, PyObject
static PyObject * wxTreeCtrl_GetBoundingRect(wxTreeCtrl *self,const wxTreeItemId & item,int textOnly) {
wxRect rect;
if (self->GetBoundingRect(item, rect, textOnly))
return wxPyConstructObject((void*)&rect, "wxRect");
if (self->GetBoundingRect(item, rect, textOnly)) {
bool doSave = wxPyRestoreThread();
wxRect* r = new wxRect(rect);
PyObject* val = wxPyConstructObject((void*)r, "wxRect");
wxPySaveThread(doSave);
return val;
}
else {
Py_INCREF(Py_None);
return Py_None;
@@ -6588,6 +6603,20 @@ SWIGEXPORT(void) initcontrols2c() {
PyDict_SetItemString(d,"wxTreeItemIcon_Expanded", PyInt_FromLong((long) wxTreeItemIcon_Expanded));
PyDict_SetItemString(d,"wxTreeItemIcon_SelectedExpanded", PyInt_FromLong((long) wxTreeItemIcon_SelectedExpanded));
PyDict_SetItemString(d,"wxTreeItemIcon_Max", PyInt_FromLong((long) wxTreeItemIcon_Max));
PyDict_SetItemString(d,"wxTREE_HITTEST_ABOVE", PyInt_FromLong((long) wxTREE_HITTEST_ABOVE));
PyDict_SetItemString(d,"wxTREE_HITTEST_BELOW", PyInt_FromLong((long) wxTREE_HITTEST_BELOW));
PyDict_SetItemString(d,"wxTREE_HITTEST_NOWHERE", PyInt_FromLong((long) wxTREE_HITTEST_NOWHERE));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMBUTTON", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMBUTTON));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMICON", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMICON));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMINDENT", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMINDENT));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMLABEL", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMLABEL));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMRIGHT", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMRIGHT));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMSTATEICON", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMSTATEICON));
PyDict_SetItemString(d,"wxTREE_HITTEST_TOLEFT", PyInt_FromLong((long) wxTREE_HITTEST_TOLEFT));
PyDict_SetItemString(d,"wxTREE_HITTEST_TORIGHT", PyInt_FromLong((long) wxTREE_HITTEST_TORIGHT));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMUPPERPART", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMUPPERPART));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEMLOWERPART", PyInt_FromLong((long) wxTREE_HITTEST_ONITEMLOWERPART));
PyDict_SetItemString(d,"wxTREE_HITTEST_ONITEM", PyInt_FromLong((long) wxTREE_HITTEST_ONITEM));
{
int i;
for (i = 0; _swig_mapping[i].n1; i++)

View File

@@ -590,7 +590,6 @@ class wxTreeCtrlPtr(wxControlPtr):
return val
def HitTest(self, *_args, **_kwargs):
val = apply(controls2c.wxTreeCtrl_HitTest,(self,) + _args, _kwargs)
if val: val = wxTreeItemIdPtr(val) ; val.thisown = 1
return val
def SetItemTextColour(self, *_args, **_kwargs):
val = apply(controls2c.wxTreeCtrl_SetItemTextColour,(self,) + _args, _kwargs)
@@ -687,3 +686,17 @@ wxTreeItemIcon_Selected = controls2c.wxTreeItemIcon_Selected
wxTreeItemIcon_Expanded = controls2c.wxTreeItemIcon_Expanded
wxTreeItemIcon_SelectedExpanded = controls2c.wxTreeItemIcon_SelectedExpanded
wxTreeItemIcon_Max = controls2c.wxTreeItemIcon_Max
wxTREE_HITTEST_ABOVE = controls2c.wxTREE_HITTEST_ABOVE
wxTREE_HITTEST_BELOW = controls2c.wxTREE_HITTEST_BELOW
wxTREE_HITTEST_NOWHERE = controls2c.wxTREE_HITTEST_NOWHERE
wxTREE_HITTEST_ONITEMBUTTON = controls2c.wxTREE_HITTEST_ONITEMBUTTON
wxTREE_HITTEST_ONITEMICON = controls2c.wxTREE_HITTEST_ONITEMICON
wxTREE_HITTEST_ONITEMINDENT = controls2c.wxTREE_HITTEST_ONITEMINDENT
wxTREE_HITTEST_ONITEMLABEL = controls2c.wxTREE_HITTEST_ONITEMLABEL
wxTREE_HITTEST_ONITEMRIGHT = controls2c.wxTREE_HITTEST_ONITEMRIGHT
wxTREE_HITTEST_ONITEMSTATEICON = controls2c.wxTREE_HITTEST_ONITEMSTATEICON
wxTREE_HITTEST_TOLEFT = controls2c.wxTREE_HITTEST_TOLEFT
wxTREE_HITTEST_TORIGHT = controls2c.wxTREE_HITTEST_TORIGHT
wxTREE_HITTEST_ONITEMUPPERPART = controls2c.wxTREE_HITTEST_ONITEMUPPERPART
wxTREE_HITTEST_ONITEMLOWERPART = controls2c.wxTREE_HITTEST_ONITEMLOWERPART
wxTREE_HITTEST_ONITEM = controls2c.wxTREE_HITTEST_ONITEM