diff options
Diffstat (limited to 'cui/source')
-rw-r--r-- | cui/source/inc/swpossizetabpage.hxx | 1 | ||||
-rw-r--r-- | cui/source/inc/treeopt.hxx | 4 | ||||
-rw-r--r-- | cui/source/options/optlanguagetool.cxx | 35 | ||||
-rw-r--r-- | cui/source/options/treeopt.cxx | 22 | ||||
-rw-r--r-- | cui/source/tabpages/swpossizetabpage.cxx | 27 |
5 files changed, 49 insertions, 40 deletions
diff --git a/cui/source/inc/swpossizetabpage.hxx b/cui/source/inc/swpossizetabpage.hxx index eb73196986..ede7fd4231 100644 --- a/cui/source/inc/swpossizetabpage.hxx +++ b/cui/source/inc/swpossizetabpage.hxx @@ -52,6 +52,7 @@ class SvxSwPosSizeTabPage : public SfxTabPage bool m_bPositioningDisabled; bool m_bIsMultiSelection; bool m_bIsInRightToLeft; + bool m_bDoNotMirrorRtlDrawObjs = false; TriState m_nProtectSizeState; SwFrameExample m_aExampleWN; diff --git a/cui/source/inc/treeopt.hxx b/cui/source/inc/treeopt.hxx index 307c70f9ed..1522ded3d7 100644 --- a/cui/source/inc/treeopt.hxx +++ b/cui/source/inc/treeopt.hxx @@ -229,8 +229,8 @@ public: void ActivatePage( const OUString& rPageURL ); void ApplyItemSets(); - // default value initializes all dialogs - void initializeFirstNDialog(sal_Int16 nNumberOfNode = -1); + // initialize all dialogs in "Tools > Options" + void initializeAllDialogs(); // helper functions to call the Languages and Locales TabPage from the SpellDialog static void ApplyLanguageOptions(const SfxItemSet& rSet); diff --git a/cui/source/options/optlanguagetool.cxx b/cui/source/options/optlanguagetool.cxx index 8c56a40e72..3979b42c05 100644 --- a/cui/source/options/optlanguagetool.cxx +++ b/cui/source/options/optlanguagetool.cxx @@ -25,6 +25,7 @@ using LanguageToolCfg = officecfg::Office::Linguistic::GrammarChecking::LanguageTool; constexpr OUString LANGUAGETOOL_DEFAULT_URL = u"https://api.languagetool.org/v2"_ustr; +constexpr OUString LANGUAGETOOLPLUS_DEFAULT_URL = u"https://api.languagetoolplus.com/v2"_ustr; OptLanguageToolTabPage::OptLanguageToolTabPage(weld::Container* pPage, weld::DialogController* pController, @@ -81,20 +82,21 @@ IMPL_LINK_NOARG(OptLanguageToolTabPage, CheckHdl, weld::Toggleable&, void) void OptLanguageToolTabPage::Reset(const SfxItemSet*) { // tdf#150494 If no URL has been set, use the default URL - OUString aBaseURL = LanguageToolCfg::BaseURL::get().value_or(""); - if (aBaseURL.isEmpty()) - m_xBaseURLED->set_text(LANGUAGETOOL_DEFAULT_URL); - else - m_xBaseURLED->set_text(aBaseURL); + OUString aUsername = LanguageToolCfg::Username::get().value_or(""); + OUString aApiKey = LanguageToolCfg::ApiKey::get().value_or(""); + OUString aBaseURL = LanguageToolCfg::BaseURL::get().value_or( + (aUsername.isEmpty() && aApiKey.isEmpty()) ? LANGUAGETOOL_DEFAULT_URL + : LANGUAGETOOLPLUS_DEFAULT_URL); + m_xBaseURLED->set_text(aBaseURL); m_xBaseURLED->set_sensitive(!LanguageToolCfg::BaseURL::isReadOnly()); m_xBaseURLImg->set_visible(LanguageToolCfg::BaseURL::isReadOnly()); - m_xUsernameED->set_text(LanguageToolCfg::Username::get().value_or("")); + m_xUsernameED->set_text(aUsername); m_xUsernameED->set_sensitive(!LanguageToolCfg::Username::isReadOnly()); m_xUsernameImg->set_visible(LanguageToolCfg::Username::isReadOnly()); - m_xApiKeyED->set_text(LanguageToolCfg::ApiKey::get().value_or("")); + m_xApiKeyED->set_text(aApiKey); m_xApiKeyED->set_sensitive(!LanguageToolCfg::ApiKey::isReadOnly()); m_xApiKeyImg->set_visible(LanguageToolCfg::ApiKey::isReadOnly()); @@ -139,14 +141,21 @@ bool OptLanguageToolTabPage::FillItemSet(SfxItemSet*) auto batch(comphelper::ConfigurationChanges::create()); // tdf#150494 If no URL has been set, then save the default URL + // tdf#159395 If Username and ApiKey are set, then save the default URL for paid service OUString aBaseURL = m_xBaseURLED->get_text(); - if (aBaseURL.isEmpty()) - LanguageToolCfg::BaseURL::set(LANGUAGETOOL_DEFAULT_URL, batch); - else - LanguageToolCfg::BaseURL::set(aBaseURL, batch); + OUString aUsername = m_xUsernameED->get_text(); + OUString aApiKey = m_xApiKeyED->get_text(); - LanguageToolCfg::Username::set(m_xUsernameED->get_text(), batch); - LanguageToolCfg::ApiKey::set(m_xApiKeyED->get_text(), batch); + if (aBaseURL.isEmpty() + || (aUsername.isEmpty() && aApiKey.isEmpty() && aBaseURL == LANGUAGETOOLPLUS_DEFAULT_URL)) + aBaseURL = LANGUAGETOOL_DEFAULT_URL; + + if (!aUsername.isEmpty() && !aApiKey.isEmpty() && aBaseURL == LANGUAGETOOL_DEFAULT_URL) + aBaseURL = LANGUAGETOOLPLUS_DEFAULT_URL; + + LanguageToolCfg::BaseURL::set(aBaseURL, batch); + LanguageToolCfg::Username::set(aUsername, batch); + LanguageToolCfg::ApiKey::set(aApiKey, batch); LanguageToolCfg::RestProtocol::set(m_xRestProtocol->get_text(), batch); LanguageToolCfg::SSLCertVerify::set(!m_xSSLDisableVerificationBox->get_active(), batch); batch->commit(); diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx index d8fe793e10..029c5f773f 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -790,7 +790,7 @@ IMPL_LINK_NOARG(OfaTreeOptionsDialog, SearchUpdateHdl, weld::Entry&, void) IMPL_LINK_NOARG(OfaTreeOptionsDialog, ImplUpdateDataHdl, Timer*, void) { - // initializeFirstNDialog() can take a long time, show wait cursor and disable input + // initializeAllDialogs() can take a long time, show wait cursor and disable input std::unique_ptr<weld::WaitObject> xWait(m_pParent ? new weld::WaitObject(m_pParent) : nullptr); // Pause redraw @@ -801,7 +801,7 @@ IMPL_LINK_NOARG(OfaTreeOptionsDialog, ImplUpdateDataHdl, Timer*, void) m_xSearchEdit->freeze(); xTreeLB->hide(); - initializeFirstNDialog(); + initializeAllDialogs(); m_xSearchEdit->thaw(); xTreeLB->show(); @@ -847,10 +847,9 @@ void OfaTreeOptionsDialog::selectFirstEntry() } } -void OfaTreeOptionsDialog::initializeFirstNDialog(sal_Int16 nNumberOfNode) +void OfaTreeOptionsDialog::initializeAllDialogs() { std::unique_ptr<weld::TreeIter> xEntry; - sal_Int16 nCount = 0; std::unique_ptr<weld::TreeIter> xTemp = xTreeLB->make_iterator(); bool bTemp = xTreeLB->get_iter_first(*xTemp); @@ -877,12 +876,6 @@ void OfaTreeOptionsDialog::initializeFirstNDialog(sal_Int16 nNumberOfNode) } } - /* if nNumberOfNode is -1 (which is the default value if no parameter provided), - this function will initialize all dialogs since nCount always greater than -1 */ - if (nCount == nNumberOfNode) - break; - - ++nCount; bTemp = xTreeLB->iter_next(*xTemp); } } @@ -1187,15 +1180,6 @@ void OfaTreeOptionsDialog::ActivateLastSelection() xTreeLB->select(*xEntry); m_xSearchEdit->grab_focus(); SelectHdl_Impl(); - - // initializeFirstNDialog() can take a long time, show wait cursor - std::unique_ptr<weld::WaitObject> xWait(m_pParent ? new weld::WaitObject(m_pParent) : nullptr); - - /* initialize first 25 dialogs which are almost half of the dialogs - in a row while Options dialog opens. then clear&reselect to avoid UI test failures. */ - initializeFirstNDialog(25); - clearOptionsDialog(); - SelectHdl_Impl(); } void OfaTreeOptionsDialog::InitItemSets(OptionsGroupInfo& rGroupInfo) diff --git a/cui/source/tabpages/swpossizetabpage.cxx b/cui/source/tabpages/swpossizetabpage.cxx index 060f7b44ce..8de586a74d 100644 --- a/cui/source/tabpages/swpossizetabpage.cxx +++ b/cui/source/tabpages/swpossizetabpage.cxx @@ -37,6 +37,7 @@ #include <svx/svxids.hrc> #include <svtools/unitconv.hxx> #include <osl/diagnose.h> +#include <svl/grabbagitem.hxx> using namespace ::com::sun::star::text; @@ -431,14 +432,16 @@ static std::size_t lcl_GetFrmMapCount(const FrmMap* pMap) } static SvxSwFramePosString::StringId lcl_ChangeResIdToVerticalOrRTL( - SvxSwFramePosString::StringId eStringId, bool bVertical, bool bRTL) + SvxSwFramePosString::StringId eStringId, bool bVertical, bool bRTL, bool bDontMirrorRTL) { //special handling of STR_FROMLEFT if(SvxSwFramePosString::FROMLEFT == eStringId) { + bool bMirrorRtlDrawObjs = !bDontMirrorRTL; + bool bSwapLR = bRTL && bMirrorRtlDrawObjs; eStringId = bVertical ? bRTL ? SvxSwFramePosString::FROMBOTTOM : SvxSwFramePosString::FROMTOP : - bRTL ? SvxSwFramePosString::FROMRIGHT : SvxSwFramePosString::FROMLEFT; + bSwapLR ? SvxSwFramePosString::FROMRIGHT : SvxSwFramePosString::FROMLEFT; return eStringId; } if(bVertical) @@ -728,7 +731,8 @@ WhichRangesContainer SvxSwPosSizeTabPage::GetRanges() SID_ATTR_TRANSFORM_AUTOWIDTH, SID_ATTR_TRANSFORM_VERT_ORIENT, SID_HTML_MODE, SID_HTML_MODE, SID_SW_FOLLOW_TEXT_FLOW, SID_SW_FOLLOW_TEXT_FLOW, - SID_ATTR_TRANSFORM_HORI_POSITION, SID_ATTR_TRANSFORM_VERT_POSITION + SID_ATTR_TRANSFORM_HORI_POSITION, SID_ATTR_TRANSFORM_VERT_POSITION, + SID_ATTR_CHAR_GRABBAG, SID_ATTR_CHAR_GRABBAG >); return ranges; } @@ -967,6 +971,17 @@ void SvxSwPosSizeTabPage::Reset( const SfxItemSet* rSet) } m_xFollowCB->save_state(); + const SfxGrabBagItem* pGrabBag = GetItem(*rSet, SID_ATTR_CHAR_GRABBAG); + if (pGrabBag) + { + const std::map<OUString, css::uno::Any>& rMap = pGrabBag->GetGrabBag(); + auto it = rMap.find("DoNotMirrorRtlDrawObjs"); + if (it != rMap.end()) + { + it->second >>= m_bDoNotMirrorRtlDrawObjs; + } + } + if(m_bHtmlMode) { m_xHoriMirrorCB->hide(); @@ -1651,7 +1666,7 @@ void SvxSwPosSizeTabPage::FillRelLB(FrmMap const *pMap, sal_uInt16 nMapPos, sal_ { SvxSwFramePosString::StringId sStrId1 = aAsCharRelationMap[nRelPos].eStrId; - sStrId1 = lcl_ChangeResIdToVerticalOrRTL(sStrId1, m_bIsVerticalFrame, m_bIsInRightToLeft); + sStrId1 = lcl_ChangeResIdToVerticalOrRTL(sStrId1, m_bIsVerticalFrame, m_bIsInRightToLeft, m_bDoNotMirrorRtlDrawObjs); OUString sEntry = SvxSwFramePosString::GetString(sStrId1); rLB.append(weld::toId(&aAsCharRelationMap[nRelPos]), sEntry); if (pMap[_nMapPos].nAlign == nAlign) @@ -1706,7 +1721,7 @@ void SvxSwPosSizeTabPage::FillRelLB(FrmMap const *pMap, sal_uInt16 nMapPos, sal_ if (aRelationMap[nRelPos].nLBRelation == static_cast<LB>(nBit)) { SvxSwFramePosString::StringId sStrId1 = m_xHoriMirrorCB->get_active() ? aRelationMap[nRelPos].eMirrorStrId : aRelationMap[nRelPos].eStrId; - sStrId1 = lcl_ChangeResIdToVerticalOrRTL(sStrId1, m_bIsVerticalFrame, m_bIsInRightToLeft); + sStrId1 = lcl_ChangeResIdToVerticalOrRTL(sStrId1, m_bIsVerticalFrame, m_bIsInRightToLeft, m_bDoNotMirrorRtlDrawObjs); OUString sEntry = SvxSwFramePosString::GetString(sStrId1); rLB.append(weld::toId(&aRelationMap[nRelPos]), sEntry); if (sSelEntry.isEmpty() && aRelationMap[nRelPos].nRelation == nRel) @@ -1783,7 +1798,7 @@ sal_uInt16 SvxSwPosSizeTabPage::FillPosLB(FrmMap const *_pMap, for (std::size_t i = 0; _pMap && i < nCount; ++i) { SvxSwFramePosString::StringId eStrId = m_xHoriMirrorCB->get_active() ? _pMap[i].eMirrorStrId : _pMap[i].eStrId; - eStrId = lcl_ChangeResIdToVerticalOrRTL(eStrId, m_bIsVerticalFrame, m_bIsInRightToLeft); + eStrId = lcl_ChangeResIdToVerticalOrRTL(eStrId, m_bIsVerticalFrame, m_bIsInRightToLeft, m_bDoNotMirrorRtlDrawObjs); OUString sEntry(SvxSwFramePosString::GetString(eStrId)); if (_rLB.find_text(sEntry) == -1) { |