[kgraphviewer-devel] [KGraphViewer/libkgraphviz] b7ae78f: Fix edge element selection

Kevin Funk krf at electrostorm.net
Wed Dec 15 15:41:51 CET 2010


commit b7ae78f4185dfb1928fec4c808d1f3dcfe4c4d70
branch libkgraphviz
Author: Kevin Funk <krf at electrostorm.net>
Date:   Wed Dec 15 13:39:45 2010 +0100

    Fix edge element selection
    
    Fix logic in DotGraphView::slotElementSelected.
    Fixes regression introduced by previous commit.

diff --git a/src/kgraphviz/canvaselement.cpp b/src/kgraphviz/canvaselement.cpp
index bea5185..91a50bf 100644
--- a/src/kgraphviz/canvaselement.cpp
+++ b/src/kgraphviz/canvaselement.cpp
@@ -513,6 +513,7 @@ void CanvasElement::mousePressEvent(QGraphicsSceneMouseEvent* event)
     m_element->setSelected(!m_element->isSelected());
     if (m_element->isSelected())
     {
+      kDebug() << "Element selected:" << m_element->id() << m_element;
       emit(selected(this,event->modifiers()));
     }
     update();
diff --git a/src/kgraphviz/dotgraphview.cpp b/src/kgraphviz/dotgraphview.cpp
index bcb9b1d..a953f09 100644
--- a/src/kgraphviz/dotgraphview.cpp
+++ b/src/kgraphviz/dotgraphview.cpp
@@ -1581,16 +1581,19 @@ void DotGraphView::setReadWrite()
 void DotGraphView::slotElementSelected(CanvasElement* element, Qt::KeyboardModifiers modifiers)
 {
   Q_D(DotGraphView);
-  kDebug() << "Element:" << element->element()->id();
+  kDebug() << "Element:" << element->element()->id() << element->element();
   QList<QString> selection;
   selection.push_back(element->element()->id());
   if (!modifiers.testFlag(Qt::ControlModifier))
   {
     foreach(GraphEdge* e, d->m_graph->edges())
     {
-      if (e->isSelected()) {
-        e->setSelected(false);
-        e->canvasElement()->update();
+      if (e->canvasElement() != element)
+      {
+        if (e->isSelected()) {
+          e->setSelected(false);
+          e->canvasElement()->update();
+        }
       }
     }
     foreach(GraphNode* e, d->m_graph->nodes())


More information about the kgraphviewer-devel mailing list