X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/289532452089421ddadbd4726a8469511a19ab76..7d6a4d96961eac84d05db8bb24c64d39003f6e54:/src/generic/treectlg.cpp diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index c3b739e4d3..b11fd4b449 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -441,7 +441,7 @@ wxTreeTextCtrl::wxTreeTextCtrl(wxGenericTreeCtrl *owner, rect.y -= 2; rect.width += 8; rect.height += 4; -#elif defined(__WXMAC__) +#elif defined(wxOSX_USE_CARBON) && wxOSX_USE_CARBON int bestHeight = GetBestSize().y - 8; if ( rect.height > bestHeight ) { @@ -997,7 +997,7 @@ bool wxGenericTreeCtrl::Create(wxWindow *parent, #endif if ( !wxControl::Create( parent, id, pos, size, - style|wxHSCROLL|wxVSCROLL, + style|wxHSCROLL|wxVSCROLL|wxWANTS_CHARS, validator, name ) ) return false; @@ -1484,16 +1484,16 @@ wxTreeItemId wxGenericTreeCtrl::GetNext(const wxTreeItemId& item) const wxTreeItemId wxGenericTreeCtrl::GetFirstVisibleItem() const { - wxTreeItemId id = GetRootItem(); - if (!id.IsOk()) - return id; + wxTreeItemId itemid = GetRootItem(); + if (!itemid.IsOk()) + return itemid; do { - if (IsVisible(id)) - return id; - id = GetNext(id); - } while (id.IsOk()); + if (IsVisible(itemid)) + return itemid; + itemid = GetNext(itemid); + } while (itemid.IsOk()); return wxTreeItemId(); } @@ -1570,40 +1570,40 @@ wxTreeItemId wxGenericTreeCtrl::FindItem(const wxTreeItemId& idParent, // allows to switch between two items starting with the same letter just by // pressing it) but we shouldn't jump to the next one if the user is // continuing to type as otherwise he might easily skip the item he wanted - wxTreeItemId id = idParent; + wxTreeItemId itemid = idParent; if ( prefix.length() == 1 ) { - id = GetNext(id); + itemid = GetNext(itemid); } // look for the item starting with the given prefix after it - while ( id.IsOk() && !GetItemText(id).Lower().StartsWith(prefix) ) + while ( itemid.IsOk() && !GetItemText(itemid).Lower().StartsWith(prefix) ) { - id = GetNext(id); + itemid = GetNext(itemid); } // if we haven't found anything... - if ( !id.IsOk() ) + if ( !itemid.IsOk() ) { // ... wrap to the beginning - id = GetRootItem(); + itemid = GetRootItem(); if ( HasFlag(wxTR_HIDE_ROOT) ) { // can't select virtual root - id = GetNext(id); + itemid = GetNext(itemid); } // and try all the items (stop when we get to the one we started from) - while ( id.IsOk() && id != idParent && - !GetItemText(id).Lower().StartsWith(prefix) ) + while ( itemid.IsOk() && itemid != idParent && + !GetItemText(itemid).Lower().StartsWith(prefix) ) { - id = GetNext(id); + itemid = GetNext(itemid); } // If we haven't found the item, id.IsOk() will be false, as per // documentation } - return id; + return itemid; } // ----------------------------------------------------------------------------- @@ -2054,7 +2054,8 @@ wxGenericTreeCtrl::TagAllChildrenUntilLast(wxGenericTreeItem *crt_item, if (crt_item==last_item) return true; - if (crt_item->HasChildren()) + // We should leave the not shown children of collapsed items alone. + if (crt_item->HasChildren() && crt_item->IsExpanded()) { wxArrayGenericTreeItems& children = crt_item->GetChildren(); size_t count = children.GetCount(); @@ -2759,7 +2760,10 @@ wxGenericTreeCtrl::PaintLevel(wxGenericTreeItem *item, #ifdef __WXMAC__ colText = *wxWHITE; #else - colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT); + if (m_hasFocus) + colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT); + else + colText = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT); #endif } else @@ -2875,7 +2879,7 @@ wxGenericTreeCtrl::PaintLevel(wxGenericTreeItem *item, yOrigin = abs(yOrigin); GetClientSize(&width, &height); - // Move end points to the begining/end of the view? + // Move end points to the beginning/end of the view? if (y_mid < yOrigin) y_mid = yOrigin; if (oldY > yOrigin + height) @@ -3696,7 +3700,7 @@ void wxGenericTreeCtrl::OnMouse( wxMouseEvent &event ) event.Skip(!GetEventHandler()->ProcessEvent(nevent)); // Consistent with MSW (for now), send the ITEM_MENU *after* - // the RIGHT_CLICK event. TODO: This behavior may change. + // the RIGHT_CLICK event. TODO: This behaviour may change. wxTreeEvent nevent2(wxEVT_COMMAND_TREE_ITEM_MENU, this, item); nevent2.m_pointDrag = CalcScrolledPosition(pt); GetEventHandler()->ProcessEvent(nevent2);