basctl/uiconfig/basicide/toolbar/findbar.xml | 1 include/svx/strings.hrc | 1 officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu | 11 officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu | 5 sc/uiconfig/scalc/toolbar/findbar.xml | 1 sd/uiconfig/sdraw/toolbar/findbar.xml | 1 sd/uiconfig/simpress/toolbar/findbar.xml | 1 svx/source/tbxctrls/tbunosearchcontrollers.cxx | 139 +++++++++- svx/util/svx.component | 4 sw/qa/uitest/findBar/findbar.py | 33 ++ sw/uiconfig/sglobal/toolbar/findbar.xml | 1 sw/uiconfig/sweb/toolbar/findbar.xml | 1 sw/uiconfig/swriter/toolbar/findbar.xml | 1 13 files changed, 194 insertions(+), 6 deletions(-)
New commits: commit 4957d832c76598e78a57324dad5b4de7345a33e2 Author: jlorber <jlor...@linagora.com> AuthorDate: Wed Feb 26 10:38:59 2025 +0100 Commit: Jim Raykowski <rayk...@gmail.com> CommitDate: Wed Mar 19 01:15:40 2025 +0100 tdf#163616 add Match Diacritics to the find bar Trying to replicate the behaviour implemented in the search dialog, while trying to respect the previous logic for search bar which ignores diacritics and kashida if CTL font is enabled. In my opinion, the new checkbox should be the only parameter ruling whether the search should match diacritics or not, but we can still ignore kashida if CTL font is enabled. Change-Id: I1b88be26dd80a1ebbcf78c32ade7d5a289e0766c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182212 Tested-by: Jenkins Reviewed-by: Jim Raykowski <rayk...@gmail.com> diff --git a/basctl/uiconfig/basicide/toolbar/findbar.xml b/basctl/uiconfig/basicide/toolbar/findbar.xml index 35e61169626b..97c5172f9170 100644 --- a/basctl/uiconfig/basicide/toolbar/findbar.xml +++ b/basctl/uiconfig/basicide/toolbar/findbar.xml @@ -24,6 +24,7 @@ <toolbar:toolbaritem xlink:href=".uno:DownSearch"/> <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> </toolbar:toolbar> diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc index 90d5f3ebab79..c297e8a817ae 100644 --- a/include/svx/strings.hrc +++ b/include/svx/strings.hrc @@ -1410,6 +1410,7 @@ #define RID_SVXSTR_FINDBAR_FIND NC_("RID_SVXSTR_FINDBAR_FIND", "Find") #define RID_SVXSTR_FINDBAR_MATCHCASE NC_("RID_SVXSTR_FINDBAR_MATCHCASE", "Match Case") +#define RID_SVXSTR_FINDBAR_MATCHDIACRITICS NC_("RID_SVXSTR_FINDBAR_MATCHDIACRITICS", "Match Diacritics") #define RID_SVXSTR_FINDBAR_SEARCHFORMATTED NC_("RID_SVXSTR_FINDBAR_SEARCHFORMATTED", "Formatted Display") #define STR_IMAGE_ORIGINAL_SIZE NC_("STR_IMAGE_ORIGINAL_SIZE", "$(WIDTH) × $(HEIGHT) ($(WIDTH_IN_PX) × $(HEIGHT_IN_PX) px)") diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index afda5d02e4f9..86da92e6d37a 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -1478,6 +1478,17 @@ <value>com.sun.star.svx.MatchCaseToolboxController</value> </prop> </node> + <node oor:name="com.sun.star.svx.MatchDiacriticsToolboxController" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:MatchDiacritics</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.svx.MatchDiacriticsToolboxController</value> + </prop> + </node> <node oor:name="com.sun.star.svx.SearchFormattedToolboxController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:SearchFormattedDisplayString</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index 6babc6e31266..a096e245ce45 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -1735,6 +1735,11 @@ bit 3 (0x8): #define UICOMMANDDESCRIPTION_PROPERTIES_TOGGLEBUTTON 8 <value xml:lang="en-US">Match Case</value> </prop> </node> + <node oor:name=".uno:MatchDiacritics" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Match Diacritics</value> + </prop> + </node> <node oor:name=".uno:SearchFormattedDisplayString" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Search Formatted Display String</value> diff --git a/sc/uiconfig/scalc/toolbar/findbar.xml b/sc/uiconfig/scalc/toolbar/findbar.xml index 41660109687a..c7ec77dcf0af 100644 --- a/sc/uiconfig/scalc/toolbar/findbar.xml +++ b/sc/uiconfig/scalc/toolbar/findbar.xml @@ -25,6 +25,7 @@ <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:SearchFormattedDisplayString"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> <toolbar:toolbarseparator/> diff --git a/sd/uiconfig/sdraw/toolbar/findbar.xml b/sd/uiconfig/sdraw/toolbar/findbar.xml index 7c71a1ac2756..95f31f687a78 100644 --- a/sd/uiconfig/sdraw/toolbar/findbar.xml +++ b/sd/uiconfig/sdraw/toolbar/findbar.xml @@ -24,6 +24,7 @@ <toolbar:toolbaritem xlink:href=".uno:DownSearch"/> <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> <toolbar:toolbarseparator/> diff --git a/sd/uiconfig/simpress/toolbar/findbar.xml b/sd/uiconfig/simpress/toolbar/findbar.xml index 7c71a1ac2756..95f31f687a78 100644 --- a/sd/uiconfig/simpress/toolbar/findbar.xml +++ b/sd/uiconfig/simpress/toolbar/findbar.xml @@ -24,6 +24,7 @@ <toolbar:toolbaritem xlink:href=".uno:DownSearch"/> <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> <toolbar:toolbarseparator/> diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx index b385b976d4b8..db1a1698adc0 100644 --- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx +++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx @@ -72,6 +72,7 @@ constexpr OUString COMMAND_DOWNSEARCH = u".uno:DownSearch"_ustr; constexpr OUString COMMAND_UPSEARCH = u".uno:UpSearch"_ustr; constexpr OUStringLiteral COMMAND_FINDALL = u".uno:FindAll"; constexpr OUString COMMAND_MATCHCASE = u".uno:MatchCase"_ustr; +constexpr OUString COMMAND_MATCHDIACRITICS = u".uno:MatchDiacritics"_ustr; constexpr OUString COMMAND_SEARCHFORMATTED = u".uno:SearchFormattedDisplayString"_ustr; class CheckButtonItemWindow final : public InterimItemWindow @@ -93,6 +94,12 @@ public: return m_xWidget->get_active(); } + void set_active(bool bActive) + { + if (m_xWidget) + m_xWidget->set_active(bActive); + } + virtual void dispose() override { m_xWidget.reset(); @@ -128,6 +135,7 @@ void impl_executeSearch( const css::uno::Reference< css::uno::XComponentContext OUString sFindText; bool aMatchCase = false; + bool aMatchDiacritics = false; bool bSearchFormatted = false; if ( pToolBox ) { @@ -150,6 +158,11 @@ void impl_executeSearch( const css::uno::Reference< css::uno::XComponentContext CheckButtonItemWindow* pItemWin = static_cast<CheckButtonItemWindow*>(pToolBox->GetItemWindow(id)); if (pItemWin) aMatchCase = pItemWin->get_active(); + } else if ( sItemCommand == COMMAND_MATCHDIACRITICS ) + { + CheckButtonItemWindow* pItemWin = static_cast<CheckButtonItemWindow*>(pToolBox->GetItemWindow(id)); + if (pItemWin) + aMatchDiacritics = pItemWin->get_active(); } else if ( sItemCommand == COMMAND_SEARCHFORMATTED ) { CheckButtonItemWindow* pItemWin = static_cast<CheckButtonItemWindow*>(pToolBox->GetItemWindow(id)); @@ -162,9 +175,10 @@ void impl_executeSearch( const css::uno::Reference< css::uno::XComponentContext TransliterationFlags nFlags = TransliterationFlags::NONE; if (!aMatchCase) nFlags |= TransliterationFlags::IGNORE_CASE; + if (!aMatchDiacritics) + nFlags |= TransliterationFlags::IGNORE_DIACRITICS_CTL; if (SvtCTLOptions::IsCTLFontEnabled()) - nFlags |= TransliterationFlags::IGNORE_DIACRITICS_CTL - | TransliterationFlags::IGNORE_KASHIDA_CTL; + nFlags |= TransliterationFlags::IGNORE_KASHIDA_CTL; auto aArgs( comphelper::InitPropertySequence( { { "SearchItem.SearchString", css::uno::Any( sFindText ) }, @@ -825,6 +839,8 @@ public: // XStatusListener virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) override; + virtual void SAL_CALL click() override; + private: VclPtr<CheckButtonItemWindow> m_xMatchCaseControl; }; @@ -893,6 +909,117 @@ void SAL_CALL MatchCaseToolboxController::statusChanged( const css::frame::Featu { } +void SAL_CALL MatchCaseToolboxController::click() +{ + if (m_xMatchCaseControl) + { + bool bCurrent = m_xMatchCaseControl->get_active(); + m_xMatchCaseControl->set_active(!bCurrent); + } +} + +typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> MatchDiacriticsToolboxController_Base; +class MatchDiacriticsToolboxController : public MatchDiacriticsToolboxController_Base +{ +public: + MatchDiacriticsToolboxController( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() override; + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; + + // XComponent + virtual void SAL_CALL dispose() override; + + // XInitialization + virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override; + + // XToolbarController + virtual css::uno::Reference< css::awt::XWindow > SAL_CALL createItemWindow( const css::uno::Reference< css::awt::XWindow >& Parent ) override; + + // XStatusListener + virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& rEvent ) override; + + virtual void SAL_CALL click() override; + +private: + VclPtr<CheckButtonItemWindow> m_xMatchDiacriticsControl; +}; + +MatchDiacriticsToolboxController::MatchDiacriticsToolboxController( const css::uno::Reference< css::uno::XComponentContext >& rxContext ) + : MatchDiacriticsToolboxController_Base( rxContext, + css::uno::Reference< css::frame::XFrame >(), + COMMAND_MATCHDIACRITICS ) + , m_xMatchDiacriticsControl(nullptr) +{ +} + +// XServiceInfo +OUString SAL_CALL MatchDiacriticsToolboxController::getImplementationName() +{ + return u"com.sun.star.svx.MatchDiacriticsToolboxController"_ustr; +} + +sal_Bool SAL_CALL MatchDiacriticsToolboxController::supportsService( const OUString& ServiceName ) +{ + return cppu::supportsService(this, ServiceName); +} + +css::uno::Sequence< OUString > SAL_CALL MatchDiacriticsToolboxController::getSupportedServiceNames() +{ + return { u"com.sun.star.frame.ToolbarController"_ustr }; +} + +// XComponent +void SAL_CALL MatchDiacriticsToolboxController::dispose() +{ + SolarMutexGuard aSolarMutexGuard; + + SearchToolbarControllersManager::createControllersManager().freeController(m_xFrame, m_aCommandURL); + + svt::ToolboxController::dispose(); + + m_xMatchDiacriticsControl.disposeAndClear(); +} + +// XInitialization +void SAL_CALL MatchDiacriticsToolboxController::initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) +{ + svt::ToolboxController::initialize(aArguments); + + SearchToolbarControllersManager::createControllersManager().registryController(m_xFrame, css::uno::Reference< css::frame::XStatusListener >(this), m_aCommandURL); +} + +css::uno::Reference< css::awt::XWindow > SAL_CALL MatchDiacriticsToolboxController::createItemWindow( const css::uno::Reference< css::awt::XWindow >& xParent ) +{ + css::uno::Reference< css::awt::XWindow > xItemWindow; + + VclPtr<vcl::Window> pParent = VCLUnoHelper::GetWindow( xParent ); + if ( pParent ) + { + ToolBox* pToolbar = static_cast<ToolBox*>(pParent.get()); + m_xMatchDiacriticsControl = VclPtr<CheckButtonItemWindow>::Create(pToolbar, SvxResId(RID_SVXSTR_FINDBAR_MATCHDIACRITICS)); + } + xItemWindow = VCLUnoHelper::GetInterface(m_xMatchDiacriticsControl); + + return xItemWindow; +} + +// XStatusListener +void SAL_CALL MatchDiacriticsToolboxController::statusChanged( const css::frame::FeatureStateEvent& ) +{ +} + +void SAL_CALL MatchDiacriticsToolboxController::click() +{ + if (m_xMatchDiacriticsControl) + { + bool bCurrent = m_xMatchDiacriticsControl->get_active(); + m_xMatchDiacriticsControl->set_active(!bCurrent); + } +} + typedef cppu::ImplInheritanceHelper< ::svt::ToolboxController, css::lang::XServiceInfo> SearchFormattedToolboxController_Base; class SearchFormattedToolboxController : public SearchFormattedToolboxController_Base { @@ -1482,6 +1609,14 @@ com_sun_star_svx_MatchCaseToolboxController_get_implementation( return cppu::acquire(new MatchCaseToolboxController(context)); } +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * +com_sun_star_svx_MatchDiacriticsToolboxController_get_implementation( + css::uno::XComponentContext *context, + css::uno::Sequence<css::uno::Any> const &) +{ + return cppu::acquire(new MatchDiacriticsToolboxController(context)); +} + extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_svx_SearchFormattedToolboxController_get_implementation( css::uno::XComponentContext *context, diff --git a/svx/util/svx.component b/svx/util/svx.component index c655da210995..54d1c0b220f7 100644 --- a/svx/util/svx.component +++ b/svx/util/svx.component @@ -66,6 +66,10 @@ constructor="com_sun_star_svx_MatchCaseToolboxController_get_implementation"> <service name="com.sun.star.frame.ToolbarController"/> </implementation> + <implementation name="com.sun.star.svx.MatchDiacriticsToolboxController" + constructor="com_sun_star_svx_MatchDiacriticsToolboxController_get_implementation"> + <service name="com.sun.star.frame.ToolbarController"/> + </implementation> <implementation name="com.sun.star.svx.SearchFormattedToolboxController" constructor="com_sun_star_svx_SearchFormattedToolboxController_get_implementation"> <service name="com.sun.star.frame.ToolbarController"/> diff --git a/sw/qa/uitest/findBar/findbar.py b/sw/qa/uitest/findBar/findbar.py index 577885411c07..f22b99f1964c 100644 --- a/sw/qa/uitest/findBar/findbar.py +++ b/sw/qa/uitest/findBar/findbar.py @@ -28,6 +28,10 @@ class FindBar(UITestCase): xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "LibreOffice Calc"})) xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "The Document Foundation"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "LibréOffice Math"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "libreOffice Calc"})) # open the Find Bar xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "CTRL+f"})) @@ -38,14 +42,14 @@ class FindBar(UITestCase): # Select the Find Bar xfind_bar = xWriterDoc.getChild("FindBar") - self.assertEqual(get_state_as_dict(xfind_bar)["ItemCount"], "14") + self.assertEqual(get_state_as_dict(xfind_bar)["ItemCount"], "15") # Press on FindAll in the Find Bar xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "4"})) self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemID"], "5") # 5 is FindAll id for Pos 4 self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemText"], "Find All") self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemCommand"], ".uno:FindAll") - self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "LibreLibreLibre") + self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "LibreLibreLibrélibreLibre") # Press on Find Next in the Find Bar xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "3"})) # 3 is Find Next pos @@ -59,10 +63,31 @@ class FindBar(UITestCase): self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemID"], "3") self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemText"], "Find Previous") self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemCommand"], ".uno:UpSearch") - self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "Libre") + self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "libre") + + # Press on Match Case in the Find Bar + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "5"})) # 5 is Match Case pos + self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemID"], "6") + self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemText"], "Match Case") + self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemCommand"], ".uno:MatchCase") + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "4"})) # Press on Find All to see the effect of Match Case + self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "LibreLibreLibréLibre") + + # Press on Match Diacritics in the Find Bar + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "6"})) # 6 is Match Diacritics pos + self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemID"], "7") + self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemText"], "Match Diacritics") + self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemCommand"], ".uno:MatchDiacritics") + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "4"})) # Press on Find All to see the effect of Match Diacritics (with Match Case still active) + self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "LibreLibreLibre") + + # Additional test with word containing diacritic and uppercase, match case and diacritics filters on + xfind.executeAction ("CLEAR", tuple()) + xfind.executeAction("TYPE", mkPropertyValues({"TEXT": "Libré"})) + xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "4"})) + self.assertEqual(get_state_as_dict(xWriterEdit)["SelectedText"], "Libré") # Close the Find Bar xfind_bar.executeAction("CLICK", mkPropertyValues({"POS": "0"})) # 0 is pos for close - # vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sw/uiconfig/sglobal/toolbar/findbar.xml b/sw/uiconfig/sglobal/toolbar/findbar.xml index 15a29ac85162..31a9f96f9718 100644 --- a/sw/uiconfig/sglobal/toolbar/findbar.xml +++ b/sw/uiconfig/sglobal/toolbar/findbar.xml @@ -24,6 +24,7 @@ <toolbar:toolbaritem xlink:href=".uno:DownSearch"/> <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> <toolbar:toolbarseparator/> diff --git a/sw/uiconfig/sweb/toolbar/findbar.xml b/sw/uiconfig/sweb/toolbar/findbar.xml index 7c71a1ac2756..95f31f687a78 100644 --- a/sw/uiconfig/sweb/toolbar/findbar.xml +++ b/sw/uiconfig/sweb/toolbar/findbar.xml @@ -24,6 +24,7 @@ <toolbar:toolbaritem xlink:href=".uno:DownSearch"/> <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> <toolbar:toolbarseparator/> diff --git a/sw/uiconfig/swriter/toolbar/findbar.xml b/sw/uiconfig/swriter/toolbar/findbar.xml index e77af94f2954..7124dc2e6696 100644 --- a/sw/uiconfig/swriter/toolbar/findbar.xml +++ b/sw/uiconfig/swriter/toolbar/findbar.xml @@ -24,6 +24,7 @@ <toolbar:toolbaritem xlink:href=".uno:DownSearch"/> <toolbar:toolbaritem xlink:href=".uno:FindAll"/> <toolbar:toolbaritem xlink:href=".uno:MatchCase"/> + <toolbar:toolbaritem xlink:href=".uno:MatchDiacritics"/> <toolbar:toolbarseparator/> <toolbar:toolbaritem xlink:href=".uno:SearchDialog"/> <toolbar:toolbarseparator/>