Hello,
Here's a try to correct some timers in scmod.cxx.
Here's what I did and why.
1) In IMPL_LINK( ScModule, SpellTimerHdl, Timer*, EMPTYARG )
I just added aSpellTimer.Stop() when there's neither input from keyboard
nor ContinueOnlineSpelling.
+ I changed the function to have 1 return only.
2) In IMPL_LINK( ScModule, IdleHandler, Timer*, EMPTYARG )
I removed all the things with bSpell since it seems that
ContinueOnlineSpelling is managed by SpellTimerHdl
I'd like to add a stop but i'd like first to understand what's the use
of all the SC_IDLE_STEP, SC_IDLE_MAX, nIdleCount...
I repeat, this patch is just a try. If I'm all wrong, sorry for the
noise and please, explain my mistakes.
Julien.
(just in case what I did is ok, license is as usual LGPLv3+ / MPL)
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index 1bc98b5..1f164e9 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -1912,11 +1912,8 @@ IMPL_LINK( ScModule, IdleHandler, Timer*, EMPTYARG )
BOOL bLinks = pDoc->IdleCheckLinks();
BOOL bWidth = pDoc->IdleCalcTextWidth();
- BOOL bSpell = pDoc->ContinueOnlineSpelling();
- if ( bSpell )
- aSpellTimer.Start(); // da ist noch was
- bMore = bLinks || bWidth || bSpell; // ueberhaupt noch was?
+ bMore = bLinks || bWidth; // ueberhaupt noch was?
// While calculating a Basic formula, a paint event may have occured,
// so check the bNeedsRepaint flags for this document's views
@@ -1956,15 +1953,27 @@ IMPL_LINK( ScModule, SpellTimerHdl, Timer*, EMPTYARG )
if ( Application::AnyInput( INPUT_KEYBOARD ) )
{
aSpellTimer.Start();
- return 0; // dann spaeter wieder...
}
-
- ScDocShell* pDocSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
- if ( pDocSh )
+ else
{
- ScDocument* pDoc = pDocSh->GetDocument();
- if ( pDoc->ContinueOnlineSpelling() )
- aSpellTimer.Start();
+
+ ScDocShell* pDocSh = PTR_CAST( ScDocShell, SfxObjectShell::Current() );
+ if ( pDocSh )
+ {
+ ScDocument* pDoc = pDocSh->GetDocument();
+ if ( pDoc->ContinueOnlineSpelling() )
+ {
+ aSpellTimer.Start();
+ }
+ else
+ {
+ aSpellTimer.Stop();
+ }
+ }
+ else
+ {
+ aSpellTimer.Stop();
+ }
}
return 0;
}
Context
- [Libreoffice] [PATCH] try to correct some timers in sc + question · Julien Nabet
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.