]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed thread state problem in wxTreeCtrl.GetBoundingBox
authorRobin Dunn <robin@alldunn.com>
Sun, 13 Feb 2000 00:29:38 +0000 (00:29 +0000)
committerRobin Dunn <robin@alldunn.com>
Sun, 13 Feb 2000 00:29:38 +0000 (00:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

utils/wxPython/CHANGES.txt
utils/wxPython/demo/wxTreeCtrl.py
utils/wxPython/src/controls2.i
utils/wxPython/src/msw/controls2.cpp
utils/wxPython/src/msw/controls2.py

index 8325bbb744d07161667a195b09dd2904b86bbc09..a70c4b279c6d6564c21dfb7348e0db3768ae80eb 100644 (file)
@@ -2,6 +2,17 @@ CHANGES.txt for wxPython
 
 ----------------------------------------------------------------------
 
 
 ----------------------------------------------------------------------
 
+New in 2.1.14
+-------------
+
+Fixed wxTreeCtrl.HitTest to return both the tree item as well as the
+flags that clairify where the click was in relation to the item.
+
+Fixed problem in wxTreeCtrl.GetBoundingBox
+
+
+
+
 What's new in 2.1.13
 --------------------
 Skipped a version number to match what has been released for wxGTK.
 What's new in 2.1.13
 --------------------
 Skipped a version number to match what has been released for wxGTK.
index 3c8587db274ec5c4fe24643fd0580ebfc3f8bab9..41741c08fbe8988860ed11f18d71ca252d5e435a 100644 (file)
@@ -106,6 +106,9 @@ class TestTreeCtrlPanel(wxPanel):
     def OnSelChanged(self, event):
         self.item = event.GetItem()
         self.log.WriteText("OnSelChanged: %s\n" % self.tree.GetItemText(self.item))
     def OnSelChanged(self, event):
         self.item = event.GetItem()
         self.log.WriteText("OnSelChanged: %s\n" % self.tree.GetItemText(self.item))
+        self.log.WriteText("BoundingRect: %s\n" %
+                           self.tree.GetBoundingRect(self.item, true))
+
 
 #---------------------------------------------------------------------------
 
 
 #---------------------------------------------------------------------------
 
index 6d5697b931e9df7b160af3ccab47083d73b9f1ba..1ff1ff3639cb93e16bd4da0b403d64f2652dfc8f 100644 (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();
 class wxTreeItemId {
 public:
     wxTreeItemId();
@@ -464,7 +483,7 @@ public:
 
     void SetItemBold(const wxTreeItemId& item, int bold = TRUE);
     bool IsBold(const wxTreeItemId& item) const;
 
     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);
 
     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;
     %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;
             else {
                 Py_INCREF(Py_None);
                 return Py_None;
index 41951ecfe77017fc9b0c39867b78fd214a14927d..f46ae71271a01908feb69d4c902b1126bdcbb70b 100644 (file)
@@ -5742,19 +5742,24 @@ static PyObject *_wrap_wxTreeCtrl_IsBold(PyObject *self, PyObject *args, PyObjec
     return _resultobj;
 }
 
     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;
 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;
     PyObject * _argo0 = 0;
-    wxPoint  temp;
+    wxPoint  temp0;
     PyObject * _obj1 = 0;
     char *_kwnames[] = { "self","point", NULL };
     char _ptemp[128];
 
     self = self;
     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) {
     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;
     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);
 
     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;
 }
 
     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;
 
 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;
             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,"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++)
 {
    int i;
    for (i = 0; _swig_mapping[i].n1; i++)
index 235ffa1debcf02b0ca2e5e0f38635e100ad66e32..5cadc4898dce47fd72c41ddf84f36a115fb03b7c 100644 (file)
@@ -590,7 +590,6 @@ class wxTreeCtrlPtr(wxControlPtr):
         return val
     def HitTest(self, *_args, **_kwargs):
         val = apply(controls2c.wxTreeCtrl_HitTest,(self,) + _args, _kwargs)
         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)
         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
 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