Merge commit '563a5431e35831cb0a8c418835c54d0264d92c78' into Kingdread/windows-drive-cwd

This commit is contained in:
Florian Bruhin 2017-03-30 10:48:39 +02:00
commit 6939f81de7
3 changed files with 13 additions and 19 deletions

View File

@ -184,8 +184,6 @@ class MainWindow(QWidget):
self._keyhint = keyhintwidget.KeyHintView(self.win_id, self) self._keyhint = keyhintwidget.KeyHintView(self.win_id, self)
self._add_overlay(self._keyhint, self._keyhint.update_geometry) self._add_overlay(self._keyhint, self._keyhint.update_geometry)
self._messageview = messageview.MessageView(parent=self)
self._add_overlay(self._messageview, self._messageview.update_geometry)
self._prompt_container = prompt.PromptContainer(self.win_id, self) self._prompt_container = prompt.PromptContainer(self.win_id, self)
self._add_overlay(self._prompt_container, self._add_overlay(self._prompt_container,
@ -195,6 +193,9 @@ class MainWindow(QWidget):
scope='window', window=self.win_id) scope='window', window=self.win_id)
self._prompt_container.hide() self._prompt_container.hide()
self._messageview = messageview.MessageView(parent=self)
self._add_overlay(self._messageview, self._messageview.update_geometry)
if geometry is not None: if geometry is not None:
self._load_geometry(geometry) self._load_geometry(geometry)
elif self.win_id == 0: elif self.win_id == 0:

View File

@ -25,10 +25,9 @@ import collections
import sip import sip
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex, from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex,
QItemSelectionModel, QObject, QEventLoop, QPoint) QItemSelectionModel, QObject, QEventLoop)
from PyQt5.QtWidgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit, from PyQt5.QtWidgets import (QWidget, QGridLayout, QVBoxLayout, QLineEdit,
QLabel, QFileSystemModel, QTreeView, QSizePolicy, QLabel, QFileSystemModel, QTreeView, QSizePolicy)
QToolTip)
from qutebrowser.browser import downloads from qutebrowser.browser import downloads
from qutebrowser.config import style, config from qutebrowser.config import style, config
@ -643,15 +642,11 @@ class FilenamePrompt(_BasePrompt):
self._file_model.directoryLoaded.connect( self._file_model.directoryLoaded.connect(
lambda: self._file_model.sort(0)) lambda: self._file_model.sort(0))
def _show_error(self, msg):
log.prompt.error(msg)
QToolTip.showText(self._lineedit.mapToGlobal(QPoint(0, 0)), msg)
def accept(self, value=None): def accept(self, value=None):
text = value if value is not None else self._lineedit.text() text = value if value is not None else self._lineedit.text()
text = downloads.transform_path(text) text = downloads.transform_path(text)
if text is None: if text is None:
self._show_error("Invalid filename") message.error("Invalid filename")
return False return False
self.question.answer = text self.question.answer = text
return True return True
@ -703,13 +698,11 @@ class DownloadFilenamePrompt(FilenamePrompt):
self._file_model.setFilter(QDir.AllDirs | QDir.Drives | QDir.NoDot) self._file_model.setFilter(QDir.AllDirs | QDir.Drives | QDir.NoDot)
def accept(self, value=None): def accept(self, value=None):
text = value if value is not None else self._lineedit.text() done = super().accept(value)
text = downloads.transform_path(text) answer = self.question.answer
if text is None: if answer is not None:
self._show_error("Invalid filename") self.question.answer = downloads.FileDownloadTarget(answer)
return False return done
self.question.answer = downloads.FileDownloadTarget(text)
return True
def download_open(self, cmdline): def download_open(self, cmdline):
self.question.answer = downloads.OpenFileDownloadTarget(cmdline) self.question.answer = downloads.OpenFileDownloadTarget(cmdline)

View File

@ -133,7 +133,7 @@ Feature: Downloading things from a website.
And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log
And I run :prompt-accept COM1 And I run :prompt-accept COM1
And I run :leave-mode And I run :leave-mode
Then "Invalid filename" should be logged Then the error "Invalid filename" should be shown
@windows @windows
Scenario: Downloading a file to a drive-relative working directory Scenario: Downloading a file to a drive-relative working directory
@ -142,7 +142,7 @@ Feature: Downloading things from a website.
And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> text='Please enter a location for <b>http://localhost:*/data/downloads/download.bin</b>' title='Save file to:'>, *" in the log
And I run :prompt-accept C:foobar And I run :prompt-accept C:foobar
And I run :leave-mode And I run :leave-mode
Then "Invalid filename" should be logged Then the error "Invalid filename" should be shown
@windows @windows
Scenario: Downloading a file to a reserved path with :download Scenario: Downloading a file to a reserved path with :download