[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/step/step
From:       Sebastian Voecking <kde () voecking ! net>
Date:       2011-02-03 21:50:09
Message-ID: 20110203215009.D65FDAC8C5 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1218707 by voecking:

Don't add items before their position is correctly set
BUG: 220828


 M  +4 -2      motorgraphics.cc  
 M  +6 -3      polygongraphics.cc  
 M  +1 -1      worldfactory.cc  
 M  +6 -7      worldgraphics.cc  
 M  +8 -0      worldmodel.cc  
 M  +1 -0      worldmodel.h  


--- trunk/KDE/kdeedu/step/step/motorgraphics.cc #1218706:1218707
@@ -39,9 +39,10 @@
 
         _worldModel->simulationPause();
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(className()); Q_ASSERT(_item != NULL);
+        _item = _worldModel->createItem(className()); Q_ASSERT(_item != NULL);
 
         _worldModel->setProperty(_item, "localPosition", vpos);
+        _worldModel->addItem(_item);
         tryAttach(pos);
 
         _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
@@ -219,9 +220,10 @@
 
         _worldModel->simulationPause();
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(className()); Q_ASSERT(_item != NULL);
+        _item = _worldModel->createItem(className()); Q_ASSERT(_item != NULL);
 
         _worldModel->setProperty(_item, "localPosition", vpos);
+        _worldModel->addItem(_item);
         tryAttach(pos);
 
         _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
--- trunk/KDE/kdeedu/step/step/polygongraphics.cc #1218706:1218707
@@ -160,9 +160,10 @@
 
         _worldModel->simulationPause();
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(_className); Q_ASSERT(_item != NULL);
+        _item = _worldModel->createItem(_className); Q_ASSERT(_item != NULL);
         _worldModel->setProperty(_item, "position", vpos);
         _worldModel->setProperty(_item, "radius", QVariant::fromValue(0.0));
+        _worldModel->addItem(_item);
         _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
                                                     QItemSelectionModel::ClearAndSelect);
 
@@ -284,9 +285,10 @@
 
         _worldModel->simulationPause();
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(_className); Q_ASSERT(_item != NULL);
+        _item = _worldModel->createItem(_className); Q_ASSERT(_item != NULL);
         _worldModel->setProperty(_item, "position", vpos);
         _worldModel->setProperty(_item, "size", QVariant::fromValue(StepCore::Vector2d::Zero().eval()));
+        _worldModel->addItem(_item);
         _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
                                                     QItemSelectionModel::ClearAndSelect);
         _topLeft = WorldGraphicsItem::pointToVector(pos);
@@ -428,9 +430,10 @@
 
         _worldModel->simulationPause();
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(_className); Q_ASSERT(_item != NULL);
+        _item = _worldModel->createItem(_className); Q_ASSERT(_item != NULL);
         _worldModel->setProperty(_item, "position", vpos);
         _worldModel->setProperty(_item, "vertexes", QString("(0,0)"));
+        _worldModel->addItem(_item);
         _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
                                                     QItemSelectionModel::ClearAndSelect);
 
--- trunk/KDE/kdeedu/step/step/worldfactory.cc #1218706:1218707
@@ -127,7 +127,7 @@
 
     __REGISTER_EXT(SoftBodySpring, SpringCreator, SoftBodySpringGraphicsItem, ItemMenuHandler);
     __REGISTER_EXT(SoftBodyParticle, ItemCreator, SoftBodyParticleGraphicsItem, ItemMenuHandler);
-    __REGISTER_EXT(SoftBody, ItemCreator, SoftBodyGraphicsItem, SoftBodyMenuHandler);
+    __REGISTER_EXT(SoftBody, SoftBodyCreator, SoftBodyGraphicsItem, SoftBodyMenuHandler);
 
     __REGISTER_EXT_E(Spring, SpringCreator, SpringGraphicsItem, ItemMenuHandler);
     __REGISTER_EXT(LinearMotor, LinearMotorCreator, LinearMotorGraphicsItem, ItemMenuHandler);
--- trunk/KDE/kdeedu/step/step/worldgraphics.cc #1218706:1218707
@@ -70,10 +70,7 @@
         _worldModel->simulationPause();
 
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(_className); Q_ASSERT(_item != NULL);
-#ifdef __GNUC__
-#warning Do not add item until it is fully created
-#endif
+        _item = _worldModel->createItem(_className); Q_ASSERT(_item != NULL);
         const StepCore::MetaProperty* property = _item->metaObject()->property("position");
         if(property != NULL) {
             QGraphicsSceneMouseEvent* mouseEvent = static_cast<QGraphicsSceneMouseEvent*>(event);
@@ -81,6 +78,7 @@
             QVariant vpos = QVariant::fromValue(WorldGraphicsItem::pointToVector(pos));
             _worldModel->setProperty(_item, property, vpos);
         }
+        _worldModel->addItem(_item);
 
         _worldModel->endMacro();
 
@@ -122,9 +120,7 @@
         QPointF pos = mouseEvent->scenePos();
         _worldModel->simulationPause();
         _worldModel->beginMacro(i18n("Create %1", _worldModel->newItemName(_className)));
-        _item = _worldModel->newItem(className()); Q_ASSERT(_item != NULL);
-        _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
-                                                QItemSelectionModel::ClearAndSelect);
+        _item = _worldModel->createItem(className()); Q_ASSERT(_item != NULL);
 
         if(_twoEnds) {
             _worldScene->snapItem(pos, _snapFlags, _snapTypes, WorldGraphicsItem::Finished, _item, 1);
@@ -142,6 +138,9 @@
             _worldModel->endMacro();
             setFinished();
         }
+        _worldModel->addItem(_item);
+        _worldModel->selectionModel()->setCurrentIndex(_worldModel->objectIndex(_item),
+                                                       QItemSelectionModel::ClearAndSelect);
         return true;
 
     } else if(event->type() == QEvent::GraphicsSceneMouseMove &&
--- trunk/KDE/kdeedu/step/step/worldmodel.cc #1218706:1218707
@@ -545,6 +545,14 @@
     return getUniqueName(className);
 }
 
+StepCore::Item* WorldModel::createItem(const QString& className, StepCore::ItemGroup* parent)
+{
+    StepCore::Item* item = _worldFactory->newItem(className);
+    if(item == NULL) return NULL;
+    item->setName(getUniqueName(className));
+    return item;
+}
+
 StepCore::Item* WorldModel::newItem(const QString& className, StepCore::ItemGroup* parent)
 {
     StepCore::Item* item = _worldFactory->newItem(className);
--- trunk/KDE/kdeedu/step/step/worldmodel.h #1218706:1218707
@@ -109,6 +109,7 @@
     // Add/remove/set functions
     /** Generates new unique item name */
     QString newItemName(const QString& className);
+    StepCore::Item* createItem(const QString& className, StepCore::ItemGroup* parent = 0);
     /** Creates new item of className with unique name */
     StepCore::Item* newItem(const QString& className, StepCore::ItemGroup* parent = 0);
     /** Add already created item to the world */
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic