]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/treectlg.cpp
Changed wxYield to wxYieldIfNeeded in PopupMenu, to avoid recursive wxYield assertions
[wxWidgets.git] / src / generic / treectlg.cpp
index e3f8fda4a26881dc7556f62b122d5e63ab771e58..c7155ed9a212ddbe1b273eaf2313b4c9e9609424 100644 (file)
@@ -2295,8 +2295,13 @@ void wxGenericTreeCtrl::Edit( const wxTreeItemId& item )
     x = dc.LogicalToDeviceX( x );
     y = dc.LogicalToDeviceY( y );
 
     x = dc.LogicalToDeviceX( x );
     y = dc.LogicalToDeviceY( y );
 
-    wxTreeTextCtrl *text = new wxTreeTextCtrl(
-      this, -1, &m_renameAccept, &m_renameRes, this, s, wxPoint(x-4,y-4), wxSize(w+11,h+8) );
+    wxTreeTextCtrl *text = new wxTreeTextCtrl(this, -1,
+                                              &m_renameAccept,
+                                              &m_renameRes,
+                                              this,
+                                              s,
+                                              wxPoint(x-4,y-4),
+                                              wxSize(w+11,h+8));
     text->SetFocus();
 }
 
     text->SetFocus();
 }
 
@@ -2475,13 +2480,26 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
                 m_lastOnSame = FALSE;
             }
         }
                 m_lastOnSame = FALSE;
             }
         }
-        else
+        else // !RightDown() && !LeftUp() ==> LeftDown() || LeftDClick()
         {
             if ( event.LeftDown() )
             {
                 m_lastOnSame = item == m_current;
             }
 
         {
             if ( event.LeftDown() )
             {
                 m_lastOnSame = item == m_current;
             }
 
+            if ( flags & wxTREE_HITTEST_ONITEMBUTTON )
+            {
+                // only toggle the item for a single click, double click on
+                // the button doesn't do anything (it toggles the item twice)
+                if ( event.LeftDown() )
+                {
+                    Toggle( item );
+                }
+
+                // don't select the item if the button was clicked
+                return;
+            }
+
             // how should the selection work for this event?
             bool is_multiple, extended_select, unselect_others;
             EventFlagsToSelType(GetWindowStyleFlag(),
             // how should the selection work for this event?
             bool is_multiple, extended_select, unselect_others;
             EventFlagsToSelType(GetWindowStyleFlag(),
@@ -2489,13 +2507,6 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event )
                                 event.ControlDown(),
                                 is_multiple, extended_select, unselect_others);
 
                                 event.ControlDown(),
                                 is_multiple, extended_select, unselect_others);
 
-            if ( (flags & wxTREE_HITTEST_ONITEMBUTTON) && event.LeftDown() )
-            {
-                Toggle( item );
-                if ( is_multiple )
-                    return;
-            }
-
             SelectItem(item, unselect_others, extended_select);
 
             if ( event.LeftDClick() )
             SelectItem(item, unselect_others, extended_select);
 
             if ( event.LeftDClick() )