Skip to content

Commit 6cbe098

Browse files
perf(tools): avoid quadratic selected-item lookups in item tools and item list
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 89fe07a commit 6cbe098

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

‎plotpy/panels/itemlist.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,9 @@ def active_item_changed(self, plot: BasePlot) -> None:
233233
self.plot = plot
234234
_block = self.blockSignals(True)
235235
active = plot.get_active_item()
236-
for item in self.items:
236+
for row, item in enumerate(self.items):
237237
title = item.title().text()
238-
lw_item = self.item(self.items.index(item))
238+
lw_item = self.item(row)
239239
lw_item.setText(title)
240240
lw_item.setSelected(item.selected)
241241
font = lw_item.font()

‎plotpy/tools/image.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,8 @@ def get_supported_items(self, plot: BasePlot) -> list[BaseImageItem]:
416416
and hasattr(item, "get_zaxis_log_state")
417417
]
418418
if len(items) > 1:
419-
items = [item for item in items if item in plot.get_selected_items()]
419+
selected = plot.get_selected_items()
420+
items = [item for item in items if item in selected]
420421
if items:
421422
self.action.setChecked(items[0].get_zaxis_log_state())
422423
return items

‎plotpy/tools/item.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ def get_supported_items(self, plot: BasePlot) -> list:
8686
if len(all_items) == 1:
8787
return all_items
8888
else:
89-
return [item for item in all_items if item in plot.get_selected_items()]
89+
selected = plot.get_selected_items()
90+
return [item for item in all_items if item in selected]
9091

9192
def update_status(self, plot: BasePlot) -> None:
9293
"""

0 commit comments

Comments
 (0)