Skip to content

Commit ade5807

Browse files
committed
Update FilterEdit and FilterTarget to preserve existing selections
The down and enter keys now preserve an existing selection in the associated list or table views, rather than unconditionally selecting or activating the first item.
1 parent 63ef496 commit ade5807

28 files changed

+162
-138
lines changed

examples/triage/entry.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,15 +271,18 @@ void EntryTreeView::scrollToCurrentItem()
271271
}
272272

273273

274-
void EntryTreeView::selectFirstItem()
274+
void EntryTreeView::ensureSelection()
275275
{
276-
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
276+
if (auto current = currentIndex(); !current.isValid())
277+
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
277278
}
278279

279280

280-
void EntryTreeView::activateFirstItem()
281+
void EntryTreeView::activateSelection()
281282
{
282-
entryDoubleClicked(m_model->index(0, 0, QModelIndex()));
283+
ensureSelection();
284+
if (auto current = currentIndex(); current.isValid())
285+
entryDoubleClicked(current);
283286
}
284287

285288

examples/triage/entry.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class EntryTreeView : public QTreeView, public FilterTarget
4949
virtual void setFilter(const std::string& filterText) override;
5050
virtual void scrollToFirstItem() override;
5151
virtual void scrollToCurrentItem() override;
52-
virtual void selectFirstItem() override;
53-
virtual void activateFirstItem() override;
52+
virtual void ensureSelection() override;
53+
virtual void activateSelection() override;
5454
virtual void closeFilter() override;
5555

5656
protected:

examples/triage/exports.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,15 +438,18 @@ void ExportsTreeView::scrollToCurrentItem()
438438
}
439439

440440

441-
void ExportsTreeView::selectFirstItem()
441+
void ExportsTreeView::ensureSelection()
442442
{
443-
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
443+
if (auto current = currentIndex(); !current.isValid())
444+
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
444445
}
445446

446447

447-
void ExportsTreeView::activateFirstItem()
448+
void ExportsTreeView::activateSelection()
448449
{
449-
exportDoubleClicked(m_model->index(0, 0, QModelIndex()));
450+
ensureSelection();
451+
if (auto current = currentIndex(); current.isValid())
452+
exportDoubleClicked(current);
450453
}
451454

452455

examples/triage/exports.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ class ExportsTreeView : public QTreeView, public FilterTarget
8080
virtual void setFilter(const std::string& filterText) override;
8181
virtual void scrollToFirstItem() override;
8282
virtual void scrollToCurrentItem() override;
83-
virtual void selectFirstItem() override;
84-
virtual void activateFirstItem() override;
83+
virtual void ensureSelection() override;
84+
virtual void activateSelection() override;
8585
virtual void closeFilter() override;
8686

8787
protected:

examples/triage/imports.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,15 +343,18 @@ void ImportsTreeView::scrollToCurrentItem()
343343
}
344344

345345

346-
void ImportsTreeView::selectFirstItem()
346+
void ImportsTreeView::ensureSelection()
347347
{
348-
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
348+
if (auto current = currentIndex(); !current.isValid())
349+
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
349350
}
350351

351352

352-
void ImportsTreeView::activateFirstItem()
353+
void ImportsTreeView::activateSelection()
353354
{
354-
importDoubleClicked(m_model->index(0, 0, QModelIndex()));
355+
ensureSelection();
356+
if (auto current = currentIndex(); current.isValid())
357+
importDoubleClicked(current);
355358
}
356359

357360

examples/triage/imports.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ class ImportsTreeView : public QTreeView, public FilterTarget
5858
virtual void setFilter(const std::string& filterText) override;
5959
virtual void scrollToFirstItem() override;
6060
virtual void scrollToCurrentItem() override;
61-
virtual void selectFirstItem() override;
62-
virtual void activateFirstItem() override;
61+
virtual void ensureSelection() override;
62+
virtual void activateSelection() override;
6363
virtual void closeFilter() override;
6464

6565
protected:

examples/triage/strings.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,15 +288,18 @@ void StringsTreeView::scrollToCurrentItem()
288288
}
289289

290290

291-
void StringsTreeView::selectFirstItem()
291+
void StringsTreeView::ensureSelection()
292292
{
293-
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
293+
if (auto current = currentIndex(); !current.isValid())
294+
setCurrentIndex(m_model->index(0, 0, QModelIndex()));
294295
}
295296

296297

297-
void StringsTreeView::activateFirstItem()
298+
void StringsTreeView::activateSelection()
298299
{
299-
stringDoubleClicked(m_model->index(0, 0, QModelIndex()));
300+
ensureSelection();
301+
if (auto current = currentIndex(); current.isValid())
302+
stringDoubleClicked(current);
300303
}
301304

302305

examples/triage/strings.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ class StringsTreeView : public QTreeView, public FilterTarget
5050
virtual void setFilter(const std::string& filterText) override;
5151
virtual void scrollToFirstItem() override;
5252
virtual void scrollToCurrentItem() override;
53-
virtual void selectFirstItem() override;
54-
virtual void activateFirstItem() override;
53+
virtual void ensureSelection() override;
54+
virtual void activateSelection() override;
5555
virtual void closeFilter() override;
5656

5757
protected:

plugins/warp/ui/shared/constraint.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class WarpConstraintTableWidget : public QWidget, public FilterTarget
6464

6565
void scrollToCurrentItem() override {}
6666

67-
void selectFirstItem() override {}
67+
void ensureSelection() override {}
6868

69-
void activateFirstItem() override {}
69+
void activateSelection() override {}
7070
};

plugins/warp/ui/shared/function.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ class WarpFunctionTableWidget : public QWidget, public FilterTarget
129129

130130
void scrollToCurrentItem() override {}
131131

132-
void selectFirstItem() override {}
132+
void ensureSelection() override {}
133133

134-
void activateFirstItem() override {}
134+
void activateSelection() override {}
135135
};
136136

137137
class WarpFunctionInfoWidget : public QWidget

0 commit comments

Comments
 (0)