From bc9b0b19ff61eee9b008cd60bcd27137c51712a4 Mon Sep 17 00:00:00 2001
From: Sergey Sharybin <sergey.vfx@gmail.com>
Date: Mon, 5 Sep 2011 11:41:40 +0000
Subject: [PATCH] Remove callback when screencast keys operator is cancelled.

Fixes #28505: Screencast Keys Add-on Crashes Blender
---
 space_view3d_screencast_keys.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/space_view3d_screencast_keys.py b/space_view3d_screencast_keys.py
index 93fcf7997..0acb675bc 100644
--- a/space_view3d_screencast_keys.py
+++ b/space_view3d_screencast_keys.py
@@ -337,6 +337,13 @@ class ScreencastKeysStatus(bpy.types.Operator):
 
         return {'PASS_THROUGH'}
 
+    def cancel(self, context):
+        if context.window_manager.display_keys:
+            context.region.callback_remove(self._handle)
+            context.window_manager.display_keys = False
+
+        return {'CANCELLED'}
+
     def invoke(self, context, event):
         if context.area.type == 'VIEW_3D':
             if context.window_manager.display_keys == False:
-- 
GitLab