sw/qa/uitest/writer_tests3/tdf124088.py |   33 ++++++++++++++++++++++++++++++++
 sw/source/ui/misc/glossary.cxx          |   24 ++++++++++++++++++-----
 2 files changed, 52 insertions(+), 5 deletions(-)

New commits:
commit fbabd959060655a77188447c9fc0112e0ab8474c
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Sun Jan 8 12:31:51 2023 +0100
Commit:     Andreas Heinisch <andreas.heini...@yahoo.de>
CommitDate: Wed Jan 11 06:58:42 2023 +0000

    tdf#124088 - Propose AutoText and shortcut name based on selected text
    
    Change-Id: I55ab9b41a32d7a4e41465f375179997a5c8dd06a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145175
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>

diff --git a/sw/qa/uitest/writer_tests3/tdf124088.py 
b/sw/qa/uitest/writer_tests3/tdf124088.py
new file mode 100755
index 000000000000..6ff65dad7631
--- /dev/null
+++ b/sw/qa/uitest/writer_tests3/tdf124088.py
@@ -0,0 +1,33 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# 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 type_text, get_state_as_dict
+
+class tdf124088(UITestCase):
+
+    def test_tdf124088_propose_autotext(self):
+        with self.ui_test.create_doc_in_start_center("writer"):
+            # Insert a random text greater than 25 characters and select it
+            xWriterDoc = self.xUITest.getTopFocusWindow()
+            xWriterEdit = xWriterDoc.getChild("writer_edit")
+            type_text(xWriterEdit, "This is a sample paragraph")
+            self.xUITest.executeCommand(".uno:SelectAll")
+
+            # Open auto text dialog and check proposed text
+            with 
self.ui_test.execute_dialog_through_command(".uno:EditGlossary") as 
xEditGlossaryDlg:
+                xName = xEditGlossaryDlg.getChild("name")
+                self.assertEqual(get_state_as_dict(xName)["Text"], "This is a 
sample")
+                # Click on a group entry, proposed auto text should remain
+                xCategory = xEditGlossaryDlg.getChild("category")
+                xMyAutoText = xCategory.getChild("2")
+                xMyAutoText.executeAction("SELECT", tuple())
+                self.assertEqual(get_state_as_dict(xName)["Text"], "This is a 
sample")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx
index ae3ce4f06666..a1e4a60fe883 100644
--- a/sw/source/ui/misc/glossary.cxx
+++ b/sw/source/ui/misc/glossary.cxx
@@ -410,12 +410,7 @@ IMPL_LINK(SwGlossaryDlg, GrpSelect, weld::TreeView&, rBox, 
void)
         ShowAutoText(::GetCurrGlosGroup(), m_xShortNameEdit->get_text());
     }
     else
-    {
-        m_xNameED->set_text("");
-        m_xShortNameEdit->set_text("");
-        m_xShortNameEdit->set_sensitive(false);
         ShowAutoText("", "");
-    }
     // update controls
     NameModify(*m_xShortNameEdit);
     if( SfxRequest::HasMacroRecorder( m_pShell->GetView().GetViewFrame() ) )
@@ -904,6 +899,25 @@ void SwGlossaryDlg::Init()
     m_xInsertTipCB->set_active( rCfg.IsAutoTextTip() );
     
m_xInsertTipCB->set_sensitive(!officecfg::Office::Writer::AutoFunction::Text::ShowToolTip::isReadOnly());
     m_xInsertTipCB->connect_toggled(LINK(this, SwGlossaryDlg, CheckBoxHdl));
+
+    // tdf#124088 - propose autotext and shortcut name based on selected text
+    if (m_pShell->HasSelection())
+    {
+        OUString aSelText;
+        m_pShell->GetSelectedText(aSelText, ParaBreakType::ToBlank);
+
+        aSelText = aSelText.trim();
+        if (aSelText.getLength() > 25)
+        {
+            aSelText = aSelText.copy(0, 25);
+            if (const sal_Int32 nBlankIndex = aSelText.lastIndexOf(' '); 
nBlankIndex != -1)
+                aSelText = aSelText.copy(0, nBlankIndex);
+        }
+
+        m_xNameED->set_text(aSelText);
+        m_xNameED->select_region(0, -1);
+        m_xShortNameEdit->set_text(lcl_GetValidShortCut(aSelText));
+    }
 }
 
 // KeyInput for ShortName - Edits without Spaces

Reply via email to