Skip to content
  • Dmitry Kazakov's avatar
    A huge refactoring for KisNodeModel · 040a948d
    Dmitry Kazakov authored
    Now the model doesn't depend on the hierarchy of the image. It uses
    the hierarchy of the dummies stored in KiShapeController instead.
    
    Some bullet points:
    1) KisShapeController connects to the image and forwards the node
    addition/removal signals for other recievers
    2) KisNodeModel is connected to the KisShapeController and listens
    to the forwarded signals. It follows that it doesn't depend on the image
    directly, so there are no problems with multithreading.
    2.5) KisNodeModel does not depend on sigLayersChanged() anymore.
    3) KisShapeController manages when a node should be activated. It emits
    the signal sigActivateNode(KisNodeSP) which is processed by the
    KisNodeManager. It solved many problems at once. First, we needn't
    workaround moving of nodes (KisNodeManager::Private::activeBeforeMove).
    Second we are able to deprecate KisNodeManager::activateNode() now. (It'll be
    done in one of next commmits).
    4) Fixed KisNodeFacade::lowerNode(). Now newly activated node depends on the node
    which is added in the end of the operation, so we should move exactly the node
    which was requested.
    5) A small refactoring for KisLayerBox is done. It was discussed with Boud on irc.
    
    
    Not yet fixed issues:
    1) I had to disable Bumpmap filter temporarily, because it didn't
    compile with changed KisNodeModel. It'll be fixed in the following commits.
    2) When loading an image with many layers KisLayerBox does not scroll to
    the active layer.
    040a948d