[partition] Use swap-choice member, not the combobox pointer

- Store changes to the selected swap-choice when the combobox changes
 - Use that member instead of dereferencing the combobox

This avoids nullptr crashes when the combobox isn't even created
(e.g. when there is only one swap choice).
This commit is contained in:
Adriaan de Groot 2019-02-12 07:21:35 -05:00
parent a4e6d4cd35
commit 5f20eedb6e
2 changed files with 14 additions and 3 deletions

View file

@ -318,7 +318,7 @@ ChoicePage::setupChoices()
this, &ChoicePage::onActionChanged );
if ( m_eraseSwapChoiceComboBox )
connect( m_eraseSwapChoiceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &ChoicePage::onActionChanged );
this, &ChoicePage::onEraseSwapChoiceChanged );
CALAMARES_RETRANSLATE(
m_somethingElseButton->setText( tr( "<strong>Manual partitioning</strong><br/>"
@ -428,6 +428,15 @@ ChoicePage::onActionChanged()
}
}
void
ChoicePage::onEraseSwapChoiceChanged()
{
if ( m_eraseSwapChoiceComboBox )
{
m_eraseSwapChoice = static_cast<PartitionActions::Choices::SwapChoice>( m_eraseSwapChoiceComboBox->currentData().toInt() );
onActionChanged();
}
}
void
ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice )
@ -448,7 +457,7 @@ ChoicePage::applyActionChoice( ChoicePage::InstallChoice choice )
m_encryptWidget->passphrase(),
gs->value( "efiSystemPartition" ).toString(),
CalamaresUtils::GiBtoBytes( gs->value( "requiredStorageGB" ).toDouble() ),
static_cast<PartitionActions::Choices::SwapChoice>( m_eraseSwapChoiceComboBox->currentData().toInt() )
m_eraseSwapChoice
};
if ( m_core->isDirty() )

View file

@ -116,8 +116,10 @@ private slots:
void onEncryptWidgetStateChanged();
void onHomeCheckBoxStateChanged();
/** @brief Calls applyActionChoice() as needed. */
/// @brief Calls applyActionChoice() as needed.
void onActionChanged();
/// @brief Calls onActionChanged() as needed.
void onEraseSwapChoiceChanged();
private:
void updateNextEnabled();