]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/commitdiff
Leave application correctly when clicking on the cross button
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 29 Jul 2016 21:22:27 +0000 (23:22 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 29 Jul 2016 21:22:27 +0000 (23:22 +0200)
music_sampler/app.py
music_sampler/mapping.py

index ac1944a1a5075ce92a3b4340670b25fbafd13c9e..e7c90dbd8967da9a4cadda1a8068ef7c2223da54 100644 (file)
@@ -47,6 +47,7 @@ class Screen(FloatLayout):
         super(Screen, self).__init__(**kwargs)
         self.unfocused_widget = UnfocusedOverlay()
         Window.bind(focus=self.focus_changed)
+        Window.on_request_close = self.on_request_close
 
     def focus_changed(self, instance, focus):
         if Config.no_focus_warning:
@@ -56,6 +57,9 @@ class Screen(FloatLayout):
         else:
             self.remove_widget(self.unfocused_widget)
 
+    def on_request_close(self, *args, **kwargs):
+        self.ids["Mapping"].leave_application()
+
 class MusicSamplerApp(App):
     def build(self):
         Window.size = (913, 563)
index 74feec886f6f37b623b484314ac0012b927abafb..e589ac0a93edfdb234587e25ab6cb1d15a4d7d1b 100644 (file)
@@ -124,22 +124,24 @@ class Mapping(RelativeLayout):
             threading.Thread(name="MSKeyAction", target=key.run,
                     args=['-'.join(modifiers)]).start()
         elif 'ctrl' in modifiers and (keycode[0] == 113 or keycode[0] == '99'):
-            self.keyboard.unbind(on_key_down=self.on_keyboard_down)
-            self.stop_all_running()
-            for music in self.open_files.values():
-                music.stop()
-            for thread in threading.enumerate():
-                if thread.getName()[0:2] == "MS":
-                    thread.join()
-                elif thread.__class__ == threading.Timer:
-                    thread.cancel()
-                    thread.join()
-
+            self.leave_application()
             sys.exit()
         elif 'ctrl' in modifiers and keycode[0] == 114:
             threading.Thread(name="MSReload", target=self.reload).start()
         return True
 
+    def leave_application(self):
+        self.keyboard.unbind(on_key_down=self.on_keyboard_down)
+        self.stop_all_running()
+        for music in self.open_files.values():
+            music.stop()
+        for thread in threading.enumerate():
+            if thread.getName()[0:2] == "MS":
+                thread.join()
+            elif thread.__class__ == threading.Timer:
+                thread.cancel()
+                thread.join()
+
     # Helpers
     def allowed_modifiers(self, modifiers):
         allowed = []