[Libreoffice-commits] .: svtools/source

Lionel Elie Mamane lmamane at kemper.freedesktop.org
Tue Jul 24 08:34:41 PDT 2012


 svtools/source/brwbox/editbrowsebox.cxx |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

New commits:
commit 9bd5e75b95d7b380f9be95913c949221dc4c0d67
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jul 24 17:15:55 2012 +0200

    forcing repaint has catastrophic performance implications; invalidate only
    
    In Base:
    1) Open a big table (hundreds of rows)
    2) Only the first 40 to 100 rows are fetched into the cache and shown
       (depending on screen / window size).
    3) Move to last row (click on icon |>|)
    4) The last 40 to 100 rows are fetched into the cache; the data of the
       first 40/100 rows is pushed out of the cache.
    5) The first 40 to 100 rows are fetched, just so that the call to
       rWindow.Paint() can do its job, because they are not in the cache
       anymore (!). The last 40/100 rows are pushed out of the cache.
    6) The last 40 to 100 rows are fetched into the cache and displayed;
       the first 40/100 rows are pushed out of the cache *again*.
    
    Steps 5 and 6 are obviously *very* stupid.
    
    Change-Id: Ic11b893ea9440c2c5a142bd3c77c95d6730aa723

diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx
index 129b9f4..3560f2d 100644
--- a/svtools/source/brwbox/editbrowsebox.cxx
+++ b/svtools/source/brwbox/editbrowsebox.cxx
@@ -927,8 +927,6 @@ namespace svt
         if (nNewRow != nEditRow)
         {
             Window& rWindow = GetDataWindow();
-            // don't paint too much
-            // update the status immediatly if possible
             if ((nEditRow >= 0) && (GetBrowserFlags() & EBBF_NO_HANDLE_COLUMN_CONTENT) == 0)
             {
                 Rectangle aRect = GetFieldRectPixel(nEditRow, 0, sal_False );
@@ -937,7 +935,7 @@ namespace svt
                 // probably because it is part of a bitfield
                 pTHIS->bPaintStatus = static_cast< sal_Bool >
                     (( GetBrowserFlags() & EBBF_HANDLE_COLUMN_TEXT ) == EBBF_HANDLE_COLUMN_TEXT );
-                rWindow.Paint(aRect);
+                rWindow.Invalidate(aRect);
                 pTHIS->bPaintStatus = sal_True;
             }
 


More information about the Libreoffice-commits mailing list