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

List:       koffice-devel
Subject:    KSpread Fix: unmerge
From:       Norbert Andres <nandres () web ! de>
Date:       2002-08-26 1:51:27
[Download RAW message or body]

Hi,

try that:
A	B
1	1
2	2
4	4

=SUM(A1:B3)

Merge A3 and B3:
Sum updates to 10 (from 14)
Umerge A3 => nothing happens.

This small patch fixes it.

Commit?

Regards
Norbert
["unmerge-bug.diff" (text/x-diff)]

Index: kspread_cell.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_cell.cc,v
retrieving revision 1.438
diff -u -r1.438 kspread_cell.cc
--- kspread_cell.cc     2002/08/20 18:58:41     1.438
+++ kspread_cell.cc     2002/08/26 01:38:49
@@ -367,12 +370,15 @@
   {
     m_ObscuringCells.append(cell);
   }
+  setFlag(Flag_LayoutDirty);
+  updateDepending();
 }

 void KSpreadCell::unobscure( KSpreadCell *cell )
 {
   m_ObscuringCells.remove(cell);
   setFlag(Flag_LayoutDirty);
+  updateDepending();
 }

 void KSpreadCell::clicked( KSpreadCanvas *_canvas )
@@ -3635,6 +3661,7 @@

   setFlag(Flag_UpdatingDeps);

+  KSpreadCell * cell;
   // Every cell that references us must calculate with this new value
   for (d = m_lstDependingOnMe.first(); d != NULL; d = m_lstDependingOnMe.next())
   {
@@ -3642,7 +3669,10 @@
     {
       for (int r = d->Top(); r <= d->Bottom(); r++)
       {
-        d->Table()->cellAt( c, r )->calc();
+        cell = d->Table()->cellAt( c, r );
+        cell->setCalcDirtyFlag();
+        cell->calc();
       }
     }
   }

 Index: kspread_table.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_table.cc,v
retrieving revision 1.453
diff -u -r1.453 kspread_table.cc
--- kspread_table.cc    2002/08/18 06:54:57     1.453
+++ kspread_table.cc    2002/08/26 01:40:24
@@ -5655,13 +5656,15 @@
     KSpreadUndoMergedCell *undo = new KSpreadUndoMergedCell( m_pDoc, this, \
marker.x() ,marker.y(), cell->extraXCells(), cell->extraYCells());  \
m_pDoc->undoBuffer()->appendUndo( undo );  }
-    int x=cell->extraXCells();
+    int x = cell->mergedXCells() + 1;
     if( x == 0 )
-        x=1;
-    int y = cell->extraYCells();
+        x = 1;
+    int y = cell->mergedYCells() + 1;
     if( y == 0 )
-        y=1;
+        y = 1;

     cell->forceExtraCells( marker.x() ,marker.y(), 0, 0 );
     QRect selection( marker.x(), marker.y(), x, y );

  
   


_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel

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

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