From fec2a7db01efbc3b8ea312b4dae459b3ac14544d Mon Sep 17 00:00:00 2001 From: Chris Meyer <34664+cmeyer@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:08:12 -0800 Subject: [PATCH] Fix #1324. Inspector now shows selected data panel item. --- nion/swift/DataPanel.py | 16 ++++------------ nion/swift/test/DataPanel_test.py | 12 ++++++------ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/nion/swift/DataPanel.py b/nion/swift/DataPanel.py index 213b9bbf..e7b71f81 100644 --- a/nion/swift/DataPanel.py +++ b/nion/swift/DataPanel.py @@ -679,8 +679,6 @@ def unmap_display_item_to_display_item_adapter(display_item_adapter: DisplayItem self.__selection = self.document_controller.selection - self.__focused = False - def selection_changed() -> None: # called when the selection changes; notify selected display item changed if focused. self.__notify_focus_changed() @@ -688,7 +686,7 @@ def selection_changed() -> None: self.__selection_changed_event_listener = self.__selection.changed_event.listen(selection_changed) def focus_changed(focused: bool) -> None: - self.focused = focused + self.__notify_focus_changed() def delete_display_item_adapters(display_item_adapters: typing.List[DisplayItemAdapter]) -> None: document_controller.delete_display_items([display_item_adapter.display_item for display_item_adapter in display_item_adapters if display_item_adapter.display_item]) @@ -885,14 +883,8 @@ def __notify_focus_changed(self) -> None: # this is called when the keyboard focus for the data panel is changed. # if we are receiving focus, tell the window (document_controller) that # we now have the focus. - if self.__focused: + if self._data_list_widget.focused or self._data_grid_widget.focused: self.document_controller.data_panel_focused() - @property - def focused(self) -> bool: - return self.__focused - - @focused.setter - def focused(self, value: bool) -> None: - self.__focused = value - self.__notify_focus_changed() + def _request_focus_for_test(self) -> None: + self._data_list_widget.focused = True diff --git a/nion/swift/test/DataPanel_test.py b/nion/swift/test/DataPanel_test.py index 9cc97db7..edbc2738 100644 --- a/nion/swift/test/DataPanel_test.py +++ b/nion/swift/test/DataPanel_test.py @@ -183,7 +183,7 @@ def test_selected_group_persistence(self): document_model.append_data_group(data_group2) data_panel = document_controller.find_dock_panel("data-panel") project_panel = document_controller.find_dock_panel("collections-panel") - data_panel.focused = True + data_panel._request_focus_for_test() self.assertSetEqual({0}, project_panel._collection_selection.indexes) self.assertEqual(document_controller.selection.indexes, set()) document_controller.select_data_group_in_data_panel(data_group=data_group1, data_item=data_item1) @@ -236,7 +236,7 @@ def test_data_panel_updates_focused_data_item_when_single_item_selected_when_foc document_model.append_data_item(DataItem.DataItem(numpy.zeros((2, 2)))) document_model.append_data_item(DataItem.DataItem(numpy.zeros((2, 2)))) data_panel = document_controller.find_dock_panel("data-panel") - data_panel.focused = True + data_panel._request_focus_for_test() document_controller.select_data_item_in_data_panel(document_model.data_items[0]) self.assertEqual(document_model.data_items[0], document_controller.selected_data_item) document_controller.select_data_item_in_data_panel(document_model.data_items[1]) @@ -249,7 +249,7 @@ def test_data_panel_clears_selected_data_item_when_multiple_items_selected_when_ document_model.append_data_item(DataItem.DataItem(numpy.zeros((2, 2)))) document_model.append_data_item(DataItem.DataItem(numpy.zeros((2, 2)))) data_panel = document_controller.find_dock_panel("data-panel") - data_panel.focused = True + data_panel._request_focus_for_test() document_controller.select_data_item_in_data_panel(document_model.data_items[0]) self.assertEqual(document_model.data_items[0], document_controller.selected_data_item) document_controller.select_data_items_in_data_panel(document_model.data_items) @@ -262,7 +262,7 @@ def test_data_panel_clears_selected_data_item_when_clearing_selection_when_focus document_model.append_data_item(DataItem.DataItem(numpy.zeros((2, 2)))) document_model.append_data_item(DataItem.DataItem(numpy.zeros((2, 2)))) data_panel = document_controller.find_dock_panel("data-panel") - data_panel.focused = True + data_panel._request_focus_for_test() document_controller.select_data_item_in_data_panel(document_model.data_items[0]) self.assertEqual(document_model.data_items[0], document_controller.selected_data_item) document_controller.select_data_items_in_data_panel([]) @@ -283,7 +283,7 @@ def test_selection_during_operations(self): document_model.append_data_item(data_item2) # finished setting up data_panel = document_controller.find_dock_panel("data-panel") - data_panel.focused = True + data_panel._request_focus_for_test() document_controller.select_data_item_in_data_panel(data_item=data_item1) # make sure our preconditions are right self.assertEqual(document_controller.selected_data_item, data_item1) @@ -427,7 +427,7 @@ def test_select_after_receive_files(self): data_item.title = "data_item" document_model.append_data_item(data_item) data_panel = document_controller.find_dock_panel("data-panel") - data_panel.focused = True + data_panel._request_focus_for_test() self.assertIsNone(document_controller.selected_display_item) document_controller.receive_files([pathlib.Path(":/app/scroll_gem.png")], index=0) document_controller.periodic()