diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-07-13 10:25:46 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-07-13 10:25:46 +0200 |
commit | 38092895810ed22ed69b9ecc432277d7d9f611dc (patch) | |
tree | b552a2c548faad6b77b8e1d568c1680a5ff310e2 /qutebrowser | |
parent | 0001d4fe20a4cdef9dd628fad220e09a03618932 (diff) | |
parent | d638e14b49b3b193202d5576cd0c4d848e178232 (diff) | |
download | qutebrowser-38092895810ed22ed69b9ecc432277d7d9f611dc.tar.gz qutebrowser-38092895810ed22ed69b9ecc432277d7d9f611dc.zip |
Merge remote-tracking branch 'origin/pr/6507'
Diffstat (limited to 'qutebrowser')
-rw-r--r-- | qutebrowser/mainwindow/prompt.py | 23 |
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): |