diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index add85c649..d5c3d93f8 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -273,7 +273,6 @@ ChoicePage::setupChoices() if ( currd ) { applyActionChoice( currentChoice() ); - updateActionChoicePreview( currentChoice() ); } } ); } @@ -437,27 +436,33 @@ ChoicePage::applyActionChoice( ChoicePage::Choice choice ) connect( m_beforePartitionBarsView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, [ this ]( const QModelIndex& current, const QModelIndex& previous ) { + auto doReplace = [=] + { + // We can't use the PartitionPtrRole because we need to make changes to the + // main DeviceModel, not the immutable copy. + QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); + Partition* partition = KPMHelpers::findPartitionByPath( { selectedDevice() }, + partPath ); + if ( partition ) + PartitionActions::doReplacePartition( m_core, + selectedDevice(), + partition ); + }; + if ( m_core->isDirty() ) { - m_core->revertDevice( selectedDevice() ); + m_core->asyncRevertDevice( selectedDevice(), doReplace ); m_core->clearJobs(); } - - // We can't use the PartitionPtrRole because we need to make changes to the - // main DeviceModel, not the immutable copy. - QString partPath = current.data( PartitionModel::PartitionPathRole ).toString(); - Partition* partition = KPMHelpers::findPartitionByPath( { selectedDevice() }, - partPath ); - if ( partition ) - PartitionActions::doReplacePartition( m_core, - selectedDevice(), - partition ); + else + doReplace(); } ); break; case NoChoice: case Manual: break; } + updateActionChoicePreview( currentChoice() ); }