diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index c8045c0e8..cc4ba823f 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -742,7 +742,7 @@ class FilenamePrompt(_BasePrompt): if clicked: path += os.sep - else: + elif path != "/": # On Windows, when we have C:\foo and tab over .., we get C:\ path = path.rstrip(os.sep) diff --git a/tests/unit/mainwindow/test_prompt.py b/tests/unit/mainwindow/test_prompt.py index 67403101c..5b630ca3b 100644 --- a/tests/unit/mainwindow/test_prompt.py +++ b/tests/unit/mainwindow/test_prompt.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later import os +from PyQt5.QtGui import QKeySequence import pytest from qutebrowser.qt.core import Qt @@ -113,3 +114,9 @@ class TestFileCompletion: """With / as path, show root contents.""" prompt = get_prompt('/') assert prompt._file_model.rootPath() == '/' + + def test_tab_root(self, get_prompt, qtbot): + prompt = get_prompt('/') + qtbot.keyPress(prompt._lineedit, Qt.Key_U, Qt.ControlModifier) + prompt.item_focus('next') + assert prompt._lineedit.text() == '/' \ No newline at end of file