From cc2e64b2d70211c3168fc48497fd7a41f7505cd7 Mon Sep 17 00:00:00 2001 From: blacksun Date: Fri, 19 Apr 2013 12:28:08 +0000 Subject: [PATCH] fix a bug when change a conductor property on multiple conductor potential with conductor dialog property git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2119 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/diagramview.cpp | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/sources/diagramview.cpp b/sources/diagramview.cpp index 4c533ee3b..3f1be3a61 100644 --- a/sources/diagramview.cpp +++ b/sources/diagramview.cpp @@ -37,7 +37,6 @@ #include "qeticons.h" #include "qetmessagebox.h" #include "qtextorientationspinboxwidget.h" -#include "conductorautonumerotation.h" /** @@ -989,16 +988,39 @@ void DiagramView::editConductor(Conductor *edited_conductor) { ConductorProperties new_properties = cpw -> conductorProperties(); if (new_properties != old_properties) { int qmbreturn=0; - //if conductor isn't alone at this potential + //if conductor isn't alone at this potential and text is changed //ask user to apply text on every conductors of this potential - if (edited_conductor -> relatedPotentialConductors().size() >= 1){ + if ((edited_conductor -> relatedPotentialConductors().size() >= 1) && (old_properties.text != new_properties.text)){ qmbreturn = QMessageBox::question(diagramEditor(), tr("Textes de conducteurs"), tr("Voulez-vous appliquer le nouveau texte \n" "\340 l'ensemble des conducteurs de ce potentiel ?"), QMessageBox::No| QMessageBox::Yes, QMessageBox::Yes); + if (qmbreturn == QMessageBox::Yes){ - ConductorAutoNumerotation can(edited_conductor); - can.setText(new_properties.text); + QSet conductorslist = edited_conductor -> relatedPotentialConductors(); + conductorslist << edited_conductor; + QList old_properties_list, new_properties_list; + ConductorProperties cp; + + foreach (Conductor *c, conductorslist) { + if (c == edited_conductor) { + old_properties_list << old_properties; + new_properties_list << new_properties; + } + else { + old_properties_list << c -> properties(); + cp = c -> properties(); + cp.text = new_properties.text; + c -> setProperties(cp); + new_properties_list << c -> properties(); + c -> setText(new_properties.text); + } + } + //initialize the corresponding UndoCommand object + ChangeSeveralConductorsPropertiesCommand *cscpc = new ChangeSeveralConductorsPropertiesCommand(conductorslist); + cscpc -> setOldSettings(old_properties_list); + cscpc -> setNewSettings(new_properties_list); + diagram() -> undoStack().push(cscpc); } } if (qmbreturn == 0 || qmbreturn == QMessageBox::No) {