summaryrefslogtreecommitdiff
path: root/sfx2/source/view/viewfrm.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-08-18 14:03:47 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-08-18 21:22:35 +0200
commit1f42157e2457e30a7f18fdf9d7bb5bddfb819f04 (patch)
tree83a16b5eed4a8eaf419f3ae68612bbe70a3c75e1 /sfx2/source/view/viewfrm.cxx
parentc1cd505c67a53a0a27589889b34641612d10946d (diff)
tdf#143353 defer tip of the day until impress template dialog is gone
wait until that dialog is dismissed before showing the tip dialog Change-Id: Id0e7e28f09c5a9727e10eda55e468adb56bfda70 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120675 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sfx2/source/view/viewfrm.cxx')
-rw-r--r--sfx2/source/view/viewfrm.cxx62
1 files changed, 42 insertions, 20 deletions
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 628b436dc81e..2881bbd4208f 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -1328,6 +1328,37 @@ css::uno::Reference<css::frame::XLayoutManager> getLayoutManager(const SfxFrame&
}
}
+bool SfxApplication::IsHeadlessOrUITest()
+{
+ if (Application::IsHeadlessModeEnabled())
+ return true;
+
+ bool bIsUITest = false; //uitest.uicheck fails when the dialog is open
+ for (sal_uInt16 i = 0, nCount = Application::GetCommandLineParamCount(); i < nCount; ++i)
+ {
+ if (Application::GetCommandLineParam(i) == "--nologo")
+ {
+ bIsUITest = true;
+ break;
+ }
+ }
+ return bIsUITest;
+}
+
+bool SfxApplication::IsTipOfTheDayDue()
+{
+ const bool bShowTipOfTheDay = officecfg::Office::Common::Misc::ShowTipOfTheDay::get();
+ if (!bShowTipOfTheDay)
+ return false;
+
+ const auto t0 = std::chrono::system_clock::now().time_since_epoch();
+
+ // show tip-of-the-day dialog ?
+ const sal_Int32 nLastTipOfTheDay = officecfg::Office::Common::Misc::LastTipOfTheDayShown::get();
+ const sal_Int32 nDay = std::chrono::duration_cast<std::chrono::hours>(t0).count()/24; // days since 1970-01-01
+ return nDay - nLastTipOfTheDay > 0; //only once per day
+}
+
void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
{
if(m_pImpl->bIsDowning)
@@ -1360,17 +1391,10 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
rBind.Invalidate( SID_RELOAD );
rBind.Invalidate( SID_EDITDOC );
- const auto t0 = std::chrono::system_clock::now().time_since_epoch();
-
- bool bIsUITest = false; //uitest.uicheck fails when the dialog is open
- for( sal_uInt16 i = 0; i < Application::GetCommandLineParamCount(); i++ )
- {
- if( Application::GetCommandLineParam(i) == "--nologo" )
- bIsUITest = true;
- }
+ bool bIsHeadlessOrUITest = SfxApplication::IsHeadlessOrUITest(); //uitest.uicheck fails when the dialog is open
//what's new infobar
- if ((utl::isProductVersionUpgraded(true)) && !Application::IsHeadlessModeEnabled() && !bIsUITest)
+ if (utl::isProductVersionUpgraded(true) && !bIsHeadlessOrUITest)
{
VclPtr<SfxInfoBarWindow> pInfoBar = AppendInfoBar("whatsnew", "", SfxResId(STR_WHATSNEW_TEXT), InfobarType::INFO);
if (pInfoBar)
@@ -1381,19 +1405,17 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
}
}
- // show tip-of-the-day dialog
- const bool bShowTipOfTheDay = officecfg::Office::Common::Misc::ShowTipOfTheDay::get();
- if (bShowTipOfTheDay && !Application::IsHeadlessModeEnabled() && !bIsUITest) {
- const sal_Int32 nLastTipOfTheDay = officecfg::Office::Common::Misc::LastTipOfTheDayShown::get();
- const sal_Int32 nDay = std::chrono::duration_cast<std::chrono::hours>(t0).count()/24; // days since 1970-01-01
- if (nDay-nLastTipOfTheDay > 0) { //only once per day
- // tdf#127946 pass in argument for dialog parent
- SfxUnoFrameItem aDocFrame(SID_FILLFRAME, GetFrame().GetFrameInterface());
- GetDispatcher()->ExecuteList(SID_TIPOFTHEDAY, SfxCallMode::SLOT, {}, { &aDocFrame });
- }
- } //bShowTipOfTheDay
+ // show tip-of-the-day dialog if it due, but not if there is the impress modal template dialog
+ // open where SdModule::ExecuteNewDocument will launch it instead when that dialog is dismissed
+ if (SfxApplication::IsTipOfTheDayDue() && !bIsHeadlessOrUITest && !IsInModalMode())
+ {
+ // tdf#127946 pass in argument for dialog parent
+ SfxUnoFrameItem aDocFrame(SID_FILLFRAME, GetFrame().GetFrameInterface());
+ GetDispatcher()->ExecuteList(SID_TIPOFTHEDAY, SfxCallMode::SLOT, {}, { &aDocFrame });
+ }
// inform about the community involvement
+ const auto t0 = std::chrono::system_clock::now().time_since_epoch();
const sal_Int64 nLastGetInvolvedShown = officecfg::Setup::Product::LastTimeGetInvolvedShown::get();
const sal_Int64 nNow = std::chrono::duration_cast<std::chrono::seconds>(t0).count();
const sal_Int64 nPeriodSec(60 * 60 * 24 * 180); // 180 days in seconds