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
- [Libreoffice] Annoying cursor behavior on sw tables · Octavio Alvarez
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.