| 173 | } |
| 174 | |
| 175 | void UIAbstractView::beginEditing( const ModelIndex& index, UIWidget* editedWidget ) { |
| 176 | if ( !isEditable() || !mModel || mEditIndex == index || !mModel->isEditable( index ) || |
| 177 | !onCreateEditingDelegate || !editedWidget ) |
| 178 | return; |
| 179 | |
| 180 | if ( mEditWidget ) { |
| 181 | mEditWidget->setVisible( false )->setEnabled( false )->close(); |
| 182 | mEditWidget = nullptr; |
| 183 | } |
| 184 | eeSAFE_DELETE( mEditingDelegate ); |
| 185 | |
| 186 | mEditIndex = index; |
| 187 | mEditingDelegate = onCreateEditingDelegate( index ); |
| 188 | mEditingDelegate->bind( mModel, index ); |
| 189 | mEditingDelegate->setValue( index.data( mEditingDelegate->pullDataFrom() ) ); |
| 190 | mEditWidget = mEditingDelegate->getWidget(); |
| 191 | mEditWidget->setParent( editedWidget ); |
| 192 | mEditWidget->setSize( editedWidget->getSize() ); |
| 193 | mEditWidget->setFocus(); |
| 194 | mEditWidget->toFront(); |
| 195 | mEditingDelegate->willBeginEditing(); |
| 196 | mEditingDelegate->onCommit = [this]() { |
| 197 | if ( getModel() && mEditIndex.isValid() ) { |
| 198 | getModel()->setData( mEditIndex, mEditingDelegate->getValue() ); |
| 199 | if ( mEditingDelegate->onValueSet ) |
| 200 | mEditingDelegate->onValueSet(); |
| 201 | } |
| 202 | stopEditing(); |
| 203 | }; |
| 204 | mEditingDelegate->onRollback = [this]() { stopEditing(); }; |
| 205 | mEditingDelegate->onChange = [this, index]() { editingWidgetDidChange( index ); }; |
| 206 | } |
| 207 | |
| 208 | void UIAbstractView::stopEditing() { |
| 209 | bool recoverFocus = false; |
nothing calls this directly
no test coverage detected