void BodyBarImpl::onItemSelectionChanged(const ItemList<BodyItem>& bodyItems) { bool selectedBodyItemsChanged = false; if(selectedBodyItems != bodyItems){ selectedBodyItems = bodyItems; selectedBodyItemsChanged = true; } BodyItem* firstItem = bodyItems.toSingle(); if(firstItem && firstItem != currentBodyItem){ currentBodyItem = firstItem; connectionOfCurrentBodyItemDetachedFromRoot.disconnect(); connectionOfCurrentBodyItemDetachedFromRoot = currentBodyItem->sigDetachedFromRoot().connect( std::bind(&BodyBarImpl::onBodyItemDetachedFromRoot, this)); sigCurrentBodyItemChanged(currentBodyItem.get()); } if(selectedBodyItemsChanged){ sigBodyItemSelectionChanged(selectedBodyItems); } targetBodyItems.clear(); if(selectedBodyItems.empty()){ if(currentBodyItem){ targetBodyItems.push_back(currentBodyItem); } } else { targetBodyItems = selectedBodyItems; } }
void TextEditViewImpl::onItemSelectionChanged(const ItemList<AbstractTextItem>& textItems) { if(selectedTextItems_ != textItems) selectedTextItems_ = textItems; else return; AbstractTextItemPtr firstItem = textItems.toSingle(); if(firstItem && firstItem != currentTextItem_){ if(currentTextItem_) maybeSave(); currentTextItem_ = firstItem; connectionOfCurrentBodyItemDetachedFromRoot.disconnect(); connectionOfCurrentBodyItemDetachedFromRoot = currentTextItem_->sigDetachedFromRoot().connect( boost::bind(&TextEditViewImpl::onTextItemDetachedFromRoot, this)); open(); } }