[Libreoffice] Annoying cursor behavior on sw tables

Florian Effenberger floeff at documentfoundation.org
Thu Dec 30 06:13:40 PST 2010


Errm... what has the below one to do with me? ;) ;)

Octavio Alvarez wrote on 2010-12-30 05.58:
> On Wed, 29 Dec 2010 05:37:31 -0800, Jan Holesovsky <kendy at suse.cz> wrote:
>> On 2010-12-23 at 21:07 -0800, Octavio Alvarez wrote:
>>
>>
>> [...]
>>
>>
>> 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.

-- 
Florian Effenberger <floeff at documentfoundation.org>
Steering Committee and Founding Member of The Document Foundation
Tel: +49 8341 99660880 | Mobile: +49 151 14424108
Skype: floeff | Twitter/Identi.ca: @floeff


More information about the LibreOffice mailing list