| 2137 | //----------------------------------------------------------------------------- |
| 2138 | |
| 2139 | void GuiTreeViewCtrl::removeSelection( S32 itemOrObjectId ) |
| 2140 | { |
| 2141 | if (mDebug) |
| 2142 | Con::printf( "removeSelection %i", itemOrObjectId ); |
| 2143 | |
| 2144 | Item* item = _findItemByAmbiguousId( itemOrObjectId, false ); |
| 2145 | if (!item) |
| 2146 | return; |
| 2147 | |
| 2148 | // Make sure we have a true item ID even if we started with |
| 2149 | // an object ID. |
| 2150 | S32 itemId = item->getID(); |
| 2151 | |
| 2152 | S32 objectId = -1; |
| 2153 | if ( item->isInspectorData() && item->getObject() ) |
| 2154 | objectId = item->getObject()->getId(); |
| 2155 | |
| 2156 | // Remove from vector of selected object ids if it exists there |
| 2157 | if ( objectId != -1 ) |
| 2158 | { |
| 2159 | for ( S32 i = 0; i < mSelected.size(); i++ ) |
| 2160 | { |
| 2161 | if ( objectId == mSelected[i] || itemId == mSelected[i] ) |
| 2162 | { |
| 2163 | mSelected.erase( i ); |
| 2164 | break; |
| 2165 | } |
| 2166 | } |
| 2167 | } |
| 2168 | else |
| 2169 | { |
| 2170 | for ( S32 i = 0; i < mSelected.size(); i++ ) |
| 2171 | { |
| 2172 | if ( itemId == mSelected[i] ) |
| 2173 | { |
| 2174 | mSelected.erase( i ); |
| 2175 | break; |
| 2176 | } |
| 2177 | } |
| 2178 | } |
| 2179 | |
| 2180 | item->mState.set(Item::Selected, false); |
| 2181 | |
| 2182 | // Remove from vector of selected items if it exists there. |
| 2183 | for ( S32 i = 0; i < mSelectedItems.size(); i++ ) |
| 2184 | { |
| 2185 | if ( mSelectedItems[i] == item ) |
| 2186 | { |
| 2187 | mSelectedItems.erase( i ); |
| 2188 | break; |
| 2189 | } |
| 2190 | } |
| 2191 | |
| 2192 | // Callback. |
| 2193 | onRemoveSelection( item ); |
| 2194 | } |
| 2195 | |
| 2196 | //----------------------------------------------------------------------------- |
no test coverage detected