Fix some corner cases in thumb selection, #5393
This commit is contained in:
parent
6b868a8d4d
commit
f85de946e6
@ -785,12 +785,16 @@ void FileBrowser::menuItemActivated (Gtk::MenuItem* m)
|
||||
|
||||
selected.clear();
|
||||
|
||||
for (size_t i = 0; i < fd.size(); i++)
|
||||
for (size_t i = 0; i < fd.size(); ++i) {
|
||||
if (checkFilter(fd[i])) {
|
||||
fd[i]->selected = true;
|
||||
selected.push_back(fd[i]);
|
||||
}
|
||||
}
|
||||
if (!anchor && !selected.empty()) {
|
||||
anchor = selected[0];
|
||||
}
|
||||
}
|
||||
queue_draw ();
|
||||
notifySelectionListener();
|
||||
} else if( m == copyTo) {
|
||||
@ -1452,6 +1456,9 @@ void FileBrowser::applyFilter (const BrowserFilter& filter)
|
||||
selchanged = true;
|
||||
}
|
||||
}
|
||||
if (selected.empty() || (anchor && std::find(selected.begin(), selected.end(), anchor) == selected.end())) {
|
||||
anchor = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (selchanged) {
|
||||
|
@ -172,16 +172,18 @@ void ThumbBrowserBase::selectSingle (ThumbBrowserEntryBase* clicked)
|
||||
|
||||
void ThumbBrowserBase::selectRange (ThumbBrowserEntryBase* clicked, bool additional)
|
||||
{
|
||||
if (selected.empty() && !anchor) {
|
||||
addToSelection(clicked, selected);
|
||||
if (!anchor) {
|
||||
anchor = clicked;
|
||||
if (selected.empty()) {
|
||||
addToSelection(clicked, selected);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!additional || !lastClicked) {
|
||||
// Extend the current range w.r.t to first selected entry.
|
||||
ThumbIterator back = std::find(fd.begin(), fd.end(), clicked);
|
||||
ThumbIterator front = std::find(fd.begin(), fd.end(), anchor);
|
||||
ThumbIterator front = anchor == clicked ? back : std::find(fd.begin(), fd.end(), anchor);
|
||||
|
||||
if (front > back) {
|
||||
std::swap(front, back);
|
||||
|
Loading…
x
Reference in New Issue
Block a user