aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--qt/ScintillaEditBase/ScintillaQt.cpp29
-rw-r--r--qt/ScintillaEditBase/ScintillaQt.h2
2 files changed, 23 insertions, 8 deletions
diff --git a/qt/ScintillaEditBase/ScintillaQt.cpp b/qt/ScintillaEditBase/ScintillaQt.cpp
index 98a8000fa..80e1f9949 100644
--- a/qt/ScintillaEditBase/ScintillaQt.cpp
+++ b/qt/ScintillaEditBase/ScintillaQt.cpp
@@ -52,10 +52,8 @@ ScintillaQt::ScintillaQt(QAbstractScrollArea *parent)
ScintillaQt::~ScintillaQt()
{
- for (TickReason tr = tickCaret; tr <= tickDwell; tr = static_cast<TickReason>(tr + 1)) {
- FineTickerCancel(tr);
- }
- SetIdle(false);
+ CancelTimers();
+ ChangeIdle(false);
}
void ScintillaQt::execCommand(QAction *action)
@@ -145,9 +143,7 @@ void ScintillaQt::Init()
void ScintillaQt::Finalise()
{
- for (TickReason tr = tickCaret; tr <= tickDwell; tr = static_cast<TickReason>(tr + 1)) {
- FineTickerCancel(tr);
- }
+ CancelTimers();
ScintillaBase::Finalise();
}
@@ -417,6 +413,18 @@ void ScintillaQt::FineTickerStart(TickReason reason, int millis, int /* toleranc
timers[reason] = startTimer(millis);
}
+// CancelTimers cleans up all fine-ticker timers and is non-virtual to avoid warnings when
+// called during destruction.
+void ScintillaQt::CancelTimers()
+{
+ for (TickReason tr = tickCaret; tr <= tickDwell; tr = static_cast<TickReason>(tr + 1)) {
+ if (timers[tr]) {
+ killTimer(timers[tr]);
+ timers[tr] = 0;
+ }
+ }
+}
+
void ScintillaQt::FineTickerCancel(TickReason reason)
{
if (timers[reason]) {
@@ -433,7 +441,7 @@ void ScintillaQt::onIdle()
}
}
-bool ScintillaQt::SetIdle(bool on)
+bool ScintillaQt::ChangeIdle(bool on)
{
QTimer *qIdle;
if (on) {
@@ -459,6 +467,11 @@ bool ScintillaQt::SetIdle(bool on)
return true;
}
+bool ScintillaQt::SetIdle(bool on)
+{
+ return ChangeIdle(on);
+}
+
int ScintillaQt::CharacterSetOfDocument() const
{
return vs.styles[STYLE_DEFAULT].characterSet;
diff --git a/qt/ScintillaEditBase/ScintillaQt.h b/qt/ScintillaEditBase/ScintillaQt.h
index adc12a846..ffb9af380 100644
--- a/qt/ScintillaEditBase/ScintillaQt.h
+++ b/qt/ScintillaEditBase/ScintillaQt.h
@@ -126,7 +126,9 @@ private:
int timers[tickDwell+1];
bool FineTickerRunning(TickReason reason) override;
void FineTickerStart(TickReason reason, int millis, int tolerance) override;
+ void CancelTimers();
void FineTickerCancel(TickReason reason) override;
+ bool ChangeIdle(bool on);
bool SetIdle(bool on) override;
void SetMouseCapture(bool on) override;
bool HaveMouseCapture() override;