summaryrefslogtreecommitdiff
path: root/qutebrowser
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-07-13 10:25:46 +0200
committerFlorian Bruhin <me@the-compiler.org>2021-07-13 10:25:46 +0200
commit38092895810ed22ed69b9ecc432277d7d9f611dc (patch)
treeb552a2c548faad6b77b8e1d568c1680a5ff310e2 /qutebrowser
parent0001d4fe20a4cdef9dd628fad220e09a03618932 (diff)
parentd638e14b49b3b193202d5576cd0c4d848e178232 (diff)
downloadqutebrowser-38092895810ed22ed69b9ecc432277d7d9f611dc.tar.gz
qutebrowser-38092895810ed22ed69b9ecc432277d7d9f611dc.zip
Merge remote-tracking branch 'origin/pr/6507'
Diffstat (limited to 'qutebrowser')
-rw-r--r--qutebrowser/mainwindow/prompt.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py
index c3550d92f..7ac9f7522 100644
--- a/qutebrowser/mainwindow/prompt.py
+++ b/qutebrowser/mainwindow/prompt.py
@@ -24,8 +24,8 @@ import html
import collections
import functools
import dataclasses
-from typing import Deque, MutableSequence, Optional, cast
+from typing import Deque, MutableSequence, Optional, cast
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex,
QItemSelectionModel, QObject, QEventLoop)
from PyQt5.QtWidgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit,
@@ -631,6 +631,16 @@ class FilenamePrompt(_BasePrompt):
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
self._to_complete = ''
+ self._root_index = QModelIndex()
+
+ def _directories_hide_show_model(self):
+ """Get rid of non-matching directories."""
+ num_rows = self._file_model.rowCount(self._root_index)
+ for row in range(num_rows):
+ index = self._file_model.index(row, 0, self._root_index)
+ filename = index.data()
+ hidden = self._to_complete not in filename and filename != '..'
+ self._file_view.setRowHidden(index.row(), index.parent(), hidden)
@pyqtSlot(str)
def _set_fileview_root(self, path, *, tabbed=False):
@@ -663,8 +673,10 @@ class FilenamePrompt(_BasePrompt):
log.prompt.exception("Failed to get directory information")
return
- root = self._file_model.setRootPath(path)
- self._file_view.setRootIndex(root)
+ self._root_index = self._file_model.setRootPath(path)
+ self._file_view.setRootIndex(self._root_index)
+
+ self._directories_hide_show_model()
@pyqtSlot(QModelIndex)
def _insert_path(self, index, *, clicked=True):
@@ -764,15 +776,12 @@ class FilenamePrompt(_BasePrompt):
self._insert_path(idx, clicked=False)
def _do_completion(self, idx, which):
- filename = self._file_model.fileName(idx)
- while not filename.startswith(self._to_complete) and idx.isValid():
+ while idx.isValid() and self._file_view.isIndexHidden(idx):
if which == 'prev':
idx = self._file_view.indexAbove(idx)
else:
assert which == 'next', which
idx = self._file_view.indexBelow(idx)
- filename = self._file_model.fileName(idx)
-
return idx
def _allowed_commands(self):