diff --git a/frontends/src/quick_frontend/quick_widgets.py b/frontends/src/quick_frontend/quick_widgets.py index c657f706..69d99f66 100644 --- a/frontends/src/quick_frontend/quick_widgets.py +++ b/frontends/src/quick_frontend/quick_widgets.py @@ -253,9 +253,14 @@ class QuickWidgetsManager(object): def deleteWidget(self, widget_to_delete): """Delete a widget + this method must be called by frontends when a widget is deleted widget's onDelete method will be called before deletion """ - widget_to_delete.onDelete() + if widget_to_delete.onDelete() == False: + return + + if self.host.selected_widget == widget_to_delete: + self.host.selected_widget = None for widget_map in self._widgets.itervalues(): to_delete = set() @@ -335,8 +340,11 @@ class QuickWidget(object): return unicode(target) # by defaut, there is one hash for one target def onDelete(self): - """Called when a widget is deleted""" - log.debug(u"deleting widget {}".format(self)) # Must be implemented by frontends - if self.host.selected_widget == self: - self.host.selected_widget = None + """Called when a widget is being deleted + + @return (boot, None): False to cancel deletion + all other value continue deletion + """ + log.debug(u"widget {} deleted".format(self)) + return True