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

List:       kde-commits
Subject:    koffice/karbon
From:       Jan Hambrecht <jaham () gmx ! net>
Date:       2009-10-02 21:50:54
Message-ID: 1254520254.944004.31617.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1030667 by jaham:

set/change layer z-index when adding/raising/lowering layers



 M  +22 -3     common/KarbonDocument.cpp  
 M  +0 -6      ui/dockers/KarbonLayerDocker.cpp  


--- trunk/koffice/karbon/common/KarbonDocument.cpp #1030666:1030667
@@ -112,7 +112,14 @@
 
 void KarbonDocument::insertLayer( KoShapeLayer* layer )
 {
-    d->layers.append( layer );
+    if (!d->layers.contains(layer)) {
+        if (d->layers.count()) {
+            layer->setZIndex(d->layers.last()->zIndex()+1);
+        } else {
+            layer->setZIndex(d->layers.count());
+        }
+        d->layers.append( layer );
+    }
 }
 
 void KarbonDocument::removeLayer( KoShapeLayer* layer )
@@ -137,15 +144,27 @@
 void KarbonDocument::raiseLayer( KoShapeLayer* layer )
 {
     int pos = d->layers.indexOf( layer );
-    if( pos != int( d->layers.count() ) - 1 && pos >= 0 )
+    if( pos != int( d->layers.count() ) - 1 && pos >= 0 ) {
+        KoShapeLayer * layerAbove = d->layers.at(pos+1);
+        int lowerZIndex = layer->zIndex();
+        int upperZIndex = layerAbove->zIndex();
+        layer->setZIndex(upperZIndex);
+        layerAbove->setZIndex(lowerZIndex);
         d->layers.move( pos, pos + 1 );
+    }
 }
 
 void KarbonDocument::lowerLayer( KoShapeLayer* layer )
 {
     int pos = d->layers.indexOf( layer );
-    if ( pos > 0 )
+    if ( pos > 0 ) {
+        KoShapeLayer * layerBelow = d->layers.at(pos-1);
+        int upperZIndex = layer->zIndex();
+        int lowerZIndex = layerBelow->zIndex();
+        layer->setZIndex(lowerZIndex);
+        layerBelow->setZIndex(upperZIndex);
         d->layers.move( pos, pos - 1 );
+    }
 }
 
 int KarbonDocument::layerPos( KoShapeLayer* layer )
--- trunk/koffice/karbon/ui/dockers/KarbonLayerDocker.cpp #1030666:1030667
@@ -286,12 +286,6 @@
     {
         KoShapeLayer* layer = new KoShapeLayer();
         layer->setName( name );
-        QList<KoShapeLayer*> layers( m_part->document().layers() );
-        if ( !layers.isEmpty() ) {
-            qSort( layers.begin(), layers.end(), KoShape::compareShapeZIndex );
-            layer->setZIndex( layers.last()->zIndex() + 1 );
-        }
-
         KoCanvasController* canvasController = KoToolManager::instance()->activeCanvasController();
         QUndoCommand *cmd = new KoShapeCreateCommand( m_part, layer, 0 );
         cmd->setText( i18n( "Create Layer") );
[prev in list] [next in list] [prev in thread] [next in thread] 

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