From c8fd831d423ab5f995cd59b777a6501167d838df Mon Sep 17 00:00:00 2001 From: xavier Date: Sun, 27 Jun 2010 22:42:43 +0000 Subject: [PATCH] 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 --- sources/diagramprintdialog.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/sources/diagramprintdialog.cpp b/sources/diagramprintdialog.cpp index 1981f47a1..90425c9d9 100644 --- a/sources/diagramprintdialog.cpp +++ b/sources/diagramprintdialog.cpp @@ -382,6 +382,20 @@ void DiagramPrintDialog::printDiagram(Diagram *diagram, bool fit_page, const Exp QList 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 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);