[qet] [841] La position des textes dans l'editeur d' element est desormais ajustee lorsqu'on change leur taille de police. |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/qet Archives
]
Revision: 841
Author: xavier
Date: 2010-01-17 17:09:46 +0100 (Sun, 17 Jan 2010)
Log Message:
-----------
La position des textes dans l'editeur d'element est desormais ajustee lorsqu'on change leur taille de police.
Modified Paths:
--------------
branches/0.3/sources/editor/parttext.cpp
branches/0.3/sources/editor/parttext.h
branches/0.3/sources/editor/parttextfield.cpp
Modified: branches/0.3/sources/editor/parttext.cpp
===================================================================
--- branches/0.3/sources/editor/parttext.cpp 2010-01-10 20:22:52 UTC (rev 840)
+++ branches/0.3/sources/editor/parttext.cpp 2010-01-17 16:09:46 UTC (rev 841)
@@ -63,6 +63,7 @@
xml_element.attribute("x").toDouble(),
xml_element.attribute("y").toDouble()
);
+ known_position_ = pos();
}
/**
@@ -195,6 +196,7 @@
} else if (property == "size") {
if (!value.canConvert(QVariant::Int)) return;
setFont(QETApp::diagramTextsFont(value.toInt()));
+ adjustItemPosition(0);
} else if (property == "text") {
setPlainText(value.toString());
}
@@ -229,8 +231,13 @@
@param value Valeur numerique relative au changement
*/
QVariant PartText::itemChange(GraphicsItemChange change, const QVariant &value) {
- if (scene()) {
- if (change == QGraphicsItem::ItemPositionChange || change == QGraphicsItem::ItemSelectedChange) {
+ if (change == QGraphicsItem::ItemPositionHasChanged || change == QGraphicsItem::ItemSceneHasChanged) {
+ // memorise la nouvelle position "officielle" du champ de texte
+ // cette information servira a le recentrer en cas d'ajout / retrait de lignes
+ known_position_ = pos();
+ infos -> updateForm();
+ } else if (change == QGraphicsItem::ItemSelectedHasChanged) {
+ if (value.toBool() == true) {
infos -> updateForm();
}
}
@@ -276,6 +283,18 @@
#endif
}
+/**
+ Cette methode s'assure que la position du champ de texte est coherente
+ en repositionnant son origine (c-a-d le milieu du bord gauche du champ de
+ texte) a la position originale. Cela est notamment utile lorsque le champ
+ de texte est agrandi ou retreci verticalement (ajout ou retrait de lignes).
+ @param new_block_count Nombre de blocs dans le PartText
+*/
+void PartText::adjustItemPosition(int new_block_count) {
+ Q_UNUSED(new_block_count);
+ setPos(known_position_);
+}
+
#ifdef QET_DEBUG_EDITOR_TEXTS
/**
Dessine deux petites fleches pour mettre un point en valeur
Modified: branches/0.3/sources/editor/parttext.h
===================================================================
--- branches/0.3/sources/editor/parttext.h 2010-01-10 20:22:52 UTC (rev 840)
+++ branches/0.3/sources/editor/parttext.h 2010-01-17 16:09:46 UTC (rev 841)
@@ -56,6 +56,9 @@
virtual bool isUseless() const;
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 );
+ public slots:
+ void adjustItemPosition(int);
+
protected:
virtual void focusOutEvent(QFocusEvent *);
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *);
@@ -68,5 +71,6 @@
void drawPoint(QPainter *, const QPointF &);
#endif
QString previous_text;
+ QPointF known_position_;
};
#endif
Modified: branches/0.3/sources/editor/parttextfield.cpp
===================================================================
--- branches/0.3/sources/editor/parttextfield.cpp 2010-01-10 20:22:52 UTC (rev 840)
+++ branches/0.3/sources/editor/parttextfield.cpp 2010-01-17 16:09:46 UTC (rev 841)
@@ -242,6 +242,7 @@
} else if (property == "size") {
if (!value.canConvert(QVariant::Int)) return;
setFont(QETApp::diagramTextsFont(value.toInt()));
+ adjustItemPosition(0);
} else if (property == "text") {
setPlainText(value.toString());
} else if (property == "rotation angle") {
@@ -343,7 +344,7 @@
en repositionnant son origine (c-a-d le milieu du bord gauche du champ de
texte) a la position originale. Cela est notamment utile lorsque le champ
de texte est agrandi ou retreci verticalement (ajout ou retrait de lignes).
- @param new_bloc_count Nombre de blocs dans l'ElementTextItem
+ @param new_block_count Nombre de blocs dans le PartTextField
*/
void PartTextField::adjustItemPosition(int new_block_count) {
Q_UNUSED(new_block_count);