@@ 140,20 140,25 @@ class packer(delegate_to_widget_mixin('_
def render(self, size, focus):
"""render the widget"""
if self._previous_size != size:
- self._update_container(size)
+ self._guess_orientation(size)
+ self._update_container()
self._previous_size = size
return super(packer, self).render(size, focus)
- def _update_container(self, size):
+ def _update_container(self):
"""update the main container depending on the given size"""
+ if self._orientation == 'horizontal':
+ self._original_widget = urwid.Columns(self._widgets)
+ elif self._orientation == 'vertical':
+ self._original_widget = urwid.Pile(self._widgets)
+ self._invalidate()
+
+ def _guess_orientation(self, size):
cols = size[0]
if cols > 160 and self._orientation != 'horizontal':
- self._original_widget = urwid.Columns(self._widgets)
self._orientation = 'horizontal'
elif cols < 160 and self._orientation != 'vertical':
- self._original_widget = urwid.Pile(self._widgets)
self._orientation = 'vertical'
- # only when screen size change, so mainloop has already invalidate self
def keypress(self, size, key):
"""Process pressed key"""