@@ -84,6 +84,13 @@ QgsLayoutPropertiesWidget::QgsLayoutPropertiesWidget( QWidget *parent, QgsLayout
8484 mReferenceMapComboBox ->setCurrentLayout ( mLayout );
8585
8686 connect ( mLayout , &QgsLayout::changed, this , &QgsLayoutPropertiesWidget::updateGui );
87+
88+ updateVariables ();
89+ connect ( mVariableEditor , &QgsVariableEditorWidget::scopeChanged, this , &QgsLayoutPropertiesWidget::variablesChanged );
90+ // listen out for variable edits
91+ connect ( QgsApplication::instance (), &QgsApplication::customVariablesChanged, this , &QgsLayoutPropertiesWidget::updateVariables );
92+ connect ( QgsProject::instance (), &QgsProject::customVariablesChanged, this , &QgsLayoutPropertiesWidget::updateVariables );
93+
8794 updateGui ();
8895}
8996
@@ -228,6 +235,21 @@ void QgsLayoutPropertiesWidget::forceVectorToggled()
228235 mLayout ->setCustomProperty ( QStringLiteral ( " forceVector" ), mForceVectorCheckBox ->isChecked () );
229236}
230237
238+ void QgsLayoutPropertiesWidget::variablesChanged ()
239+ {
240+ QgsExpressionContextUtils::setLayoutVariables ( mLayout , mVariableEditor ->variablesInActiveScope () );
241+ }
242+
243+ void QgsLayoutPropertiesWidget::updateVariables ()
244+ {
245+ QgsExpressionContext context;
246+ context << QgsExpressionContextUtils::globalScope ()
247+ << QgsExpressionContextUtils::projectScope ( QgsProject::instance () )
248+ << QgsExpressionContextUtils::layoutScope ( mLayout );
249+ mVariableEditor ->setContext ( &context );
250+ mVariableEditor ->setEditableScopeIndex ( 2 );
251+ }
252+
231253void QgsLayoutPropertiesWidget::blockSignals ( bool block )
232254{
233255 mGridResolutionSpinBox ->blockSignals ( block );
0 commit comments