tdf#93441: Revert "Fix fdo#38884 Improve Up/Down movement in writer"

This reverts commit d58bea0ffa2a2fe79103ab7aa743aea63e27a0fd

it's really unclear to me what the original commit tries to
fix.
https://bugs.documentfoundation.org/show_bug.cgi?id=38884#c6
gives some information but the behaviour described there
is the same with or without the commit applied.
The discussion in https://gerrit.libreoffice.org/c/core/+/11500
doesn't give much information either.

Change-Id: Iadd8cb6e869fd26654bb0301fbc30ea4f2d39fdf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111932
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112535
Reviewed-by: Jim Raykowski <raykowj@gmail.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index 572afdf..daf77e0 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -341,7 +341,7 @@
    // start parenthesing, hide SV-Cursor and selected areas
    void StartAction();
    // end parenthesing, show SV-Cursor and selected areas
    void EndAction( const bool bIdleEnd = false, const bool DoSetPosX = false );
    void EndAction( const bool bIdleEnd = false );

    // basic cursor travelling
    tools::Long GetUpDownX() const             { return m_nUpDownX; }
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index d7e7519..702dc90 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -213,6 +213,9 @@
    void testCreatePortions();
    void testBookmarkUndo();
    void testFdo85876();
    void testCaretPositionMovingUp();
    void testTdf93441();
    void testTdf81226();
    void testTdf79717();
    void testTdf137532();
    void testFdo87448();
@@ -445,6 +448,9 @@
    CPPUNIT_TEST(testCreatePortions);
    CPPUNIT_TEST(testBookmarkUndo);
    CPPUNIT_TEST(testFdo85876);
    CPPUNIT_TEST(testCaretPositionMovingUp);
    CPPUNIT_TEST(testTdf93441);
    CPPUNIT_TEST(testTdf81226);
    CPPUNIT_TEST(testTdf79717);
    CPPUNIT_TEST(testTdf137532);
    CPPUNIT_TEST(testFdo87448);
@@ -2020,6 +2026,49 @@
    }
}

void SwUiWriterTest::testCaretPositionMovingUp()
{
    SwDoc* const pDoc = createDoc();
    SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
    pWrtShell->Insert("after");
    pWrtShell->InsertLineBreak();
    pWrtShell->Up(false);
    pWrtShell->Insert("before");

    CPPUNIT_ASSERT_EQUAL(OUString(u"beforeAfter" + OUStringChar(CH_TXTATR_NEWLINE)), getParagraph(1)->getString());
}

void SwUiWriterTest::testTdf93441()
{
    SwDoc* const pDoc = createDoc();
    SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
    pWrtShell->Insert("Hello");
    pWrtShell->InsertLineBreak();
    pWrtShell->Insert("Hello World");
    pWrtShell->Up(false);
    pWrtShell->Insert(" World");

    // Without the fix in place, this test would have failed with
    // - Expected: Hello World\nHello World
    // - Actual  :  WorldHello\nHello World
    CPPUNIT_ASSERT_EQUAL(OUString(u"Hello World" + OUStringChar(CH_TXTATR_NEWLINE) + u"Hello World"), getParagraph(1)->getString());
}

void SwUiWriterTest::testTdf81226()
{
    SwDoc* const pDoc = createDoc();
    SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
    pWrtShell->Insert("before");
    pWrtShell->Left(CRSR_SKIP_CHARS, /*bSelect=*/false, 4, /*bBasicCall=*/false);
    pWrtShell->Down(false);
    pWrtShell->Insert("after");

    // Without the fix in place, this test would have failed with
    // - Expected: beforeafter
    // - Actual  : beafterfore
    CPPUNIT_ASSERT_EQUAL(OUString("beforeafter"), getParagraph(1)->getString());
}

void SwUiWriterTest::testTdf79717()
{
    SwDoc* const pDoc = createDoc();
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 701e2f1..861c1f4 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -236,16 +236,11 @@
    SwViewShell::StartAction(); // to the SwViewShell
}

void SwCursorShell::EndAction( const bool bIdleEnd, const bool DoSetPosX )
void SwCursorShell::EndAction( const bool bIdleEnd )
{
    comphelper::FlagRestorationGuard g(mbSelectAll, StartsWithTable() && ExtendedSelectedAll());
    bool bVis = m_bSVCursorVis;

    sal_uInt16 eFlags = SwCursorShell::CHKRANGE;
    if ( !DoSetPosX )
        eFlags |= SwCursorShell::UPDOWN;


    // Idle-formatting?
    if( bIdleEnd && Imp()->GetRegion() )
    {
@@ -273,6 +268,7 @@
        return;
    }

    sal_uInt16 eFlags = SwCursorShell::CHKRANGE;
    if ( !bIdleEnd )
        eFlags |= SwCursorShell::SCROLLWIN;

@@ -312,7 +308,7 @@
#ifdef DBG_UTIL
    OSL_ENSURE( m_nCursorMove, "EndCursorMove() without SttCursorMove()." );
#endif
    EndAction( bIdleEnd, true );
    EndAction( bIdleEnd );
    --m_nCursorMove;
#ifdef DBG_UTIL
    if( !m_nCursorMove )