def test_remove_dock_widget_by_widget_reference(make_napari_viewer): viewer = make_napari_viewer() widg = QPushButton('button') dw = viewer.window.add_dock_widget(widg, name='test') assert widg.parent() is dw assert dw in viewer.window._qt_window.findChildren(QDockWidget) viewer.window.remove_dock_widget(widg) with pytest.raises(LookupError): # it's gone this time: viewer.window.remove_dock_widget(widg) assert not widg.parent()
def test_remove_dock_widget_orphans_widget(make_napari_viewer): viewer = make_napari_viewer() widg = QPushButton('button') assert not widg.parent() dw = viewer.window.add_dock_widget(widg, name='test') assert widg.parent() is dw assert dw.toggleViewAction() in viewer.window.window_menu.actions() viewer.window.remove_dock_widget(dw) assert dw.toggleViewAction() not in viewer.window.window_menu.actions() del dw # if dw didn't release widg, we'd get an exception when next accessing widg assert not widg.parent()