diff -r b6cf154fe8d0 cocoa/ScintillaCocoa.h
--- a/cocoa/ScintillaCocoa.h	Sat Jun 10 10:51:46 2017 +1000
+++ b/cocoa/ScintillaCocoa.h	Sat Jun 10 13:13:35 2017 +1000
@@ -149,7 +149,6 @@
 
 	sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
 	void TickFor(TickReason reason) override;
-	bool FineTickerAvailable() override;
 	bool FineTickerRunning(TickReason reason) override;
 	void FineTickerStart(TickReason reason, int millis, int tolerance) override;
 	void FineTickerCancel(TickReason reason) override;
diff -r b6cf154fe8d0 cocoa/ScintillaCocoa.mm
--- a/cocoa/ScintillaCocoa.mm	Sat Jun 10 10:51:46 2017 +1000
+++ b/cocoa/ScintillaCocoa.mm	Sat Jun 10 13:13:35 2017 +1000
@@ -897,15 +897,6 @@
 //--------------------------------------------------------------------------------------------------
 
 /**
- * Report that this Editor subclass has a working implementation of FineTickerStart.
- */
-bool ScintillaCocoa::FineTickerAvailable() {
-	return true;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-/**
  * Is a particular timer currently running?
  */
 bool ScintillaCocoa::FineTickerRunning(TickReason reason) {
diff -r b6cf154fe8d0 gtk/ScintillaGTK.cxx
--- a/gtk/ScintillaGTK.cxx	Sat Jun 10 10:51:46 2017 +1000
+++ b/gtk/ScintillaGTK.cxx	Sat Jun 10 13:13:35 2017 +1000
@@ -884,13 +884,6 @@
 	return 0;
 }
 
-/**
-* Report that this Editor subclass has a working implementation of FineTickerStart.
-*/
-bool ScintillaGTK::FineTickerAvailable() {
-	return true;
-}
-
 bool ScintillaGTK::FineTickerRunning(TickReason reason) {
 	return timers[reason].timer != 0;
 }
diff -r b6cf154fe8d0 gtk/ScintillaGTK.h
--- a/gtk/ScintillaGTK.h	Sat Jun 10 10:51:46 2017 +1000
+++ b/gtk/ScintillaGTK.h	Sat Jun 10 13:13:35 2017 +1000
@@ -100,7 +100,6 @@
 		TimeThunk() : reason(tickCaret), scintilla(NULL), timer(0) {}
 	};
 	TimeThunk timers[tickDwell+1];
-	bool FineTickerAvailable() override;
 	bool FineTickerRunning(TickReason reason) override;
 	void FineTickerStart(TickReason reason, int millis, int tolerance) override;
 	void FineTickerCancel(TickReason reason) override;
diff -r b6cf154fe8d0 qt/ScintillaEditBase/ScintillaQt.cpp
--- a/qt/ScintillaEditBase/ScintillaQt.cpp	Sat Jun 10 10:51:46 2017 +1000
+++ b/qt/ScintillaEditBase/ScintillaQt.cpp	Sat Jun 10 13:13:35 2017 +1000
@@ -401,14 +401,6 @@
 	emit notifyParent(scn);
 }
 
-/**
-* Report that this Editor subclass has a working implementation of FineTickerStart.
-*/
-bool ScintillaQt::FineTickerAvailable()
-{
-	return true;
-}
-
 bool ScintillaQt::FineTickerRunning(TickReason reason)
 {
 	return timers[reason] != 0;
diff -r b6cf154fe8d0 qt/ScintillaEditBase/ScintillaQt.h
--- a/qt/ScintillaEditBase/ScintillaQt.h	Sat Jun 10 10:51:46 2017 +1000
+++ b/qt/ScintillaEditBase/ScintillaQt.h	Sat Jun 10 13:13:35 2017 +1000
@@ -121,7 +121,6 @@
 	void NotifyFocus(bool focus) override;
 	void NotifyParent(SCNotification scn) override;
 	int timers[tickDwell+1];
-	bool FineTickerAvailable() override;
 	bool FineTickerRunning(TickReason reason) override;
 	void FineTickerStart(TickReason reason, int millis, int tolerance) override;
 	void FineTickerCancel(TickReason reason) override;
diff -r b6cf154fe8d0 src/Editor.cxx
--- a/src/Editor.cxx	Sat Jun 10 10:51:46 2017 +1000
+++ b/src/Editor.cxx	Sat Jun 10 13:13:35 2017 +1000
@@ -1393,28 +1393,20 @@
 	if (hasFocus) {
 		caret.active = true;
 		caret.on = true;
-		if (FineTickerAvailable()) {
-			FineTickerCancel(tickCaret);
-			if (caret.period > 0)
-				FineTickerStart(tickCaret, caret.period, caret.period/10);
-		} else {
-			SetTicking(true);
-		}
+		FineTickerCancel(tickCaret);
+		if (caret.period > 0)
+			FineTickerStart(tickCaret, caret.period, caret.period/10);
 	} else {
 		caret.active = false;
 		caret.on = false;
-		if (FineTickerAvailable()) {
-			FineTickerCancel(tickCaret);
-		}
+		FineTickerCancel(tickCaret);
 	}
 	InvalidateCaret();
 }
 
 void Editor::DropCaret() {
 	caret.active = false;
-	if (FineTickerAvailable()) {
-		FineTickerCancel(tickCaret);
-	}
+	FineTickerCancel(tickCaret);
 	InvalidateCaret();
 }
 
@@ -1422,11 +1414,9 @@
 	if (caret.period != period) {
 		caret.period = period;
 		caret.on = true;
-		if (FineTickerAvailable()) {
-			FineTickerCancel(tickCaret);
-			if ((caret.active) && (caret.period > 0))
-				FineTickerStart(tickCaret, caret.period, caret.period/10);
-		}
+		FineTickerCancel(tickCaret);
+		if ((caret.active) && (caret.period > 0))
+			FineTickerStart(tickCaret, caret.period, caret.period/10);
 		InvalidateCaret();
 	}
 }
@@ -1762,11 +1752,9 @@
 	view.PaintText(surfaceWindow, *this, rcArea, rcClient, vs);
 
 	if (horizontalScrollBarVisible && trackLineWidth && (view.lineWidthMaxSeen > scrollWidth)) {
-		if (FineTickerAvailable()) {
-			scrollWidth = view.lineWidthMaxSeen;
-			if (!FineTickerRunning(tickWiden)) {
-				FineTickerStart(tickWiden, 50, 5);
-			}
+		scrollWidth = view.lineWidthMaxSeen;
+		if (!FineTickerRunning(tickWiden)) {
+			FineTickerStart(tickWiden, 50, 5);
 		}
 	}
 
@@ -4180,13 +4168,9 @@
 	}
 	if (!(posDrag == newPos)) {
 		caret.on = true;
-		if (FineTickerAvailable()) {
-			FineTickerCancel(tickCaret);
-			if ((caret.active) && (caret.period > 0) && (newPos.Position() < 0))
-				FineTickerStart(tickCaret, caret.period, caret.period/10);
-		} else {
-			SetTicking(true);
-		}
+		FineTickerCancel(tickCaret);
+		if ((caret.active) && (caret.period > 0) && (newPos.Position() < 0))
+			FineTickerStart(tickCaret, caret.period, caret.period/10);
 		InvalidateCaret();
 		posDrag = newPos;
 		InvalidateCaret();
@@ -4410,12 +4394,7 @@
 		dwelling = false;
 		NotifyDwelling(ptMouseLast, dwelling);
 	}
-	if (FineTickerAvailable()) {
-		FineTickerCancel(tickDwell);
-		if (mouseMoved && (dwellDelay < SC_TIME_FOREVER)) {
-			//FineTickerStart(tickDwell, dwellDelay, dwellDelay/10);
-		}
-	}
+	FineTickerCancel(tickDwell);
 }
 
 void Editor::MouseLeave() {
@@ -4464,9 +4443,7 @@
 	if (((curTime - lastClickTime) < Platform::DoubleClickTime()) && Close(pt, lastClick, doubleClickCloseThreshold)) {
 		//Platform::DebugPrintf("Double click %d %d = %d\n", curTime, lastClickTime, curTime - lastClickTime);
 		SetMouseCapture(true);
-		if (FineTickerAvailable()) {
-			FineTickerStart(tickScroll, 100, 10);
-		}
+		FineTickerStart(tickScroll, 100, 10);
 		if (!ctrl || !multipleSelection || (selectionType != selChar && selectionType != selWord))
 			SetEmptySelection(newPos.Position());
 		bool doubleClick = false;
@@ -4567,9 +4544,7 @@
 
 			SetDragPosition(SelectionPosition(Sci::invalidPosition));
 			SetMouseCapture(true);
-			if (FineTickerAvailable()) {
-				FineTickerStart(tickScroll, 100, 10);
-			}
+			FineTickerStart(tickScroll, 100, 10);
 		} else {
 			if (PointIsHotspot(pt)) {
 				NotifyHotSpotClicked(newCharPos.Position(), modifiers);
@@ -4582,9 +4557,7 @@
 					inDragDrop = ddNone;
 			}
 			SetMouseCapture(true);
-			if (FineTickerAvailable()) {
-				FineTickerStart(tickScroll, 100, 10);
-			}
+			FineTickerStart(tickScroll, 100, 10);
 			if (inDragDrop != ddInitial) {
 				SetDragPosition(SelectionPosition(Sci::invalidPosition));
 				if (!shift) {
@@ -4710,9 +4683,7 @@
 	if (inDragDrop == ddInitial) {
 		if (DragThreshold(ptMouseLast, pt)) {
 			SetMouseCapture(false);
-			if (FineTickerAvailable()) {
-				FineTickerCancel(tickScroll);
-			}
+			FineTickerCancel(tickScroll);
 			SetDragPosition(movePos);
 			CopySelectionRange(&drag);
 			StartDrag();
@@ -4724,7 +4695,7 @@
 	PRectangle rcClient = GetClientRectangle();
 	Point ptOrigin = GetVisibleOriginInMain();
 	rcClient.Move(0, -ptOrigin.y);
-	if (FineTickerAvailable() && (dwellDelay < SC_TIME_FOREVER) && rcClient.Contains(pt)) {
+	if ((dwellDelay < SC_TIME_FOREVER) && rcClient.Contains(pt)) {
 		FineTickerStart(tickDwell, dwellDelay, dwellDelay/10);
 	}
 	//Platform::DebugPrintf("Move %d %d\n", pt.x, pt.y);
@@ -4857,9 +4828,7 @@
 		}
 		ptMouseLast = pt;
 		SetMouseCapture(false);
-		if (FineTickerAvailable()) {
-			FineTickerCancel(tickScroll);
-		}
+		FineTickerCancel(tickScroll);
 		NotifyIndicatorClick(false, newPos.Position(), 0);
 		if (inDragDrop == ddDragging) {
 			SelectionPosition selStart = SelectionStart();
@@ -4974,13 +4943,6 @@
 	return !idleDone;
 }
 
-void Editor::SetTicking(bool) {
-	// SetTicking is deprecated. In the past it was pure virtual and was overridden in each
-	// derived platform class but fine grained timers should now be implemented.
-	// Either way, execution should not arrive here so assert failure.
-	assert(false);
-}
-
 void Editor::TickFor(TickReason reason) {
 	switch (reason) {
 		case tickCaret:
@@ -5011,10 +4973,6 @@
 	}
 }
 
-bool Editor::FineTickerAvailable() {
-	return false;
-}
-
 // FineTickerStart is be overridden by subclasses that support fine ticking so
 // this method should never be called.
 bool Editor::FineTickerRunning(TickReason) {
diff -r b6cf154fe8d0 src/Editor.h
--- a/src/Editor.h	Sat Jun 10 10:51:46 2017 +1000
+++ b/src/Editor.h	Sat Jun 10 13:13:35 2017 +1000
@@ -517,10 +517,8 @@
 
 	void Tick();
 	bool Idle();
-	virtual void SetTicking(bool on);
 	enum TickReason { tickCaret, tickScroll, tickWiden, tickDwell, tickPlatform };
 	virtual void TickFor(TickReason reason);
-	virtual bool FineTickerAvailable();
 	virtual bool FineTickerRunning(TickReason reason);
 	virtual void FineTickerStart(TickReason reason, int millis, int tolerance);
 	virtual void FineTickerCancel(TickReason reason);
diff -r b6cf154fe8d0 win32/ScintillaWin.cxx
--- a/win32/ScintillaWin.cxx	Sat Jun 10 10:51:46 2017 +1000
+++ b/win32/ScintillaWin.cxx	Sat Jun 10 13:13:35 2017 +1000
@@ -318,7 +318,6 @@
 	sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
 	bool SetIdle(bool on) override;
 	UINT_PTR timers[tickDwell+1];
-	bool FineTickerAvailable() override;
 	bool FineTickerRunning(TickReason reason) override;
 	void FineTickerStart(TickReason reason, int millis, int tolerance) override;
 	void FineTickerCancel(TickReason reason) override;
@@ -1772,13 +1771,6 @@
 	return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
 }
 
-/**
-* Report that this Editor subclass has a working implementation of FineTickerStart.
-*/
-bool ScintillaWin::FineTickerAvailable() {
-	return true;
-}
-
 bool ScintillaWin::FineTickerRunning(TickReason reason) {
 	return timers[reason] != 0;
 }
