diff options
Diffstat (limited to 'src/jarabe/view/launcher.py')
-rw-r--r-- | src/jarabe/view/launcher.py | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/jarabe/view/launcher.py b/src/jarabe/view/launcher.py index 422a49a..89251e5 100644 --- a/src/jarabe/view/launcher.py +++ b/src/jarabe/view/launcher.py @@ -156,9 +156,6 @@ class _Animation(animator.Animation): self._icon.props.size = int(self.start_size + d) -_launchers = {} - - def setup(): model = shell.get_model() model.connect('launch-started', __launch_started_cb) @@ -167,14 +164,15 @@ def setup(): def add_launcher(activity_id, icon_path, icon_color): + model = shell.get_model() - if activity_id in _launchers: + if model.get_launcher(activity_id) is not None: return launch_window = LaunchWindow(activity_id, icon_path, icon_color) launch_window.show() - _launchers[activity_id] = launch_window + model.register_launcher(activity_id, launch_window) def __launch_started_cb(home_model, home_activity): @@ -184,7 +182,7 @@ def __launch_started_cb(home_model, home_activity): def __launch_failed_cb(home_model, home_activity): activity_id = home_activity.get_activity_id() - launcher = _launchers.get(activity_id) + launcher = shell.get_model().get_launcher(activity_id) if launcher is None: logging.error('Launcher for %s is missing', activity_id) @@ -209,8 +207,11 @@ def __launch_completed_cb(home_model, home_activity): def _destroy_launcher(home_activity): activity_id = home_activity.get_activity_id() - if activity_id in _launchers: - _launchers[activity_id].destroy() - del _launchers[activity_id] - else: - logging.error('Launcher for %s is missing', activity_id) + launcher = shell.get_model().get_launcher(activity_id) + if launcher is None: + if not home_activity.is_journal(): + logging.error('Launcher was not registered for %s', activity_id) + return + + shell.get_model().unregister_launcher(activity_id) + launcher.destroy() |