Browse Source

ObjTabelle ist jetzt kompatibel mit AuswahlBox

Kolja Strohm 4 years ago
parent
commit
e6af7e81e0
2 changed files with 21 additions and 9 deletions
  1. 16 9
      Tabelle.cpp
  2. 5 0
      Welt3D.cpp

+ 16 - 9
Tabelle.cpp

@@ -1072,6 +1072,22 @@ void ObjTabelle::render( Bild & zRObj ) // zeichnet nach zRObj
         for( int z = 0; z < zeilenAnzahl && tmp_zZeichnungs; ++z )
         {
             int zHi = zeilenHeight->hat( z ) ? zeilenHeight->get( z ) : 0;
+            if( hatStyle( Style::Raster ) )
+                yPos += rasterBreite;
+            yPos += zHi;
+            if( z == zeilenAnzahl - 1 && vertikalScrollBar && hatStyle( Style::VScroll ) )
+                vertikalScrollBar->getScrollData()->max = yPos + vertikalScrollBar->getScroll();
+        }
+        for( int z = zeilenAnzahl - 1; z >= 0 && tmp_zZeichnungs; z-- )
+        {
+            int zHi = zeilenHeight->hat( z ) ? zeilenHeight->get( z ) : 0;
+            yPos -= zHi;
+            if( hatStyle( Style::Raster ) )
+            {
+                yPos -= rasterBreite;
+                for( int i = 0; i < rasterBreite; i++ )
+                    zRObj.drawLinieHAlpha( xPos, yPos + zHi + i, sBr, rasterFarbe );
+            }
             Zeichnung *obj = tmp_zZeichnungs->hat( z ) ? tmp_zZeichnungs->z( z ) : 0;
             if( obj )
             {
@@ -1107,15 +1123,6 @@ void ObjTabelle::render( Bild & zRObj ) // zeichnet nach zRObj
                     }
                 }
             }
-            if( hatStyle( Style::Raster ) )
-            {
-                for( int i = 0; i < rasterBreite; i++ )
-                    zRObj.drawLinieHAlpha( xPos, yPos + zHi + i, sBr, rasterFarbe );
-                yPos += rasterBreite;
-            }
-            yPos += zHi;
-            if( z == zeilenAnzahl - 1 && vertikalScrollBar && hatStyle( Style::VScroll ) )
-                vertikalScrollBar->getScrollData()->max = yPos + vertikalScrollBar->getScroll();
         }
         if( hatStyle( Style::Raster ) )
         {

+ 5 - 0
Welt3D.cpp

@@ -45,6 +45,11 @@ void Welt3D::unlock()
 void Welt3D::addZeichnung( Model3D *obj )
 {
     cs.lock();
+    for( auto i = members->getIterator(); i; i++ )
+    {
+        if( i == obj )
+            throw std::exception();
+    }
     members->add( obj );
     rend = 1;
     cs.unlock();