Git commit 10016f1b023d4c77f8e17055e4786d0f5d57d9ea by Dmitry Kazakov. Committed on 19/03/2011 at 21:07. Pushed by dkazakov into branch 'layer_box_cleaning_kazakov'. Fixes and cleaning for KisLayerBox This patch fixes: 1) Drag-and-drop (it has been broken recently) 2) KisNodeManager::activeNode() is now set properly, when a node is deleted (caused a crash). 3) Controls of KisLayerBox are enabled/disabled properly again (has been broken as well as 1) ) Does *not* fix: 1) Crash when adding a transparency mask with a precreated selection (bug 266687) CCMAIL:kimageshop@kde.org M +54 -49 krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp M +1 -1 krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.h M +1 -13 krita/ui/kis_doc2.cc M +0 -7 krita/ui/kis_doc2.h M +61 -54 krita/ui/kis_node_manager.cpp M +21 -2 krita/ui/kis_node_manager.h M +17 -21 krita/ui/kis_node_model.cpp M +0 -2 krita/ui/kis_node_model.h M +0 -6 krita/ui/kis_view2.cpp http://commits.kde.org/calligra/10016f1b023d4c77f8e17055e4786d0f5d57d9ea diff --git a/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp b/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp index fdaeecc..b66cb18 100644 --- a/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp +++ b/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp @@ -92,7 +92,6 @@ KisLayerBox::KisLayerBox() connect(m_wdgLayerBox->listLayers, SIGNAL(contextMenuRequested(const QPoint&, const QModelIndex&)), this, SLOT(slotContextMenuRequested(const QPoint&, const QModelIndex&))); - connect(m_wdgLayerBox->listLayers, SIGNAL(clicked(const QModelIndex&)), SLOT(slotNodeActivated(const QModelIndex&))); m_viewModeMenu = new KMenu(this); QActionGroup *group = new QActionGroup(this); @@ -130,10 +129,27 @@ KisLayerBox::KisLayerBox() m_wdgLayerBox->bnDuplicate->setIcon(SmallIcon("edit-copy")); + + connect(m_wdgLayerBox->bnAdd, SIGNAL(clicked()), SLOT(slotNewPaintLayer())); + connect(m_wdgLayerBox->bnDelete, SIGNAL(clicked()), SLOT(slotRmClicked())); + // NOTE: this is _not_ a mistake. The layerbox shows the layers in the reverse order + connect(m_wdgLayerBox->bnRaise, SIGNAL(clicked()), SLOT(slotLowerClicked())); + connect(m_wdgLayerBox->bnLower, SIGNAL(clicked()), SLOT(slotRaiseClicked())); + // END NOTE + + connect(m_wdgLayerBox->bnProperties, SIGNAL(clicked()), SLOT(slotPropertiesClicked())); + connect(m_wdgLayerBox->bnDuplicate, SIGNAL(clicked()), SLOT(slotDuplicateClicked())); + + connect(m_wdgLayerBox->doubleOpacity, SIGNAL(valueChanged(qreal)), SLOT(slotOpacitySliderMoved(qreal))); + connect(&m_delayTimer, SIGNAL(timeout()), SLOT(slotOpacityChanged())); + + connect(m_wdgLayerBox->cmbComposite, SIGNAL(activated(const QString&)), SLOT(slotCompositeOpChanged(const QString&))); + + m_newLayerMenu = new KMenu(this); m_wdgLayerBox->bnAdd->setMenu(m_newLayerMenu); m_wdgLayerBox->bnAdd->setPopupMode(QToolButton::MenuButtonPopup); - connect(m_wdgLayerBox->bnAdd, SIGNAL(clicked()), SLOT(slotNewPaintLayer())); + m_newLayerMenu->addAction(KIcon("document-new"), i18n("&Paint Layer"), this, SLOT(slotNewPaintLayer())); m_newLayerMenu->addAction(KIcon("folder-new"), i18n("&Group Layer"), this, SLOT(slotNewGroupLayer())); m_newLayerMenu->addAction(KIcon("edit-copy"), i18n("&Clone Layer"), this, SLOT(slotNewCloneLayer())); @@ -147,24 +163,17 @@ KisLayerBox::KisLayerBox() m_newLayerMenu->addAction(KIcon("view-filter"), i18n("&Transformation Mask..."), this, SLOT(slotNewTransformationMask())); #endif m_newLayerMenu->addAction(KIcon("edit-paste"), i18n("&Local Selection"), this, SLOT(slotNewSelectionMask())); - connect(m_wdgLayerBox->bnDelete, SIGNAL(clicked()), SLOT(slotRmClicked())); - - // NOTE: this is _not_ a mistake. The layerbox shows the layers in the reverse order - connect(m_wdgLayerBox->bnRaise, SIGNAL(clicked()), SLOT(slotLowerClicked())); - connect(m_wdgLayerBox->bnLower, SIGNAL(clicked()), SLOT(slotRaiseClicked())); - // END NOTE - connect(m_wdgLayerBox->bnProperties, SIGNAL(clicked()), SLOT(slotPropertiesClicked())); - connect(m_wdgLayerBox->bnDuplicate, SIGNAL(clicked()), SLOT(slotDuplicateClicked())); - connect(m_wdgLayerBox->doubleOpacity, SIGNAL(valueChanged(qreal)), SLOT(slotOpacitySliderMoved(qreal))); - connect(&m_delayTimer, SIGNAL(timeout()), SLOT(slotOpacityChanged())); - connect(m_wdgLayerBox->cmbComposite, SIGNAL(activated(const QString&)), SLOT(slotCompositeOpChanged(const QString&))); m_nodeModel = new KisNodeModel(this); - connect(m_nodeModel, SIGNAL(nodeActivated(KisNodeSP)), this, SLOT(updateUI())); - connect(m_nodeModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(updateUI())); - connect(m_nodeModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SLOT(updateUI())); - connect(m_nodeModel, SIGNAL(modelReset()), this, SLOT(updateUI())); + + // connect model updateUI() to enable/disable controls + connect(m_nodeModel, SIGNAL(nodeActivated(KisNodeSP)), SLOT(updateUI())); + connect(m_nodeModel, SIGNAL(rowsInserted(const QModelIndex&, int, int)), SLOT(updateUI())); + connect(m_nodeModel, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), SLOT(updateUI())); + connect(m_nodeModel, SIGNAL(rowsMoved(const QModelIndex&, int, int, const QModelIndex&, int)), SLOT(updateUI())); + connect(m_nodeModel, SIGNAL(modelReset()), SLOT(updateUI())); + m_wdgLayerBox->listLayers->setModel(m_nodeModel); } @@ -175,7 +184,10 @@ KisLayerBox::~KisLayerBox() void KisLayerBox::setCanvas(KoCanvasBase * canvas) { - disconnect(); + if(m_canvas) { + disconnect(m_canvas); + } + m_canvas = dynamic_cast(canvas); connect(m_canvas, SIGNAL(imageChanged(KisImageWSP)), SLOT(setImage(KisImageWSP))); setImage(m_canvas->view()->image()); @@ -183,42 +195,42 @@ void KisLayerBox::setCanvas(KoCanvasBase * canvas) void KisLayerBox::setImage(KisImageWSP image) { - if (!image) return; m_image = image; - if (m_canvas && m_canvas->view()) { - KisView2* view = m_canvas->view(); - if (!m_nodeManager.isNull()) { - m_nodeManager->disconnect(this); - } - m_nodeManager = view->nodeManager(); - connect(m_nodeManager, SIGNAL(sigNodeActivated(KisNodeSP)), this, SLOT(setCurrentNode(KisNodeSP))); + if (m_image && m_canvas && m_canvas->view()) { - if (!m_nodeModel.isNull()) { - m_nodeModel->disconnect(this); - } - m_nodeModel->setImage(image); - - if (m_nodeManager->activeNode()) { - setCurrentNode(m_nodeManager->activeNode()); + if (m_nodeManager) { + m_nodeManager->disconnect(this); } + m_nodeManager = m_canvas->view()->nodeManager(); - m_image = view->image(); + connect(m_image, SIGNAL(sigAboutToBeDeleted()), SLOT(notifyImageDeleted())); - updateUI(); + // cold start + setCurrentNode(m_nodeManager->activeNode()); + connect(m_nodeManager, SIGNAL(sigUiNeedChangeActiveNode(KisNodeSP)), this, SLOT(setCurrentNode(KisNodeSP))); + connect(m_nodeModel, SIGNAL(nodeActivated(KisNodeSP)), m_nodeManager, SLOT(slotUiActivatedNode(KisNodeSP))); - m_wdgLayerBox->listLayers->expandAll(); - m_wdgLayerBox->listLayers->scrollToBottom(); + connect(m_nodeModel, SIGNAL(requestAddNode(KisNodeSP, KisNodeSP)), m_nodeManager, SLOT(addNode(KisNodeSP, KisNodeSP))); + connect(m_nodeModel, SIGNAL(requestAddNode(KisNodeSP, KisNodeSP, int)), m_nodeManager, SLOT(insertNode(KisNodeSP, KisNodeSP, int))); + connect(m_nodeModel, SIGNAL(requestMoveNode(KisNodeSP, KisNodeSP)), m_nodeManager, SLOT(moveNode(KisNodeSP, KisNodeSP))); + connect(m_nodeModel, SIGNAL(requestMoveNode(KisNodeSP, KisNodeSP, int)), m_nodeManager, SLOT(moveNodeAt(KisNodeSP, KisNodeSP, int))); } + + m_nodeModel->setImage(m_image); + m_wdgLayerBox->listLayers->expandAll(); + m_wdgLayerBox->listLayers->scrollToBottom(); } +void KisLayerBox::notifyImageDeleted() +{ + setImage(0); +} void KisLayerBox::updateUI() { - Q_ASSERT(! m_image.isNull()); + KisNodeSP active = m_image ? m_nodeManager->activeNode() : 0; - KisNodeSP active = m_nodeManager->activeNode(); - m_wdgLayerBox->bnDelete->setEnabled(active); m_wdgLayerBox->bnRaise->setEnabled(active && (active->nextSibling() || (active->parent() && active->parent() != m_image->root()))); @@ -250,11 +262,10 @@ void KisLayerBox::updateUI() void KisLayerBox::setCurrentNode(KisNodeSP node) { - if (node && m_nodeModel) { + if (node) { m_wdgLayerBox->listLayers->setCurrentIndex(m_nodeModel->indexFromNode(node)); updateUI(); } - } void KisLayerBox::slotSetCompositeOp(const KoCompositeOp* compositeOp) @@ -418,15 +429,9 @@ void KisLayerBox::slotPropertiesClicked() void KisLayerBox::slotDuplicateClicked() { - m_nodeManager->duplicateActiveNode(); -} - -void KisLayerBox::slotNodeActivated(const QModelIndex & node) -{ - m_nodeManager->activateNode(m_nodeModel->nodeFromIndex(node)); + m_nodeManager->duplicateActiveNode(); } - void KisLayerBox::slotCompositeOpChanged(const QString& _compositeOp) { m_nodeManager->nodeCompositeOpChanged(m_nodeManager->activeColorSpace()->compositeOp(_compositeOp)); diff --git a/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.h b/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.h index 95ef13d..a9e3e7b 100644 --- a/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.h +++ b/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.h @@ -69,6 +69,7 @@ public: private slots: void setImage(KisImageWSP image); + void notifyImageDeleted(); void slotContextMenuRequested(const QPoint &pos, const QModelIndex &index); @@ -104,7 +105,6 @@ private slots: void slotCompositeOpChanged(const QString&); void slotOpacityChanged(); void slotOpacitySliderMoved(qreal opacity); - void slotNodeActivated(const QModelIndex &); private: diff --git a/krita/ui/kis_doc2.cc b/krita/ui/kis_doc2.cc index 9d3903c..caaeaaf 100644 --- a/krita/ui/kis_doc2.cc +++ b/krita/ui/kis_doc2.cc @@ -89,7 +89,6 @@ #include "canvas/kis_canvas2.h" #include "kis_undo_adapter.h" #include "flake/kis_shape_controller.h" -#include "kis_node_model.h" #include "kra/kis_kra_loader.h" #include "kra/kis_kra_saver.h" #include "kis_statusbar.h" @@ -123,7 +122,7 @@ public: } ~KisDocPrivate() { - // Don't delete m_d->shapeController or m_d->nodeModel because it's in a QObject hierarchy. + // Don't delete m_d->shapeController because it's in a QObject hierarchy. delete undoAdapter; delete nserver; } @@ -136,7 +135,6 @@ public: KisImageSP image; KisShapeController* shapeController; - KisNodeModel* nodeModel; KisKraLoader* kraLoader; KisKraSaver* kraSaver; @@ -164,7 +162,6 @@ KisDoc2::~KisDoc2() { // Despite being QObject they needs to be deleted before the image delete m_d->shapeController; - delete m_d->nodeModel; if (m_d->image) { m_d->image->notifyAboutToBeDeleted(); @@ -219,7 +216,6 @@ bool KisDoc2::init() Q_CHECK_PTR(m_d->nserver); m_d->shapeController = new KisShapeController(this, m_d->nserver); - m_d->nodeModel = new KisNodeModel(this); m_d->kraSaver = 0; m_d->kraLoader = 0; @@ -261,7 +257,6 @@ bool KisDoc2::loadXML(const KoXmlDocument& doc, KoStore *) { if (m_d->image) { m_d->shapeController->setImage(0); - m_d->nodeModel->setImage(0); m_d->image = 0; } @@ -334,7 +329,6 @@ bool KisDoc2::completeLoading(KoStore *store) setModified(false); m_d->image->setUndoAdapter(m_d->undoAdapter); m_d->shapeController->setImage(m_d->image); - m_d->nodeModel->setImage(m_d->image); connect(m_d->image.data(), SIGNAL(sigImageModified()), this, SLOT(setModified())); @@ -525,11 +519,6 @@ KoShape * KisDoc2::addShape(const KisNodeSP node) return m_d->shapeController->shapeForNode(node); } -KisNodeModel * KisDoc2::nodeModel() const -{ - return m_d->nodeModel; -} - void KisDoc2::prepareForImport() { if (m_d->nserver == 0) @@ -551,7 +540,6 @@ void KisDoc2::setCurrentImage(KisImageWSP image) m_d->image = image; m_d->image->setUndoAdapter(m_d->undoAdapter); m_d->shapeController->setImage(image); - m_d->nodeModel->setImage(image); setModified(false); diff --git a/krita/ui/kis_doc2.h b/krita/ui/kis_doc2.h index dac0952..c563d6b 100644 --- a/krita/ui/kis_doc2.h +++ b/krita/ui/kis_doc2.h @@ -40,7 +40,6 @@ class KoShapeControllerBase; class KisView2; class KisChildDoc; class KisUndoAdapter; -class KisNodeModel; /** * The class that represents a Krita document containing content and settings. @@ -144,12 +143,6 @@ public: */ KoShape * addShape(const KisNodeSP node); - /** - * The layer model provides a light-weight Qt model-view - * compatible model on the internal Krita image layer hierarchy. - */ - KisNodeModel * nodeModel() const; - signals: void sigLoadingFinished(); diff --git a/krita/ui/kis_node_manager.cpp b/krita/ui/kis_node_manager.cpp index 703ad2a..4ed6a9b 100644 --- a/krita/ui/kis_node_manager.cpp +++ b/krita/ui/kis_node_manager.cpp @@ -61,6 +61,7 @@ struct KisNodeManager::Private { KisNodeSP activeNodeBeforeMove; void slotLayersChanged(KisGroupLayerSP); + bool activateNodeImpl(KisNodeSP node); }; void KisNodeManager::Private::slotLayersChanged(KisGroupLayerSP layer) @@ -68,6 +69,57 @@ void KisNodeManager::Private::slotLayersChanged(KisGroupLayerSP layer) self->activateNode(layer->at(0)); } +bool KisNodeManager::Private::activateNodeImpl(KisNodeSP node) +{ + Q_ASSERT(view); + Q_ASSERT(view->canvasBase()); + Q_ASSERT(view->canvasBase()->globalShapeManager()); + + if (node && node == activeNode) { + return false; + } + + // Set the selection on the shape manager to the active layer + // and set call KoSelection::setActiveLayer( KoShapeLayer* layer ) + // with the parent of the active layer. + KoSelection * selection = view->canvasBase()->globalShapeManager()->selection(); + Q_ASSERT(selection); + selection->deselectAll(); + + if (!node) { + selection->setActiveLayer(0); + activeNode = 0; + maskManager->activateMask(0); + layerManager->activateLayer(0); + } else { + KoShape * shape = view->document()->shapeForNode(node); + if (!shape) { + shape = view->document()->addShape(node); + } + + selection->select(shape); + KoShapeLayer * shapeLayer = dynamic_cast(shape); + + Q_ASSERT(shapeLayer); + shapeLayer->setGeometryProtected(node->userLocked()); + shapeLayer->setVisible(node->visible()); + selection->setActiveLayer(shapeLayer); + + + activeNode = node; + if (KisLayerSP layer = dynamic_cast(node.data())) { + maskManager->activateMask(0); + layerManager->activateLayer(layer); + } else if (KisMaskSP mask = dynamic_cast(node.data())) { + maskManager->activateMask(mask); + // XXX_NODE: for now, masks cannot be nested. + layerManager->activateLayer(static_cast(node->parent().data())); + } + + } + return true; +} + KisNodeManager::KisNodeManager(KisView2 * view, KisDoc2 * doc) : m_d(new Private()) { @@ -232,7 +284,6 @@ void KisNodeManager::moveNodeAt(KisNodeSP node, KisNodeSP parent, int index) } } - void KisNodeManager::createNode(const QString & nodeType) { @@ -270,63 +321,19 @@ void KisNodeManager::createNode(const QString & nodeType) void KisNodeManager::activateNode(KisNodeSP node) { - Q_ASSERT(m_d->view); - Q_ASSERT(m_d->view->canvasBase()); - Q_ASSERT(m_d->view->canvasBase()->globalShapeManager()); - - if (node && m_d->activeNode) { - if (node == m_d->activeNode) { - return; - } + if(m_d->activateNodeImpl(node)) { + emit sigUiNeedChangeActiveNode(node); + emit sigNodeActivated(node); + nodesUpdated(); } +} - // Set the selection on the shape manager to the active layer - // and set call KoSelection::setActiveLayer( KoShapeLayer* layer ) - // with the parent of the active layer. - KoSelection * selection = m_d->view->canvasBase()->globalShapeManager()->selection(); - Q_ASSERT(selection); - selection->deselectAll(); - - if (! node) { - selection->setActiveLayer(0); - emit sigNodeActivated(0); - m_d->activeNode = 0; - m_d->maskManager->activateMask(0); - m_d->layerManager->activateLayer(0); - } else { - KoShape * shape = m_d->view->document()->shapeForNode(node); - if (!shape) { - shape = m_d->view->document()->addShape(node); - } -#if 0 - KoShape * parentShape = shape->parent(); - if (!parentShape) { - parentShape = m_d->view->document()->addShape(node->parent()); - } -#endif - - selection->select(shape); - KoShapeLayer * shapeLayer = dynamic_cast(shape); - Q_ASSERT(shapeLayer); - if (shapeLayer) { - shapeLayer->setGeometryProtected(node->userLocked()); - shapeLayer->setVisible(node->visible()); - selection->setActiveLayer(shapeLayer); - } - - m_d->activeNode = node; - if (KisLayerSP layer = dynamic_cast(node.data())) { - m_d->maskManager->activateMask(0); - m_d->layerManager->activateLayer(layer); - } else if (KisMaskSP mask = dynamic_cast(node.data())) { - m_d->maskManager->activateMask(mask); - // XXX_NODE: for now, masks cannot be nested. - m_d->layerManager->activateLayer(static_cast(node->parent().data())); - } +void KisNodeManager::slotUiActivatedNode(KisNodeSP node) +{ + if(m_d->activateNodeImpl(node)) { emit sigNodeActivated(node); - + nodesUpdated(); } - nodesUpdated(); } void KisNodeManager::nodesUpdated() diff --git a/krita/ui/kis_node_manager.h b/krita/ui/kis_node_manager.h index 7ed9bba..92ee062 100644 --- a/krita/ui/kis_node_manager.h +++ b/krita/ui/kis_node_manager.h @@ -79,6 +79,16 @@ public: */ void setNodeCompositeOp(KisNodeSP node, const KoCompositeOp* compositeOp); + /** + * Explicitly activates \p node + * The UI will be noticed that active node has been changed. + * + * Both sigNodeActivated and sigUiNeedChangeActiveNode are emitted. + * + * \see slotUiActivatedNode for comparison + */ + void activateNode(KisNodeSP node); + /// Get the class that manages the layer user interface KisLayerManager * layerManager(); @@ -87,16 +97,25 @@ public: signals: - void sigNodeActivated(KisNodeSP layer); + void sigNodeActivated(KisNodeSP node); + void sigUiNeedChangeActiveNode(KisNodeSP node); public slots: + /** + * Activates \p node. + * All non-ui listeners are notified with sigNodeActivated, + * sigUiNeedChangeActiveNode is *not* emitted. + * + * \see activateNode + */ + void slotUiActivatedNode(KisNodeSP node); + void addNode(KisNodeSP node, KisNodeSP activeNode); void insertNode(KisNodeSP node, KisNodeSP parent, int index); void moveNode(KisNodeSP node, KisNodeSP activeNode); void moveNodeAt(KisNodeSP node, KisNodeSP parent, int index); void createNode(const QString & node); - void activateNode(KisNodeSP layer); void nodesUpdated(); void nodeProperties(KisNodeSP node); void nodeOpacityChanged(qreal opacity, bool finalChange); diff --git a/krita/ui/kis_node_model.cpp b/krita/ui/kis_node_model.cpp index 1dcb6d6..9adc817 100644 --- a/krita/ui/kis_node_model.cpp +++ b/krita/ui/kis_node_model.cpp @@ -69,21 +69,24 @@ void KisNodeModel::setImage(KisImageWSP image) if (m_d->image) { m_d->image->disconnect(this); } + m_d->image = image; - connect(m_d->image, SIGNAL(sigPostLayersChanged(KisGroupLayerSP)), SLOT(layersChanged())); - - connect(m_d->image, SIGNAL(sigAboutToAddANode(KisNode*, int)), - SLOT(beginInsertNodes(KisNode*, int))); - connect(m_d->image, SIGNAL(sigNodeHasBeenAdded(KisNode*, int)), - SLOT(endInsertNodes(KisNode*, int))); - connect(m_d->image, SIGNAL(sigAboutToRemoveANode(KisNode*, int)), - SLOT(beginRemoveNodes(KisNode*, int))); - connect(m_d->image, SIGNAL(sigNodeHasBeenRemoved(KisNode*, int)), - SLOT(endRemoveNodes(KisNode*, int))); - connect(m_d->image, SIGNAL(sigNodeChanged(KisNode*)), - SLOT(nodeChanged(KisNode*))); - connect(m_d->image, SIGNAL(sigAboutToBeDeleted()), - SLOT(imageDeleted())); + + if(m_d->image) { + connect(m_d->image, SIGNAL(sigPostLayersChanged(KisGroupLayerSP)), + SLOT(layersChanged())); + connect(m_d->image, SIGNAL(sigAboutToAddANode(KisNode*, int)), + SLOT(beginInsertNodes(KisNode*, int))); + connect(m_d->image, SIGNAL(sigNodeHasBeenAdded(KisNode*, int)), + SLOT(endInsertNodes(KisNode*, int))); + connect(m_d->image, SIGNAL(sigAboutToRemoveANode(KisNode*, int)), + SLOT(beginRemoveNodes(KisNode*, int))); + connect(m_d->image, SIGNAL(sigNodeHasBeenRemoved(KisNode*, int)), + SLOT(endRemoveNodes(KisNode*, int))); + connect(m_d->image, SIGNAL(sigNodeChanged(KisNode*)), + SLOT(nodeChanged(KisNode*))); + } + reset(); } KisNodeSP KisNodeModel::nodeFromIndex(const QModelIndex &index) @@ -201,7 +204,6 @@ QModelIndex KisNodeModel::index(int row, int column, const QModelIndex &parent) QModelIndex KisNodeModel::parent(const QModelIndex &index) const { //dbgUI <<"KisNodeModel::parent " << index; - kDebug() << "image " << m_d->image; if (!m_d->image || !index.isValid()) return QModelIndex(); @@ -514,10 +516,4 @@ void KisNodeModel::updateNodes() m_d->updateQueue.clear(); } -void KisNodeModel::imageDeleted() -{ - m_d->image = 0; - reset(); -} - #include "kis_node_model.moc" diff --git a/krita/ui/kis_node_model.h b/krita/ui/kis_node_model.h index cb5085d..16155d5 100644 --- a/krita/ui/kis_node_model.h +++ b/krita/ui/kis_node_model.h @@ -81,8 +81,6 @@ private slots: void nodeChanged(KisNode * node); void updateNodes(); - void imageDeleted(); - private: class Private; diff --git a/krita/ui/kis_view2.cpp b/krita/ui/kis_view2.cpp index 31d6d8f..bd0d82f 100644 --- a/krita/ui/kis_view2.cpp +++ b/krita/ui/kis_view2.cpp @@ -97,7 +97,6 @@ #include "kis_group_layer.h" #include "kis_custom_palette.h" #include "kis_resource_server_provider.h" -#include "kis_node_model.h" #include "kis_projection.h" #include "kis_node.h" #include "kis_node_manager.h" @@ -624,11 +623,6 @@ void KisView2::createManagers() m_d->nodeManager = new KisNodeManager(this, m_d->doc); m_d->nodeManager->setup(actionCollection()); - connect(m_d->doc->nodeModel(), SIGNAL(requestAddNode(KisNodeSP, KisNodeSP)), m_d->nodeManager, SLOT(addNode(KisNodeSP, KisNodeSP))); - connect(m_d->doc->nodeModel(), SIGNAL(requestAddNode(KisNodeSP, KisNodeSP, int)), m_d->nodeManager, SLOT(insertNode(KisNodeSP, KisNodeSP, int))); - connect(m_d->doc->nodeModel(), SIGNAL(requestMoveNode(KisNodeSP, KisNodeSP)), m_d->nodeManager, SLOT(moveNode(KisNodeSP, KisNodeSP))); - connect(m_d->doc->nodeModel(), SIGNAL(requestMoveNode(KisNodeSP, KisNodeSP, int)), m_d->nodeManager, SLOT(moveNodeAt(KisNodeSP, KisNodeSP, int))); - // the following cast is not really safe, but better here than in the zoomManager // best place would be outside kisview too _______________________________________________ kimageshop mailing list kimageshop@kde.org https://mail.kde.org/mailman/listinfo/kimageshop