From 2a04e3c64fe1fef0e55a402dae51405534f7706a Mon Sep 17 00:00:00 2001 From: blacksun Date: Mon, 30 Mar 2015 15:58:16 +0000 Subject: [PATCH] Fix bug: scene rect was wrong when border propertie is same in code and config. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3875 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/bordertitleblock.cpp | 6 ------ sources/diagram.cpp | 20 ++++++++++++++------ sources/diagram.h | 19 ++++++++++--------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/sources/bordertitleblock.cpp b/sources/bordertitleblock.cpp index 18b3b4cd5..e7faa97cb 100644 --- a/sources/bordertitleblock.cpp +++ b/sources/bordertitleblock.cpp @@ -199,7 +199,6 @@ void BorderTitleBlock::borderToXml(QDomElement &xml_elmt) { @param xml_elmt the XML element values will be read from */ void BorderTitleBlock::borderFromXml(const QDomElement &xml_elmt) { - QRectF old_rect = diagram_rect_; bool ok; // columns count int cols_count = xml_elmt.attribute("cols").toInt(&ok); @@ -229,11 +228,6 @@ void BorderTitleBlock::borderFromXml(const QDomElement &xml_elmt) { displayRows(xml_elmt.attribute("displayrows") != "false"); updateRectangles(); - - //We emit signal even if diagram_rect not change - //For calcul the scene rect when diagram load the first time the border. - if (old_rect == diagram_rect_) - emit(borderChanged(old_rect, old_rect)); } /** diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 80af3c65b..f105712f6 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -74,11 +74,8 @@ Diagram::Diagram(QETProject *project) : connect(&border_and_titleblock, SIGNAL(needTitleBlockTemplate(const QString &)), this, SLOT(setTitleBlockTemplate(const QString &))); connect(&border_and_titleblock, SIGNAL(diagramTitleChanged(const QString &)), this, SLOT(titleChanged(const QString &))); - connect(&border_and_titleblock, &BorderTitleBlock::borderChanged, [this]() { - QRectF old_rect = this->sceneRect(); - this->setSceneRect(border_and_titleblock.borderAndTitleBlockRect().united(this->itemsBoundingRect())); - this->update(old_rect.united(this->sceneRect())); - }); + connect(&border_and_titleblock, SIGNAL(borderChanged(QRectF,QRectF)), this, SLOT(adjustSceneRect())); + adjustSceneRect(); } /** @@ -805,7 +802,7 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf content_ptr -> images = added_images.toSet(); content_ptr -> shapes = added_shapes.toSet(); } - + adjustSceneRect(); return(true); } @@ -1186,6 +1183,17 @@ bool Diagram::usesTitleBlockTemplate(const QString &name) { return(name == border_and_titleblock.titleBlockTemplateName()); } +/** + * @brief Diagram::adjustSceneRect + * Recalcul and adjust the size of the scene + */ +void Diagram::adjustSceneRect() +{ + QRectF old_rect = sceneRect(); + setSceneRect(border_and_titleblock.borderAndTitleBlockRect().united(itemsBoundingRect())); + update(old_rect.united(sceneRect())); +} + /** Cette methode permet d'appliquer de nouvelles options de rendu tout en accedant aux proprietes de rendu en cours. diff --git a/sources/diagram.h b/sources/diagram.h index 1131807db..d6b3c7701 100644 --- a/sources/diagram.h +++ b/sources/diagram.h @@ -208,16 +208,17 @@ class Diagram : public QGraphicsScene QGIManager &qgiManager(); public slots: - void titleChanged(const QString &); - void diagramTextChanged(DiagramTextItem *, const QString &, const QString &); - void titleBlockTemplateChanged(const QString &); - void titleBlockTemplateRemoved(const QString &, const QString & = QString()); - void setTitleBlockTemplate(const QString &); + void adjustSceneRect (); + void titleChanged(const QString &); + void diagramTextChanged(DiagramTextItem *, const QString &, const QString &); + void titleBlockTemplateChanged(const QString &); + void titleBlockTemplateRemoved(const QString &, const QString & = QString()); + void setTitleBlockTemplate(const QString &); - // methods related to graphics items selection - void selectAll(); - void deselectAll(); - void invertSelection(); + // methods related to graphics items selection + void selectAll(); + void deselectAll(); + void invertSelection(); signals: void showDiagram (Diagram *);