diff options
author | Justin Luth <justin.luth@collabora.com> | 2024-02-27 09:57:35 -0500 |
---|---|---|
committer | Aron Budea <aron.budea@collabora.com> | 2024-03-14 13:17:06 +1030 |
commit | fccf8882a59fbfc68b5d567b968841541713230c (patch) | |
tree | 91afaae0ee8616fbaa5873ce6b4feb0bdcbe5012 | |
parent | Bump version to 7.2.7.2.M15 (diff) | |
download | core-fccf8882a59fbfc68b5d567b968841541713230c.tar.gz core-fccf8882a59fbfc68b5d567b968841541713230c.zip |
tdf#159927 sd headerfooterdlg: detect existing date/time language
Sometimes it was hard to change an existing foreign language
to your own language for Impress' header/footer fields.
The function was only checking the first master slide for the
date/time language. If it didn't have one, then the default locale
was selected.
However, although all pages share the same date/time language,
it is not necessary for all (or even the first) master slide
to have a date/time field. So check through all the master slides
until one with a date/time is found.
Obviously if none have one defined things still work OK,
because that is effectively how it was working beforehand.
I don't have much hope for a successful unit test.
I'll try to develop it as a follow-up to this patch.
Change-Id: Ida44957013978720ad12fadc9b4ebc88bc10ea40
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164045
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
(cherry picked from commit 62323124f54885c6de4ac4fa38052d380309a5a1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164506
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 703cc8d674d81573a1e6191a12cec4012cca22f7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164671
(cherry picked from commit 2dd2471290acf4d1229cca7b43719e57242cd59e)
(cherry picked from commit 6ff74883ec3e6ca6b1552968306556f8a921aa23)
(cherry picked from commit eb26913aba35522babb15eee06124d18d4a0cb4e)
-rw-r--r-- | sd/source/ui/dlg/headerfooterdlg.cxx | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/sd/source/ui/dlg/headerfooterdlg.cxx b/sd/source/ui/dlg/headerfooterdlg.cxx index 3320ed06b9e3..add1f86b25a8 100644 --- a/sd/source/ui/dlg/headerfooterdlg.cxx +++ b/sd/source/ui/dlg/headerfooterdlg.cxx @@ -151,7 +151,8 @@ private: void FillFormatList(sal_Int32 nSelectedPos); void GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet ); - void GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet, SdPage* pPage ); + // returns true if the page has a date/time field item + bool GetOrSetDateTimeLanguage(LanguageType& rLanguage, bool bSet, SdPage* pPage); public: HeaderFooterTabPage(weld::Container* pParent, SdDrawDocument* pDoc, SdPage* pActualPage, bool bHandoutMode ); @@ -535,25 +536,29 @@ void HeaderFooterTabPage::GetOrSetDateTimeLanguage( LanguageType &rLanguage, boo } else { - // get the language from the first master page - // or set it to all master pages - sal_uInt16 nPageCount = bSet ? mpDoc->GetMasterSdPageCount( PageKind::Notes ) : 1; + const sal_uInt16 nPageCount = mpDoc->GetMasterSdPageCount(PageKind::Standard); sal_uInt16 nPage; for( nPage = 0; nPage < nPageCount; nPage++ ) { - GetOrSetDateTimeLanguage( rLanguage, bSet, mpDoc->GetMasterSdPage( nPage, PageKind::Standard ) ); + SdPage* pMasterSlide = mpDoc->GetMasterSdPage(nPage, PageKind::Standard); + bool bHasDateFieldItem = GetOrSetDateTimeLanguage(rLanguage, bSet, pMasterSlide); + + // All pages must use the same language. If getting the language, only need to find one. + if (!bSet && bHasDateFieldItem) + break; } } } -void HeaderFooterTabPage::GetOrSetDateTimeLanguage( LanguageType &rLanguage, bool bSet, SdPage* pPage ) +bool HeaderFooterTabPage::GetOrSetDateTimeLanguage(LanguageType& rLanguage, bool bSet, + SdPage* pPage) { if( !pPage ) - return; + return false; SdrTextObj* pObj = static_cast<SdrTextObj*>(pPage->GetPresObj( PresObjKind::DateTime )); if( !pObj ) - return; + return false; Outliner* pOutl = mpDoc->GetInternalOutliner(); pOutl->Init( OutlinerMode::TextObject ); @@ -623,6 +628,7 @@ void HeaderFooterTabPage::GetOrSetDateTimeLanguage( LanguageType &rLanguage, boo pOutl->Clear(); pOutl->Init( nOutlMode ); + return bHasDateFieldItem; } PresLayoutPreview::PresLayoutPreview() |