Date: prev next · Thread: first prev next last
2010 Archives by date, by thread · List index


On Wed, 29 Dec 2010 05:37:31 -0800, Jan Holesovsky <kendy@suse.cz> wrote:
On 2010-12-23 at 21:07 -0800, Octavio Alvarez wrote:

There is this really annoying behavior:
0. Open Writer.
1. Create a table, say 3 x 3.
2. Place the cursor in a cell.
3. Type some text, like asdfasdfasdfasdf.
4. Using the mouse, place the cursor in the middle of the asdf-word.
5. Using the keyboard go left and right and left and right...

[...]

          if( IsTableMode() )
              return bLeft ? GoPrevCell() : GoNextCell();

-    SwCallLink aLk( *this );        // Crsr-Moves ueberwachen, evt.

From what I see, it does most of its work in a destructor, so this looks
like a kind of 'guard' that restores/updates stuff when the SwCallLink
instance is destructed.

Either way; I'd try to revert the callnk.cxx changes from commit
47472e8e70c1ae3dc55a5b00ef69eaa85f651a7f, it has something to do with
tables, and see if you still see the problem.  If not, then it might
limit the scope of your debugging to that commit only.

Hopefully I am not misleading you :-)

Indeed, reverting the commit did the trick.

Now, look at this, this blog post documents the patch: :-O

http://cedric.bosdonnat.free.fr/wordpress/?p=472

The thing is that Window::Invalidate() gets called if I move or if I type
inside a table cell, which almost any key triggers, which is wrong.
bUpdatedTable gets set to True inside SwCallLink::~SwCallLink() after
some tests. Another option would be to correct those tests, but that
would be far beyond my knowledge.

Considering the above blog post from cbos I removed the Invalidate() and
tested inserting a 1x1 table inside the cell of another 1x1 table and it
seemed to work and update correctly and open the collapsed cell if I place
the cursor inside it (by pressing Left or Right, for example). It closes
back again if I go outside the empty cell.

Now, do we really need these lines? I tested saving and loading a file
and also using the main window. It worked. I saw no side effects, and my
problem gone, but then again, I really don't know what problems am I
looking for. I also don't know when else may a problem arise...

diff --git a/sw/source/core/crsr/callnk.cxx b/sw/source/core/crsr/callnk.cxx
index ea998fe..cabef45 100644
--- a/sw/source/core/crsr/callnk.cxx
+++ b/sw/source/core/crsr/callnk.cxx
@@ -143,9 +143,6 @@ SwCallLink::~SwCallLink()
         }
     }

-    if ( bUpdatedTable )
-        rShell.GetWin( )->Invalidate( 0 );
-
xub_StrLen nCmp, nAktCntnt = pCurCrsr->GetPoint()->nContent.GetIndex();
     USHORT nNdWhich = pCNd->GetNodeType();
     ULONG nAktNode = pCurCrsr->GetPoint()->nNode.GetIndex();

BTW, thanks for your help, Kendy, and thanks for the translations, Pascal.

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.