# HG changeset patch # User Goffi # Date 1424713498 -3600 # Node ID 86ae737da6f362915eb89381f6c8c1e5931abf1d # Parent 40c3c6aaafaa3afa35620f0642fe1c7fcf28a7f0 browser side (widgets management): removed getWidgetsPanel: we use directly getParent which do the same thing + displayWidget now detect hidden widgets (widgets without parent WidgetsPanel) diff -r 40c3c6aaafaa -r 86ae737da6f3 src/browser/libervia_main.py --- a/src/browser/libervia_main.py Mon Feb 23 18:44:58 2015 +0100 +++ b/src/browser/libervia_main.py Mon Feb 23 18:44:58 2015 +0100 @@ -620,7 +620,12 @@ except quick_widgets.WidgetAlreadyExistsError: kwargs['on_existing_widget'] = C.WIDGET_KEEP wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) - if wid.getWidgetsPanel() != self.tab_panel.getCurrentPanel(): + widgets_panel = wid.getParent(base_widget.WidgetsPanel, expect=False) + if widgets_panel is None: + # The widget exists but is hidden + self.addWidget(wid) + elif widgets_panel != self.tab_panel.getCurrentPanel(): + # the widget is on an other tab, so we add a new one here kwargs['on_existing_widget'] = C.WIDGET_RECREATE wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) self.addWidget(wid) diff -r 40c3c6aaafaa -r 86ae737da6f3 src/browser/sat_browser/base_widget.py --- a/src/browser/sat_browser/base_widget.py Mon Feb 23 18:44:58 2015 +0100 +++ b/src/browser/sat_browser/base_widget.py Mon Feb 23 18:44:58 2015 +0100 @@ -170,7 +170,7 @@ if self == _new_panel: # We can't drop on ourself return # we need to remove the widget from the panel as it will be inserted elsewhere - widgets_panel = _new_panel.getWidgetsPanel() + widgets_panel = _new_panel.getParent(WidgetsPanel, expect=True) wid_row = widgets_panel.getWidgetCoords(_new_panel)[0] row_wids = widgets_panel.getLiberviaRowWidgets(wid_row) if len(row_wids) == 1 and wid_row == widgets_panel.getWidgetCoords(self)[0]: @@ -330,9 +330,6 @@ def getDebugName(self): return "%s (%s)" % (self, self._title.getText()) - def getWidgetsPanel(self, expect=True): - return self.getParent(WidgetsPanel, expect) - def getParent(self, class_=None, expect=True): """Return the closest ancestor of the specified class. @@ -357,8 +354,8 @@ def onClose(self, sender): """ Called when the close button is pushed """ - _widgetspanel = self.getWidgetsPanel() - _widgetspanel.removeWidget(self) + widgets_panel = self.getParent(WidgetsPanel, expect=True) + widgets_panel.removeWidget(self) self.onQuit() self.host.widgets.deleteWidget(self) @@ -373,7 +370,7 @@ pass def onSetting(self, sender): - widpanel = self.getWidgetsPanel() + widpanel = self.getParent(WidgetsPanel, expect=True) row, col = widpanel.getIndex(self) body = VerticalPanel() @@ -798,7 +795,7 @@ log.error("No widget registered in LiberviaDragWidget !") return _new_panel = LiberviaDragWidget.current - _new_panel.getWidgetsPanel().removeWidget(_new_panel) + _new_panel.getParent(WidgetsPanel, expect=True).removeWidget(_new_panel) elif item_type in DropCell.drop_keys: _new_panel = DropCell.drop_keys[item_type](self.tab_panel.host, item) else: