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
This commit is contained in:
blacksun 2015-03-30 15:58:16 +00:00
parent dc3dcf9e90
commit 2a04e3c64f
3 changed files with 24 additions and 21 deletions

View File

@ -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));
}
/**

View File

@ -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.

View File

@ -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 *);