Revert "tdf#138512 sw: fix crash on textbox alignment"

This reverts commit 54302a574a98d6fc071472f1fa64adaf70864a26.

Reason for revert: This reintroduces tdf#137546. Besides, the UItest
doesn't make much sense, it tries to test a GTK3 only issue, when the UItest runs with GEN

Change-Id: I8694edd700484fcd3cf232057ecb4f67c186ff11
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110676
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/sw/qa/uitest/data/tdf138512.odt b/sw/qa/uitest/data/tdf138512.odt
deleted file mode 100644
index e72fb8e..0000000
--- a/sw/qa/uitest/data/tdf138512.odt
+++ /dev/null
Binary files differ
diff --git a/sw/qa/uitest/writer_tests7/tdf138512.py b/sw/qa/uitest/writer_tests7/tdf138512.py
deleted file mode 100755
index 5b01910..0000000
--- a/sw/qa/uitest/writer_tests7/tdf138512.py
+++ /dev/null
@@ -1,56 +0,0 @@
# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
from uitest.framework import UITestCase
from uitest.uihelper.common import get_state_as_dict
from libreoffice.uno.propertyvalue import mkPropertyValues
from com.sun.star.text.TextContentAnchorType import  AS_CHARACTER
import org.libreoffice.unotest
import pathlib
import time


def get_url_for_data_file(file_name):
    return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri()

class tdf138512(UITestCase):

    def test_tdf138512(self):

        # Open the bugdoc
        self.ui_test.load_file(get_url_for_data_file("tdf138512.odt"))

        xWriterDoc = self.xUITest.getTopFocusWindow()
        xWriterEdit = xWriterDoc.getChild("writer_edit")
        document = self.ui_test.get_component()

        # Check that the anchortype is as_char
        self.assertEqual( AS_CHARACTER, document.DrawPage.getByIndex(0).AnchorType)

        # Select the textbox
        self.xUITest.executeCommand(".uno:JumpToNextFrame")
        self.xUITest.executeCommand(".uno:JumpToNextFrame")

        # Align the shape to bottom
        time.sleep(1)
        self.xUITest.executeCommand(".uno:AlignDown")
        time.sleep(1)

        # Align the shape up
        self.xUITest.executeCommand(".uno:AlignUp")
        time.sleep(1)

        # Deselect the shape
        xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"}))
        xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "ESC"}))

        # Without the fix this will crash at this point with gtk vcl backend
        time.sleep(1)
        self.assertEqual( AS_CHARACTER, document.DrawPage.getByIndex(0).AnchorType)

        self.ui_test.close_doc()

# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/source/uibase/shells/drwbassh.cxx b/sw/source/uibase/shells/drwbassh.cxx
index b73dccb..f901f32 100644
--- a/sw/source/uibase/shells/drwbassh.cxx
+++ b/sw/source/uibase/shells/drwbassh.cxx
@@ -443,7 +443,8 @@ void SwDrawBaseShell::Execute(SfxRequest const &rReq)
            if ( bAlignPossible )
            {
                const SdrMarkList& rMarkList = pSdrView->GetMarkedObjectList();
                if (rMarkList.GetMarkCount() == 1)
                if (rMarkList.GetMarkCount() == 1
                    && !SwTextBoxHelper::hasTextFrame(rMarkList.GetMark(0)->GetMarkedSdrObj()))
                {
                    sal_Int16 nHorizOrient = -1, nVertOrient = -1;

@@ -471,16 +472,13 @@ void SwDrawBaseShell::Execute(SfxRequest const &rReq)
                            break;
                    }

                    SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
                    SwFrameFormat* pFrameFormat = FindFrameFormat(pObj);
                    SwFrameFormat* pTextBox
                        = SwTextBoxHelper::getOtherTextBoxFormat(pFrameFormat, RES_DRAWFRMFMT);

                    if (nHorizOrient != -1)
                    {
                        pSh->StartAction();
                        SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
                        SwFrameFormat* pFrameFormat = FindFrameFormat( pObj );
                        SwFormatHoriOrient aHOrient(pFrameFormat->GetFormatAttr(RES_HORI_ORIENT));
                        aHOrient.SetHoriOrient(nHorizOrient);
                        aHOrient.SetHoriOrient( nHorizOrient );
                        pFrameFormat->SetFormatAttr(aHOrient);
                        pSh->EndAction();
                    }
@@ -488,34 +486,14 @@ void SwDrawBaseShell::Execute(SfxRequest const &rReq)
                    if (nVertOrient != -1)
                    {
                        pSh->StartAction();
                        SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
                        SwFrameFormat* pFrameFormat = FindFrameFormat( pObj );
                        SwFormatVertOrient aVOrient(pFrameFormat->GetFormatAttr(RES_VERT_ORIENT));
                        aVOrient.SetVertOrient(nVertOrient);
                        aVOrient.SetVertOrient( nVertOrient );
                        pFrameFormat->SetFormatAttr(aVOrient);
                        pSh->EndAction();
                    }

                    if (pTextBox)
                    {
                        Point nShapePos(pFrameFormat->GetHoriOrient().GetPos(),
                                        pFrameFormat->GetVertOrient().GetPos());
                        Point nOffset(
                            SwTextBoxHelper::getTextRectangle(pFrameFormat, false).TopLeft());

                        if (nHorizOrient != -1)
                        {
                            SwFormatHoriOrient aNewHOri(pTextBox->GetHoriOrient());
                            aNewHOri.SetPos(nShapePos.X() + nOffset.X());
                            pTextBox->SetFormatAttr(aNewHOri);
                        }

                        if (nVertOrient != -1)
                        {
                            SwFormatVertOrient aNewVOri(pTextBox->GetVertOrient());
                            aNewVOri.SetPos(nShapePos.Y() + nOffset.Y());
                            pTextBox->SetFormatAttr(aNewVOri);
                        }
                    }

                    break;
                }