Retain bindings for theme switching

This commit is contained in:
Mark Qvist 2022-10-08 17:19:20 +02:00
parent 4b619f385d
commit 540a533900

View File

@ -1667,23 +1667,23 @@ class ThemableBehavior(EventDispatcher):
self.theme_cls = App.get_running_app().theme_cls self.theme_cls = App.get_running_app().theme_cls
super().__init__(**kwargs) super().__init__(**kwargs)
def dec_disabled(self, *args, **kwargs) -> None: # def dec_disabled(self, *args, **kwargs) -> None:
callabacks = self.theme_cls.get_property_observers("theme_style") # callabacks = self.theme_cls.get_property_observers("theme_style")
for callaback in callabacks: # for callaback in callabacks:
try: # try:
if hasattr(callaback, "proxy") and hasattr( # if hasattr(callaback, "proxy") and hasattr(
callaback.proxy, "theme_cls" # callaback.proxy, "theme_cls"
): # ):
for property_name in self.unbind_properties: # for property_name in self.unbind_properties:
self.theme_cls.unbind( # self.theme_cls.unbind(
**{ # **{
property_name: getattr( # property_name: getattr(
callaback.proxy, callaback.method_name # callaback.proxy, callaback.method_name
) # )
} # }
) # )
except ReferenceError: # except ReferenceError:
pass # pass
super().dec_disabled(*args, **kwargs) # super().dec_disabled(*args, **kwargs)