Correction du bug #32 : desactivation des flags Focusable avant le rendu de l'impression pour contourner un bug Qt relatif au focus des textes.

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@1065 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavier
2010-06-27 22:42:43 +00:00
parent 33d6bbe78a
commit c8fd831d42

View File

@@ -382,6 +382,20 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, const Exp
QList<QGraphicsItem *> selected_elmts = diagram -> selectedItems();
foreach (QGraphicsItem *qgi, selected_elmts) qgi -> setSelected(false);
// enleve le flag focusable de tous les elements concernes pour eviter toute reprise de focus par un champ de texte editable
QList<QGraphicsItem *> focusable_items;
foreach (QGraphicsItem *qgi, diagram -> items()) {
if (qgi -> flags() & QGraphicsItem::ItemIsFocusable) {
focusable_items << qgi;
qgi -> setFlag(QGraphicsItem::ItemIsFocusable, false);
}
}
// evite toute autre forme d'interaction
foreach (QGraphicsView *view, diagram -> views()) {
view -> setInteractive(false);
}
if (fit_page) {
// impression adaptee sur une seule page
diagram -> render(qp, QRectF(), diagramRect(diagram), Qt::KeepAspectRatio);
@@ -446,6 +460,16 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, const Exp
}
}
// remet en place les interactions
foreach (QGraphicsView *view, diagram -> views()) {
view -> setInteractive(true);
}
// restaure les flags focusable
foreach (QGraphicsItem *qgi, focusable_items) {
qgi -> setFlag(QGraphicsItem::ItemIsFocusable, true);
}
// restaure les elements selectionnes
foreach (QGraphicsItem *qgi, selected_elmts) qgi -> setSelected(true);