mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Fix the left margin of the diagram : In some condition, (most of time when use copy and paste) a margin appear in the left of the folio.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5004 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -968,7 +968,7 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
|
|||||||
qgi -> setPos( qgi -> pos() += pos_);
|
qgi -> setPos( qgi -> pos() += pos_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remplissage des listes facultatives
|
//Filling of optional lists
|
||||||
if (content_ptr) {
|
if (content_ptr) {
|
||||||
content_ptr -> elements = added_elements.toSet();
|
content_ptr -> elements = added_elements.toSet();
|
||||||
content_ptr -> conductorsToMove = added_conductors.toSet();
|
content_ptr -> conductorsToMove = added_conductors.toSet();
|
||||||
@@ -976,6 +976,12 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
|
|||||||
content_ptr -> images = added_images.toSet();
|
content_ptr -> images = added_images.toSet();
|
||||||
content_ptr -> shapes = added_shapes.toSet();
|
content_ptr -> shapes = added_shapes.toSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Ensure the texts of conductor are inside the border of the folio
|
||||||
|
//and so don't cause the annoying margin on the left border of the folio.
|
||||||
|
for(Conductor *cond : added_conductors)
|
||||||
|
cond->textItem()->setPos(cond->textItem()->pos());
|
||||||
|
|
||||||
adjustSceneRect();
|
adjustSceneRect();
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,42 @@ void ConductorTextItem::forceRotateByUser(bool rotate_by_user) {
|
|||||||
rotate_by_user_ = rotate_by_user;
|
rotate_by_user_ = rotate_by_user;
|
||||||
if (!rotate_by_user && parent_conductor_) {
|
if (!rotate_by_user && parent_conductor_) {
|
||||||
parent_conductor_ -> calculateTextItemPosition();
|
parent_conductor_ -> calculateTextItemPosition();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ConductorTextItem::setPos
|
||||||
|
* @param pos
|
||||||
|
*/
|
||||||
|
void ConductorTextItem::setPos(const QPointF &pos)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* In some condition the conductor text item is outside the border of folio in the left.
|
||||||
|
* They cause a margin on the left of folio and in most case this margin is unwanted and annoying the user.
|
||||||
|
* If the text is empty and the scene position is outside the border (left and top),
|
||||||
|
* we can say that this position, is unwanted by user.
|
||||||
|
* So we move this text item to the top left of the bounding rect of parent conductors, because we sure this position is wanted by user.
|
||||||
|
*/
|
||||||
|
DiagramTextItem::setPos(pos);
|
||||||
|
if(toPlainText().isEmpty() && (scenePos().x() < 0 || scenePos().y() < 0))
|
||||||
|
{
|
||||||
|
Conductor *cond = parentConductor();
|
||||||
|
if(cond)
|
||||||
|
DiagramTextItem::setPos(cond->boundingRect().topLeft());
|
||||||
|
else
|
||||||
|
DiagramTextItem::setPos(0,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ConductorTextItem::setPos
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
*/
|
||||||
|
void ConductorTextItem::setPos(qreal x, qreal y)
|
||||||
|
{
|
||||||
|
QPointF p(x,y);
|
||||||
|
setPos(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -238,5 +273,5 @@ void ConductorTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *e) {
|
|||||||
*/
|
*/
|
||||||
void ConductorTextItem::hoverMoveEvent(QGraphicsSceneHoverEvent *e) {
|
void ConductorTextItem::hoverMoveEvent(QGraphicsSceneHoverEvent *e) {
|
||||||
Q_UNUSED(e);
|
Q_UNUSED(e);
|
||||||
QGraphicsTextItem::hoverMoveEvent(e);
|
QGraphicsTextItem::hoverMoveEvent(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,47 +26,44 @@ class Conductor;
|
|||||||
Its movements are however limited to a particular distance around its
|
Its movements are however limited to a particular distance around its
|
||||||
parent conductor.
|
parent conductor.
|
||||||
*/
|
*/
|
||||||
class ConductorTextItem : public DiagramTextItem {
|
class ConductorTextItem : public DiagramTextItem
|
||||||
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
// constructors, destructor
|
// constructors, destructor
|
||||||
public:
|
public:
|
||||||
ConductorTextItem(Conductor * = 0);
|
ConductorTextItem(Conductor * = 0);
|
||||||
ConductorTextItem(const QString &, Conductor * = 0);
|
ConductorTextItem(const QString &, Conductor * = 0);
|
||||||
virtual ~ConductorTextItem();
|
virtual ~ConductorTextItem();
|
||||||
private:
|
private:
|
||||||
ConductorTextItem(const ConductorTextItem &);
|
ConductorTextItem(const ConductorTextItem &);
|
||||||
|
|
||||||
// attributes
|
|
||||||
public:
|
|
||||||
enum { Type = UserType + 1006 };
|
|
||||||
Conductor *parentConductor() const;
|
|
||||||
virtual void fromXml(const QDomElement &);
|
|
||||||
virtual void toXml (QDomElement &xml) const;
|
|
||||||
|
|
||||||
// methods
|
|
||||||
public:
|
|
||||||
virtual int type() const { return Type; }
|
|
||||||
virtual bool wasMovedByUser() const;
|
|
||||||
virtual bool wasRotateByUser() const;
|
|
||||||
virtual void forceMovedByUser(bool);
|
|
||||||
virtual void forceRotateByUser(bool);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void mousePressEvent (QGraphicsSceneMouseEvent *event);
|
|
||||||
virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event);
|
|
||||||
virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *);
|
|
||||||
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *);
|
|
||||||
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *);
|
|
||||||
|
|
||||||
// attributes
|
public:
|
||||||
|
enum { Type = UserType + 1006 };
|
||||||
|
Conductor *parentConductor() const;
|
||||||
|
virtual void fromXml(const QDomElement &);
|
||||||
|
virtual void toXml (QDomElement &xml) const;
|
||||||
|
virtual int type() const { return Type; }
|
||||||
|
virtual bool wasMovedByUser() const;
|
||||||
|
virtual bool wasRotateByUser() const;
|
||||||
|
virtual void forceMovedByUser(bool);
|
||||||
|
virtual void forceRotateByUser(bool);
|
||||||
|
virtual void setPos(const QPointF &pos);
|
||||||
|
virtual void setPos(qreal x, qreal y);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void mousePressEvent (QGraphicsSceneMouseEvent *event);
|
||||||
|
virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event);
|
||||||
|
virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event);
|
||||||
|
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *);
|
||||||
|
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *);
|
||||||
|
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *);
|
||||||
|
|
||||||
|
// attributes
|
||||||
private:
|
private:
|
||||||
Conductor *parent_conductor_;
|
Conductor *parent_conductor_;
|
||||||
bool moved_by_user_;
|
bool moved_by_user_;
|
||||||
bool rotate_by_user_;
|
bool rotate_by_user_;
|
||||||
QPointF before_mov_pos_;
|
QPointF before_mov_pos_;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user