6767#include " qgsvectorlayer.h"
6868#include " qgscomposerimageexportoptionsdialog.h"
6969#include " ui_qgssvgexportoptions.h"
70+ #include " qgspanelwidgetstack.h"
7071
7172#include < QCloseEvent>
7273#include < QCheckBox>
@@ -578,6 +579,8 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
578579 mItemDock = new QgsDockWidget ( tr ( " Item properties" ), this );
579580 mItemDock ->setObjectName ( " ItemDock" );
580581 mItemDock ->setMinimumWidth ( minDockWidth );
582+ mItemPropertiesStack = new QgsPanelWidgetStack ();
583+ mItemDock ->setWidget ( mItemPropertiesStack );
581584 mPanelMenu ->addAction ( mItemDock ->toggleViewAction () );
582585 mUndoDock = new QgsDockWidget ( tr ( " Command history" ), this );
583586 mUndoDock ->setObjectName ( " CommandDock" );
@@ -996,28 +999,27 @@ void QgsComposer::updateStatusAtlasMsg( const QString& message )
996999
9971000void QgsComposer::showItemOptions ( QgsComposerItem* item )
9981001{
999- QWidget* currentWidget = mItemDock ->widget ();
1000-
10011002 if ( !item )
10021003 {
1003- mItemDock -> setWidget ( nullptr );
1004+ mItemPropertiesStack -> takeMainPanel ( );
10041005 return ;
10051006 }
10061007
1007- QMap<QgsComposerItem*, QWidget *>::const_iterator it = mItemWidgetMap .constFind ( item );
1008+ QMap<QgsComposerItem*, QgsPanelWidget *>::const_iterator it = mItemWidgetMap .constFind ( item );
10081009 if ( it == mItemWidgetMap .constEnd () )
10091010 {
10101011 return ;
10111012 }
10121013
1013- QWidget* newWidget = it.value ();
1014-
1015- if ( !newWidget || newWidget == currentWidget ) // bail out if new widget does not exist or is already there
1014+ QgsPanelWidget* newWidget = it.value ();
1015+ if ( !newWidget || newWidget == mItemPropertiesStack ->mainPanel () ) // bail out if new widget does not exist or is already there
10161016 {
10171017 return ;
10181018 }
10191019
1020- mItemDock ->setWidget ( newWidget );
1020+ ( void ) mItemPropertiesStack ->takeMainPanel ();
1021+ newWidget->setDockMode ( true );
1022+ mItemPropertiesStack ->setMainPanel ( newWidget );
10211023}
10221024
10231025void QgsComposer::on_mActionOptions_triggered ()
@@ -3774,7 +3776,7 @@ void QgsComposer::addComposerHtmlFrame( QgsComposerHtml* html, QgsComposerFrame*
37743776
37753777void QgsComposer::deleteItem ( QgsComposerItem* item )
37763778{
3777- QMap<QgsComposerItem*, QWidget *>::const_iterator it = mItemWidgetMap .constFind ( item );
3779+ QMap<QgsComposerItem*, QgsPanelWidget *>::const_iterator it = mItemWidgetMap .constFind ( item );
37783780
37793781 if ( it == mItemWidgetMap .constEnd () )
37803782 {
@@ -3800,7 +3802,7 @@ void QgsComposer::setSelectionTool()
38003802
38013803bool QgsComposer::containsWmsLayer () const
38023804{
3803- QMap<QgsComposerItem*, QWidget *>::const_iterator item_it = mItemWidgetMap .constBegin ();
3805+ QMap<QgsComposerItem*, QgsPanelWidget *>::const_iterator item_it = mItemWidgetMap .constBegin ();
38043806 QgsComposerItem* currentItem = nullptr ;
38053807 QgsComposerMap* currentMap = nullptr ;
38063808
@@ -3822,7 +3824,7 @@ bool QgsComposer::containsWmsLayer() const
38223824bool QgsComposer::containsAdvancedEffects () const
38233825{
38243826 // Check if composer contains any blend modes or flattened layers for transparency
3825- QMap<QgsComposerItem*, QWidget *>::const_iterator item_it = mItemWidgetMap .constBegin ();
3827+ QMap<QgsComposerItem*, QgsPanelWidget *>::const_iterator item_it = mItemWidgetMap .constBegin ();
38263828 QgsComposerItem* currentItem = nullptr ;
38273829 QgsComposerMap* currentMap = nullptr ;
38283830
@@ -3893,7 +3895,7 @@ void QgsComposer::showAdvancedEffectsWarning()
38933895
38943896void QgsComposer::cleanupAfterTemplateRead ()
38953897{
3896- QMap<QgsComposerItem*, QWidget *>::const_iterator itemIt = mItemWidgetMap .constBegin ();
3898+ QMap<QgsComposerItem*, QgsPanelWidget *>::const_iterator itemIt = mItemWidgetMap .constBegin ();
38973899 for ( ; itemIt != mItemWidgetMap .constEnd (); ++itemIt )
38983900 {
38993901 // update all legends completely
0 commit comments