From 17690f7eb687681c62bbcf7ab2fff7724b83f752 Mon Sep 17 00:00:00 2001 From: Eugenio Parodi Date: Sun, 23 May 2021 20:50:55 +0100 Subject: [PATCH] Added Widget iterator in the layout --- TermTk/TTkCore/helper.py | 13 ++----------- TermTk/TTkLayouts/layout.py | 9 +++++++++ TermTk/TTkWidgets/tabwidget.py | 2 -- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/TermTk/TTkCore/helper.py b/TermTk/TTkCore/helper.py index e9ac784b..c13a466e 100644 --- a/TermTk/TTkCore/helper.py +++ b/TermTk/TTkCore/helper.py @@ -228,15 +228,6 @@ class TTkHelper: layout = layout.parent() return (wx, wy) - def _iterWidgets(item): - for child in item.children(): - if child.layoutItemType == TTkK.WidgetItem: - if not child.widget().isVisible(): continue - yield child.widget() - yield from TTkHelper._iterWidgets(child.widget().rootLayout()) - if child.layoutItemType == TTkK.LayoutItem: - yield from TTkHelper._iterWidgets(child) - def nextFocus(widget): rootWidget = TTkHelper.rootOverlay(widget) if not rootWidget: @@ -244,7 +235,7 @@ class TTkHelper: if widget == rootWidget: widget = None first = None - for w in TTkHelper._iterWidgets(rootWidget.rootLayout()): + for w in rootWidget.rootLayout().iterWidgets(): if not first and w.focusPolicy() & TTkK.TabFocus == TTkK.TabFocus: first = w # TTkLog.debug(f"{w._name} {widget}") @@ -267,7 +258,7 @@ class TTkHelper: if widget == rootWidget: widget = None prev = None - for w in TTkHelper._iterWidgets(rootWidget.rootLayout()): + for w in rootWidget.rootLayout().iterWidgets(): # TTkLog.debug(f"{w._name} {widget}") if w == widget: widget=None diff --git a/TermTk/TTkLayouts/layout.py b/TermTk/TTkLayouts/layout.py index dca6df99..5712f663 100644 --- a/TermTk/TTkLayouts/layout.py +++ b/TermTk/TTkLayouts/layout.py @@ -192,6 +192,15 @@ class TTkLayout(TTkLayoutItem): else: return self._parent.parentWidget() + def iterWidgets(self): + for child in self._items: + if child.layoutItemType == TTkK.WidgetItem: + if not child.widget().isVisible(): continue + yield child.widget() + yield from child.widget().rootLayout().iterWidgets() + if child.layoutItemType == TTkK.LayoutItem: + yield from child.iterWidgets() + def _zSortItems(self): self._zSortedItems = sorted(self._items, key=lambda item: item.z) diff --git a/TermTk/TTkWidgets/tabwidget.py b/TermTk/TTkWidgets/tabwidget.py index d14a18ae..d7f22c1e 100644 --- a/TermTk/TTkWidgets/tabwidget.py +++ b/TermTk/TTkWidgets/tabwidget.py @@ -190,7 +190,6 @@ class _TTkTabs(TTkWidget): leftScroller=self._leftScroller, rightScroller=self._rightScroller, color=tabColor, borderColor=tabBorderColor, selectColor=tabSelectColor, offsetColor=tabOffsetColor) - ''' ┌────────────────────────────┐ │ Root Layout │ @@ -245,7 +244,6 @@ class TTkTabWidget(TTkFrame): self.setPadding(2,0,0,0) self.rootLayout().addItem(self._tabBarTopLayout) self._tabBarTopLayout.setGeometry(0,0,self._width,self._padt) - self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus) @pyTTkSlot(int) def _tabChanged(self, index):