aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2019-09-28 11:22:58 +1000
committerNeil <nyamatongwe@gmail.com>2019-09-28 11:22:58 +1000
commit9e62956c361fe1a7cb1efab31162ac647fa962d2 (patch)
treebbccf874ef07219132d812dc12bf6b6a053f7c57
parentdba67afa3d383e1a7447d8484968e4e6b0252f1e (diff)
downloadscintilla-mirror-9e62956c361fe1a7cb1efab31162ac647fa962d2.tar.gz
Avoid calling virtual methods during destruction to stop warnings.
This code worked correctly before this change.
-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;