diff --git a/src/plugins/clangrefactoring/qtcreatorsearchhandle.cpp b/src/plugins/clangrefactoring/qtcreatorsearchhandle.cpp
index 2364931ce6041864bd284197f17c2d902b28b6d7..67b073c7b1d90e4f2fe6f5238b51e72b65fb4271 100644
--- a/src/plugins/clangrefactoring/qtcreatorsearchhandle.cpp
+++ b/src/plugins/clangrefactoring/qtcreatorsearchhandle.cpp
@@ -55,6 +55,12 @@ void QtCreatorSearchHandle::setResultCounter(uint counter)
     promise.setProgressValue(counter);
 }
 
+void QtCreatorSearchHandle::cancel()
+{
+    SearchHandle::cancel();
+    promise.reportCanceled();
+}
+
 void QtCreatorSearchHandle::finishSearch()
 {
     searchResult->finishSearch(false);
diff --git a/src/plugins/clangrefactoring/qtcreatorsearchhandle.h b/src/plugins/clangrefactoring/qtcreatorsearchhandle.h
index e0dc80a0c6fe790ee4cbab15ea15a735f1ba9d74..8e391e26886259ec664310c4edc9d3a1e6a4a37d 100644
--- a/src/plugins/clangrefactoring/qtcreatorsearchhandle.h
+++ b/src/plugins/clangrefactoring/qtcreatorsearchhandle.h
@@ -45,6 +45,8 @@ public:
     void setExpectedResultCount(uint count) override;
     void setResultCounter(uint counter) override;
 
+    void cancel() override;
+
     void finishSearch() override;
 
 private:
diff --git a/src/plugins/clangrefactoring/searchhandle.h b/src/plugins/clangrefactoring/searchhandle.h
index 185be306a2ec3397f1b381e8a081cf3ed5219b2d..e9025f3511f8cff95e7af712467d228240d82f76 100644
--- a/src/plugins/clangrefactoring/searchhandle.h
+++ b/src/plugins/clangrefactoring/searchhandle.h
@@ -45,7 +45,7 @@ public:
 
     virtual void finishSearch() = 0;
 
-    void cancel();
+    virtual void cancel();
 
     void setRefactoringServer(ClangBackEnd::RefactoringServerInterface *server);