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



Hi, all.

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...

Notice how the cursor disappears. You don't know where exactly are you
at a particular moment.

This also happens when jumping cells, which becomes annoying if you
are fast-moving between the cells... suddenly you don't know where
you are.

It does not happen if left/right-ing on a regular paragraph. In that
case, the cursor stays on during the move. However, looking at the
code, it may happen on other cases.

I have managed to eliminate the issue by eliminating the following line:

diff --git a/sw/source/core/crsr/crsrsh.cxx
b/sw/source/core/crsr/crsrsh.cxx
index 5b92560..cbf39f3 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -344,7 +344,6 @@ BOOL SwCrsrShell::LeftRight( BOOL bLeft, USHORT nCnt,
USHORT nMode,
         if( IsTableMode() )
             return bLeft ? GoPrevCell() : GoNextCell();

-    SwCallLink aLk( *this );        // Crsr-Moves ueberwachen, evt. Link
callen
         BOOL bRet = FALSE;

         // #i27615# Handle cursor in front of label.

Beware of word wrapping. The word üeberwachen translated to "monitor"
using Google Translate.

Of course, I don't have the slightest idea of what an "SwCallLink" is or
does and what its side effects are.

I have tried to follow the call deeper, but I seem to get nowhere. Removing
lines start to behave inconsistently. In that function, aLk is not used, so
I'm starting to get the idea that it registers something instead of
creating
an object for use on the function, and so, the bug gets triggered by a
delayed, asynchronous action.

I have no choice but to request for help. :-)

This is the relevant part of the backtrace:

#0  SwCrsrShell::LeftRight (this=0xacaab1e8, bLeft=1 '\001', nCnt=1,
nMode=1, bVisualAllowed=1 '\001') at
~/$CLONE/writer/sw/source/core/crsr/crsrsh.cxx:344

#1  0xae3978fd in SwCrsrShell::Left (this=0xacaab1e8, nCnt=1, nMode=1,
bAllowVisual=1 '\001') at ../../../inc/crsrsh.hxx:356

#2  0xaecd90d8 in SwWrtShell::Left (this=0xacaab1e8, nMode=1, bSelect=0
'\000', nCount=1, bBasicCall=0 '\000', bVisual=1 '\001') at
~/$CLONE/writer/sw/source/ui/wrtsh/move.cxx:122

#3  0xaebf67e3 in SwTextShell::ExecBasicMove (this=0xaff04134, rReq=...)
at ~/$CLONE/writer/sw/source/ui/shells/txtcrsr.cxx:96

#4  0xaebe2f2c in SfxStubSwTextShellExecBasicMove (pShell=0xaff04134,
rReq=...) at ../../../unxlngi6.pro/inc/swslots.hxx:2408

#5  0xb73c3f38 in SfxShell::CallExec (this=0xaff04134, pFunc=0xaebe2f08
<SfxStubSwTextShellExecBasicMove(SfxShell*, SfxRequest&)>, rReq=...) at
../../inc/sfx2/shell.hxx:201

#6  0xb73bcd1c in SfxDispatcher::Call_Impl (this=0xacadeb94, rShell=...,
rSlot=..., rReq=..., bRecord=1 '\001') at
~/$CLONE/libs-core/sfx2/source/control/dispatch.cxx:281

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.