|
5 | 5 | """The main browser widget for QtWebEngine."""
|
6 | 6 |
|
7 | 7 | import mimetypes
|
8 |
| -from typing import List, Iterable |
| 8 | +from typing import List, Iterable, Optional |
9 | 9 |
|
10 | 10 | from qutebrowser.qt import machinery
|
11 | 11 | from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QUrl
|
@@ -316,29 +316,37 @@ def acceptNavigationRequest(self,
|
316 | 316 | def chooseFiles(
|
317 | 317 | self,
|
318 | 318 | mode: QWebEnginePage.FileSelectionMode,
|
319 |
| - old_files: Iterable[str], |
320 |
| - accepted_mimetypes: Iterable[str], |
| 319 | + old_files: Iterable[Optional[str]], |
| 320 | + accepted_mimetypes: Iterable[Optional[str]], |
321 | 321 | ) -> List[str]:
|
322 | 322 | """Override chooseFiles to (optionally) invoke custom file uploader."""
|
323 |
| - extra_suffixes = extra_suffixes_workaround(accepted_mimetypes) |
| 323 | + accepted_mimetypes_filtered = [m for m in accepted_mimetypes if m is not None] |
| 324 | + old_files_filtered = [f for f in old_files if f is not None] |
| 325 | + extra_suffixes = extra_suffixes_workaround(accepted_mimetypes_filtered) |
324 | 326 | if extra_suffixes:
|
325 | 327 | log.webview.debug(
|
326 | 328 | "adding extra suffixes to filepicker: "
|
327 |
| - f"before={accepted_mimetypes} " |
| 329 | + f"before={accepted_mimetypes_filtered} " |
328 | 330 | f"added={extra_suffixes}",
|
329 | 331 | )
|
330 |
| - accepted_mimetypes = list(accepted_mimetypes) + list(extra_suffixes) |
| 332 | + accepted_mimetypes_filtered = list( |
| 333 | + accepted_mimetypes_filtered |
| 334 | + ) + list(extra_suffixes) |
331 | 335 |
|
332 | 336 | handler = config.val.fileselect.handler
|
333 | 337 | if handler == "default":
|
334 |
| - return super().chooseFiles(mode, old_files, accepted_mimetypes) |
| 338 | + return super().chooseFiles( |
| 339 | + mode, old_files_filtered, accepted_mimetypes_filtered, |
| 340 | + ) |
335 | 341 | assert handler == "external", handler
|
336 | 342 | try:
|
337 | 343 | qb_mode = _QB_FILESELECTION_MODES[mode]
|
338 | 344 | except KeyError:
|
339 | 345 | log.webview.warning(
|
340 | 346 | f"Got file selection mode {mode}, but we don't support that!"
|
341 | 347 | )
|
342 |
| - return super().chooseFiles(mode, old_files, accepted_mimetypes) |
| 348 | + return super().chooseFiles( |
| 349 | + mode, old_files_filtered, accepted_mimetypes_filtered, |
| 350 | + ) |
343 | 351 |
|
344 | 352 | return shared.choose_file(qb_mode=qb_mode)
|
0 commit comments