Skip to content

Commit

Permalink
Merge pull request #60551 from nyalldawson/fix_60442
Browse files Browse the repository at this point in the history
[processing] Use matrix editor panel value if open
  • Loading branch information
alexbruy authored Feb 12, 2025
2 parents af39349 + 02bf608 commit 473bcc4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
19 changes: 14 additions & 5 deletions src/gui/processing/qgsprocessingmatrixparameterdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,15 @@ QgsProcessingMatrixParameterPanel::QgsProcessingMatrixParameterPanel( QWidget *p
connect( mToolButton, &QToolButton::clicked, this, &QgsProcessingMatrixParameterPanel::showDialog );
}

QVariantList QgsProcessingMatrixParameterPanel::value() const
{
// if editing widget is still open, use the value currently shown in that widget
if ( mPanelWidget )
return mPanelWidget->table();

return mTable;
}

void QgsProcessingMatrixParameterPanel::setValue( const QVariantList &value )
{
mTable = value;
Expand All @@ -190,14 +199,14 @@ void QgsProcessingMatrixParameterPanel::showDialog()
{
if ( QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this ) )
{
QgsProcessingMatrixParameterPanelWidget *widget = new QgsProcessingMatrixParameterPanelWidget( this, mParam, mTable );
mPanelWidget = new QgsProcessingMatrixParameterPanelWidget( this, mParam, mTable );

widget->setPanelTitle( mParam->description() );
mPanelWidget->setPanelTitle( mParam->description() );

panel->openPanel( widget );
panel->openPanel( mPanelWidget );

connect( widget, &QgsPanelWidget::widgetChanged, this, [=] {
setValue( widget->table() );
connect( mPanelWidget, &QgsPanelWidget::widgetChanged, this, [=] {
setValue( mPanelWidget->table() );
} );
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/gui/processing/qgsprocessingmatrixparameterdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class GUI_EXPORT QgsProcessingMatrixParameterPanel : public QWidget
public:
QgsProcessingMatrixParameterPanel( QWidget *parent = nullptr, const QgsProcessingParameterMatrix *param = nullptr );

QVariantList value() const { return mTable; }
QVariantList value() const;

void setValue( const QVariantList &value );

Expand All @@ -102,6 +102,7 @@ class GUI_EXPORT QgsProcessingMatrixParameterPanel : public QWidget
QToolButton *mToolButton = nullptr;

QVariantList mTable;
QPointer< QgsProcessingMatrixParameterPanelWidget > mPanelWidget;

friend class TestProcessingGui;
};
Expand Down

0 comments on commit 473bcc4

Please sign in to comment.