From 5c8cc2ab89e6eec7a261c54b059a25f90587140a Mon Sep 17 00:00:00 2001 From: Matthew Einhorn Date: Thu, 4 Aug 2016 19:41:28 -0400 Subject: [PATCH] Don't re add all widgets upon resize, it just lead to infinite size calc. --- kivy/uix/spinner.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/kivy/uix/spinner.py b/kivy/uix/spinner.py index 86242a67a..1416b6b02 100644 --- a/kivy/uix/spinner.py +++ b/kivy/uix/spinner.py @@ -117,7 +117,7 @@ class Spinner(Button): .. versionadded:: 1.4.0 ''' - + sync_height = BooleanProperty(False) '''Each element in a dropdown list uses a default/user-supplied height. Set to True to propagate the Spinner's height value to each dropdown @@ -138,7 +138,7 @@ class Spinner(Button): fbind('dropdown_cls', build_dropdown) fbind('option_cls', build_dropdown) fbind('values', self._update_dropdown) - fbind('size', self._update_dropdown) + fbind('size', self._update_dropdown_size) fbind('text_autoupdate', self._update_dropdown) build_dropdown() @@ -156,6 +156,19 @@ class Spinner(Button): self._dropdown.bind(on_dismiss=self._close_dropdown) self._update_dropdown() + def _update_dropdown_size(self, *largs): + if not self.sync_height: + return + dp = self._dropdown + if not dp: + return + + container = dp.container + if not container: + return + for value in container.children: + item.height = self.height + def _update_dropdown(self, *largs): dp = self._dropdown cls = self.option_cls