diff --git a/sources/bordertitleblock.cpp b/sources/bordertitleblock.cpp index aa40c71aa..1a476b760 100644 --- a/sources/bordertitleblock.cpp +++ b/sources/bordertitleblock.cpp @@ -331,6 +331,7 @@ void BorderTitleBlock::importTitleBlock(const TitleBlockProperties &ip) { // through setFolioData(), // which in turn calls updateDiagramContextForTitleBlock(). emit(needTitleBlockTemplate(ip.template_name)); + emit informationChanged(); } /** diff --git a/sources/bordertitleblock.h b/sources/bordertitleblock.h index 148e3917b..5673dc395 100644 --- a/sources/bordertitleblock.h +++ b/sources/bordertitleblock.h @@ -245,6 +245,12 @@ class BorderTitleBlock : public QObject since it does not know of its parent project. */ void needTitleBlockTemplate(const QString &); + + /** + * @brief infoChanged + * Signal emitted when the informations changed. + */ + void informationChanged(); // attributes private: diff --git a/sources/diagram.cpp b/sources/diagram.cpp index c94db5732..538cca151 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -92,6 +92,9 @@ Diagram::Diagram(QETProject *project) : pen.setColor(Qt::black); conductor_setter_ -> setPen(pen); + connect(&border_and_titleblock, + &BorderTitleBlock::informationChanged, + this, &Diagram::diagramInformationChanged); connect(&border_and_titleblock, &BorderTitleBlock::needTitleBlockTemplate, this, &Diagram::setTitleBlockTemplate); diff --git a/sources/diagram.h b/sources/diagram.h index f20769cf9..5a3f13300 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -283,6 +283,7 @@ class Diagram : public QGraphicsScene void findElementRequired(const ElementsLocation &); void diagramActivated(); + void diagramInformationChanged(); }; Q_DECLARE_METATYPE(Diagram *) diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index 5a0ea4ee1..49700af99 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -128,6 +128,15 @@ void CrossRefItem::setUpConnection() m_update_connection << connect(m_element, &Element::linkedElementChanged, this, &CrossRefItem::linkedChanged); + + auto diagram_ = dynamic_cast(this->scene()); + auto formula_ = m_properties.masterLabel(); + if (diagram_ && + formula_.contains("%F")) + { + m_update_connection << connect(diagram_ , &Diagram::diagramInformationChanged, + this, &CrossRefItem::updateLabel); + } linkedChanged(); updateLabel(); } @@ -161,13 +170,9 @@ QPainterPath CrossRefItem::shape() const{ QString CrossRefItem::elementPositionText( const Element *elmt, const bool &add_prefix) const { - XRefProperties xrp = - m_element->diagram()->project()->defaultXRefProperties( - m_element->kindInformations()["type"].toString()); - QString formula = xrp.masterLabel(); autonum::sequentialNumbers seq; QString txt = autonum::AssignVariables::formulaToLabel( - formula, + m_properties.masterLabel(), seq, elmt->diagram(), elmt);