From 9f6f54567b9179d7c9918f36bb87382072e2660b Mon Sep 17 00:00:00 2001 Message-Id: <9f6f54567b9179d7c9918f36bb87382072e2660b.1412882640.git.erack@redhat.com> From: Eike Rathke Date: Thu, 9 Oct 2014 21:10:35 +0200 Subject: [PATCH] InsertCurrentTime: in input mode inherit matching format if set MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------erAck-patch-parts" This is a multi-part message in MIME format. --------------erAck-patch-parts Content-Type: text/plain; charset=UTF-8; format=fixed Content-Transfer-Encoding: 8bit In case a date or time cell format was set, inherit that format for Ctrl+; or Ctrl+: date/time insertion while editing the cell. Change-Id: If13e680fc74ab36611f8c11d992dba4b9c91ddb4 (cherry picked from commit 980fd719648fb5b7cbe93ba23c1ee2f180ffcee8) --- sc/source/ui/view/viewfun6.cxx | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) --------------erAck-patch-parts Content-Type: text/x-patch; name="0001-InsertCurrentTime-in-input-mode-inherit-matching-for.patch" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="0001-InsertCurrentTime-in-input-mode-inherit-matching-for.patch" diff --git a/sc/source/ui/view/viewfun6.cxx b/sc/source/ui/view/viewfun6.cxx index a55dec3..3b25d32 100644 --- a/sc/source/ui/view/viewfun6.cxx +++ b/sc/source/ui/view/viewfun6.cxx @@ -268,22 +268,29 @@ void ScViewFunc::InsertCurrentTime(short nReqFmt, const OUString& rUndoStr) const sal_uInt32 nCurNumFormat = rDoc.GetNumberFormat(aCurPos); SvNumberFormatter* pFormatter = rDoc.GetFormatTable(); const SvNumberformat* pCurNumFormatEntry = pFormatter->GetEntry(nCurNumFormat); + const short nCurNumFormatType = (pCurNumFormatEntry ? + (pCurNumFormatEntry->GetType() & ~NUMBERFORMAT_DEFINED) : NUMBERFORMAT_UNDEFINED); if (bInputMode) { double fVal = 0.0; + sal_uInt32 nFormat = 0; switch (nReqFmt) { case NUMBERFORMAT_DATE: { Date aActDate( Date::SYSTEM ); fVal = aActDate - *pFormatter->GetNullDate(); + if (nCurNumFormatType == NUMBERFORMAT_DATE) + nFormat = nCurNumFormat; } break; case NUMBERFORMAT_TIME: { Time aActTime( Time::SYSTEM ); fVal = aActTime.GetTimeInDays(); + if (nCurNumFormatType == NUMBERFORMAT_TIME) + nFormat = nCurNumFormat; } break; default: @@ -294,15 +301,20 @@ void ScViewFunc::InsertCurrentTime(short nReqFmt, const OUString& rUndoStr) { DateTime aActDateTime( DateTime::SYSTEM ); fVal = aActDateTime - DateTime( *pFormatter->GetNullDate()); + if (nCurNumFormatType == NUMBERFORMAT_DATETIME) + nFormat = nCurNumFormat; } break; } - LanguageType nLang = (pCurNumFormatEntry ? pCurNumFormatEntry->GetLanguage() : ScGlobal::eLnge); - sal_uInt32 nFormat = pFormatter->GetStandardFormat( nReqFmt, nLang); - // This would return a more precise format with seconds and 100th - // seconds for a time request. - //nFormat = pFormatter->GetStandardFormat( fVal, nFormat, nReqFmt, nLang); + if (!nFormat) + { + const LanguageType nLang = (pCurNumFormatEntry ? pCurNumFormatEntry->GetLanguage() : ScGlobal::eLnge); + nFormat = pFormatter->GetStandardFormat( nReqFmt, nLang); + // This would return a more precise format with seconds and 100th + // seconds for a time request. + //nFormat = pFormatter->GetStandardFormat( fVal, nFormat, nReqFmt, nLang); + } OUString aString; Color* pColor; pFormatter->GetOutputString( fVal, nFormat, aString, &pColor); @@ -318,8 +330,6 @@ void ScViewFunc::InsertCurrentTime(short nReqFmt, const OUString& rUndoStr) } else { - const short nCurNumFormatType = (pCurNumFormatEntry ? - (pCurNumFormatEntry->GetType() & ~NUMBERFORMAT_DEFINED) : NUMBERFORMAT_UNDEFINED); bool bForceReqFmt = false; const double fCell = rDoc.GetValue( aCurPos); // Combine requested date/time stamp with existing cell time/date, if any. --------------erAck-patch-parts--