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

List:       koffice
Subject:    Patch for kspread
From:       montel laurent <montell () club-internet ! fr>
Date:       2000-08-23 20:41:41
[Download RAW message or body]

Hi,

I added to my previous patch:
-now undo works when I used "spell checking"


So could you test it and apply it please.

Thanks bye

["patch23.diff" (text/plain)]

? kword.kwd
? fonts.dir
? toto.csv
? toto2.ksp
? KSpreadLocation.diff
? ???
? KSpreadCellIface_stub.h
? KSpreadCellIface_stub.cpp
? toto.ksp
? filters/Makefile.in
? filters/Makefile
? filters/csv/Makefile
? filters/csv/Makefile.in
? filters/csv/csvfilter
? filters/komma/Makefile.in
? filters/komma/Makefile
? pics/@kde_minidir@
cvs server: Diffing .
Index: kspread_canvas.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_canvas.cc,v
retrieving revision 1.142
diff -u -r1.142 kspread_canvas.cc
--- kspread_canvas.cc	2000/08/20 13:00:25	1.142
+++ kspread_canvas.cc	2000/08/23 20:36:55
@@ -2033,6 +2033,9 @@
 {
   QRect selection( activeTable()->selectionRect() );
   QRect rect=selection;
+  if(activeTable()->areaIsEmpty())
+        return;
+
   if(selection.left() == 0)
         rect.setCoords(markerColumn(),markerRow(),markerColumn(),markerRow() );
   if(makeUndo)
Index: kspread_table.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_table.cc,v
retrieving revision 1.196
diff -u -r1.196 kspread_table.cc
--- kspread_table.cc	2000/08/22 18:22:51	1.196
+++ kspread_table.cc	2000/08/23 20:37:10
@@ -1714,7 +1714,6 @@
         else
             kdDebug(36001) << "Error in Series::type" << endl;
         }
-
 }
 
 
@@ -2820,6 +2819,56 @@
   delete tmp;
 }
 
+bool KSpreadTable::areaIsEmpty()
+{
+    bool selected = ( m_rctSelection.left() != 0 );
+
+    // Complete rows selected ?
+    if ( selected && m_rctSelection.right() == 0x7FFF )
+    {
+      KSpreadCell* c = m_cells.firstCell();
+      for( ;c; c = c->nextCell() )
+      {
+      int row = c->row();
+      if ( m_rctSelection.top() <= row && m_rctSelection.bottom() >= row
+      &&!c->isObscuringForced() && !c->text().isEmpty())
+        {
+        return false;
+        }
+      }
+    }
+    else if ( selected && m_rctSelection.bottom() == 0x7FFF )
+    {
+      KSpreadCell* c = m_cells.firstCell();
+      for( ;c; c = c->nextCell() )
+      {
+        int col = c->column();
+        if ( m_rctSelection.left() <= col && m_rctSelection.right() >= col
+        &&!c->isObscuringForced() && !c->text().isEmpty())
+        {
+        return false;
+        }
+      }
+    }
+    else
+    {
+        QRect r( m_rctSelection );
+        if ( !selected )
+            r.setCoords( marker().x(), marker().y(), marker().x(), marker().y() );
+
+        for ( int x = r.left(); x <= r.right(); x++ )
+            for ( int y = r.top(); y <= r.bottom(); y++ )
+            {
+                KSpreadCell *cell = cellAt( x, y );
+                if(!cell->isObscuringForced() && !cell->text().isEmpty())
+                {
+                return false;
+                }
+            }
+    }
+    return true;
+}
+
 void KSpreadTable::setSelectionMultiRow( const QPoint &_marker, bool enable )
 {
     m_pDoc->setModified( true );
@@ -3393,6 +3442,9 @@
 {
     m_pDoc->setModified( true );
     bool selected = ( m_rctSelection.left() != 0 );
+
+    if(areaIsEmpty())
+        return;
 
     // Complete rows selected ?
     if ( selected && m_rctSelection.right() == 0x7FFF )
Index: kspread_table.h
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_table.h,v
retrieving revision 1.114
diff -u -r1.114 kspread_table.h
--- kspread_table.h	2000/08/22 18:22:51	1.114
+++ kspread_table.h	2000/08/23 20:37:17
@@ -507,6 +507,8 @@
     void dissociateCell( const QPoint &_marker, bool makeUndo=true );
     void changeMergedCell( int m_iCol, int m_iRow, int m_iExtraX, int m_iExtraY);
 
+    bool areaIsEmpty();
+
     /**
      * Change name of reference when the user inserts or removes a column,
      * a row or a cell (= insertion of a row [or column] on a single column [or \
                row]).
Index: kspread_view.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_view.cc,v
retrieving revision 1.274
diff -u -r1.274 kspread_view.cc
--- kspread_view.cc	2000/08/18 21:39:10	1.274
+++ kspread_view.cc	2000/08/23 20:37:26
@@ -82,6 +82,7 @@
 #include "kspread_dlg_comment.h"
 #include "kspread_dlg_angle.h"
 #include "kspread_dlg_goto.h"
+#include "kspread_undo.h"
 
 #include "handler.h"
 #include "toolbox.h"
@@ -1904,9 +1905,16 @@
   ASSERT( !cell->isFormular() && !cell->isValue() );
 
   QString text = cell->text();
+  QString tmpText=cell->text();
   if ( tool->run( entry->command, &text, "QString", "text/plain") )
+      {
+      if ( !m_pDoc->undoBuffer()->isLocked() )
+        {
+        KSpreadUndoSetText* undo = new KSpreadUndoSetText( m_pDoc, m_pTable, \
tmpText, m_pCanvas->markerColumn(), m_pCanvas->markerRow() ); +        \
m_pDoc->undoBuffer()->appendUndo( undo ); +        }
       cell->setCellText( text, true );
-
+      }
 }
 
 void KSpreadView::deleteSelection()
cvs server: Diffing dtd
cvs server: Diffing extensions
cvs server: Diffing filters
cvs server: Diffing filters/csv
cvs server: Diffing filters/komma
cvs server: Diffing pics
cvs server: Diffing plugins
cvs server: Diffing plugins/calculator
cvs server: Diffing plugins/calculator/pics
cvs server: Diffing scripts
cvs server: Diffing tablestyles
cvs server: Diffing toolbar
cvs server: Diffing toolbar/hicolor
cvs server: Diffing toolbar/locolor



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

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