diff --git a/python/core/composer/qgscomposerframe.sip b/python/core/composer/qgscomposerframe.sip
index 52a6e8d2248..2827ad1618d 100644
--- a/python/core/composer/qgscomposerframe.sip
+++ b/python/core/composer/qgscomposerframe.sip
@@ -23,4 +23,7 @@ class QgsComposerFrame: QgsComposerItem
int type() const;
QgsComposerMultiFrame* multiFrame() const;
+
+ //Overriden to allow multiframe to set display name
+ virtual QString displayName() const;
};
diff --git a/python/core/composer/qgscomposerhtml.sip b/python/core/composer/qgscomposerhtml.sip
index 1c2bf2bc415..feaf89f595c 100644
--- a/python/core/composer/qgscomposerhtml.sip
+++ b/python/core/composer/qgscomposerhtml.sip
@@ -181,6 +181,8 @@ class QgsComposerHtml: QgsComposerMultiFrame
* @note added in 2.5
*/
bool userStylesheetEnabled() const;
+
+ virtual QString displayName() const;
public slots:
diff --git a/python/core/composer/qgscomposermap.sip b/python/core/composer/qgscomposermap.sip
index 2340bd57a02..10fae4df504 100644
--- a/python/core/composer/qgscomposermap.sip
+++ b/python/core/composer/qgscomposermap.sip
@@ -494,6 +494,9 @@ class QgsComposerMap : QgsComposerItem
* @see currentMapExtent
*/
QPolygonF visibleExtentPolygon() const;
+
+ //overriden to show "Map 1" type names
+ virtual QString displayName() const;
signals:
void extentChanged();
diff --git a/python/core/composer/qgscomposermultiframe.sip b/python/core/composer/qgscomposermultiframe.sip
index afb55172a37..49438d64c06 100644
--- a/python/core/composer/qgscomposermultiframe.sip
+++ b/python/core/composer/qgscomposermultiframe.sip
@@ -67,6 +67,12 @@ class QgsComposerMultiFrame: QgsComposerObject
*/
QgsComposerFrame* createNewFrame( QgsComposerFrame* currentFrame, QPointF pos, QSizeF size );
+ /**Get multiframe display name.
+ * @returns display name for item
+ * @note added in version 2.5
+ */
+ virtual QString displayName() const;
+
public slots:
/**Recalculates the portion of the multiframe item which is shown in each of it's
diff --git a/src/core/composer/qgscomposerframe.cpp b/src/core/composer/qgscomposerframe.cpp
index 895d335d3da..7214ae4f16f 100644
--- a/src/core/composer/qgscomposerframe.cpp
+++ b/src/core/composer/qgscomposerframe.cpp
@@ -62,6 +62,21 @@ bool QgsComposerFrame::readXML( const QDomElement& itemElem, const QDomDocument&
return _readXML( composerItem, doc );
}
+QString QgsComposerFrame::displayName() const
+{
+ if ( !id().isEmpty() )
+ {
+ return id();
+ }
+
+ if ( mMultiFrame )
+ {
+ return mMultiFrame->displayName();
+ }
+
+ return tr( "" );
+}
+
void QgsComposerFrame::paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget )
{
Q_UNUSED( itemStyle );
diff --git a/src/core/composer/qgscomposerframe.h b/src/core/composer/qgscomposerframe.h
index 22af290301f..6a466e06a23 100644
--- a/src/core/composer/qgscomposerframe.h
+++ b/src/core/composer/qgscomposerframe.h
@@ -43,6 +43,9 @@ class CORE_EXPORT QgsComposerFrame: public QgsComposerItem
QgsComposerMultiFrame* multiFrame() const { return mMultiFrame; }
+ //Overriden to allow multiframe to set display name
+ virtual QString displayName() const;
+
private:
QgsComposerFrame(); //forbidden
QgsComposerMultiFrame* mMultiFrame;
diff --git a/src/core/composer/qgscomposerhtml.cpp b/src/core/composer/qgscomposerhtml.cpp
index 02208594722..17b4c4c8a69 100644
--- a/src/core/composer/qgscomposerhtml.cpp
+++ b/src/core/composer/qgscomposerhtml.cpp
@@ -441,6 +441,11 @@ void QgsComposerHtml::setUserStylesheetEnabled( const bool stylesheetEnabled )
}
}
+QString QgsComposerHtml::displayName() const
+{
+ return tr( "" );
+}
+
bool QgsComposerHtml::writeXML( QDomElement& elem, QDomDocument & doc, bool ignoreFrames ) const
{
QDomElement htmlElem = doc.createElement( "ComposerHtml" );
diff --git a/src/core/composer/qgscomposerhtml.h b/src/core/composer/qgscomposerhtml.h
index b2213d1e130..21b2881c548 100644
--- a/src/core/composer/qgscomposerhtml.h
+++ b/src/core/composer/qgscomposerhtml.h
@@ -205,6 +205,8 @@ class CORE_EXPORT QgsComposerHtml: public QgsComposerMultiFrame
*/
bool userStylesheetEnabled() const { return mEnableUserStylesheet; }
+ virtual QString displayName() const;
+
public slots:
/**Reloads the html source from the url and redraws the item.
diff --git a/src/core/composer/qgscomposerlabel.cpp b/src/core/composer/qgscomposerlabel.cpp
index 933cac1b228..4c55efc4459 100644
--- a/src/core/composer/qgscomposerlabel.cpp
+++ b/src/core/composer/qgscomposerlabel.cpp
@@ -391,6 +391,10 @@ QString QgsComposerLabel::displayName() const
//if no id, default to portion of label text
QString text = displayText();
+ if ( text.isEmpty() || mHtmlState )
+ {
+ return tr( "