summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2023-11-12 12:26:02 +1300
committertoofar <toofar@spalge.com>2023-11-13 18:45:18 +1300
commit54e3993a59e862d8d6776ed6f6dbc0eb86c2ce67 (patch)
treeba3fb7edf65691e1688d9d9a5eb9805647850797
parent88f165fd771daca404b8efc44106999602cbddcb (diff)
downloadqutebrowser-54e3993a59e862d8d6776ed6f6dbc0eb86c2ce67.tar.gz
qutebrowser-54e3993a59e862d8d6776ed6f6dbc0eb86c2ce67.zip
Adapt chooseFiles() for PyQt6 type hints
The type of the two list arguments of chooseFiles() have changed from `Iterable[str]` to `Iterable[Optional[str]]`. I'm not sure it makes much sense to have individual list elements as None. That seems like a pretty unlikely case. So we could just put an ignore comment somewhere. I've added another copy of the lists, with longer names, to strip any hypothetical Nones out. This allows us to be backwards compatible with the old type hints (and the current Qt5 ones), since that doesn't have the Optional part in the signature. ref: https://github.com/qutebrowser/qutebrowser/pull/7990
-rw-r--r--qutebrowser/browser/webengine/webview.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py
index d6c90cb46..a6f2ae113 100644
--- a/qutebrowser/browser/webengine/webview.py
+++ b/qutebrowser/browser/webengine/webview.py
@@ -5,7 +5,7 @@
"""The main browser widget for QtWebEngine."""
import mimetypes
-from typing import List, Iterable
+from typing import List, Iterable, Optional
from qutebrowser.qt import machinery
from qutebrowser.qt.core import pyqtSignal, pyqtSlot, QUrl
@@ -316,22 +316,28 @@ class WebEnginePage(QWebEnginePage):
def chooseFiles(
self,
mode: QWebEnginePage.FileSelectionMode,
- old_files: Iterable[str],
- accepted_mimetypes: Iterable[str],
+ old_files: Iterable[Optional[str]],
+ accepted_mimetypes: Iterable[Optional[str]],
) -> List[str]:
"""Override chooseFiles to (optionally) invoke custom file uploader."""
- extra_suffixes = extra_suffixes_workaround(accepted_mimetypes)
+ accepted_mimetypes_filtered = [m for m in accepted_mimetypes if m is not None]
+ old_files_filtered = [f for f in old_files if f is not None]
+ extra_suffixes = extra_suffixes_workaround(accepted_mimetypes_filtered)
if extra_suffixes:
log.webview.debug(
"adding extra suffixes to filepicker: "
- f"before={accepted_mimetypes} "
+ f"before={accepted_mimetypes_filtered} "
f"added={extra_suffixes}",
)
- accepted_mimetypes = list(accepted_mimetypes) + list(extra_suffixes)
+ accepted_mimetypes_filtered = list(
+ accepted_mimetypes_filtered
+ ) + list(extra_suffixes)
handler = config.val.fileselect.handler
if handler == "default":
- return super().chooseFiles(mode, old_files, accepted_mimetypes)
+ return super().chooseFiles(
+ mode, old_files_filtered, accepted_mimetypes_filtered,
+ )
assert handler == "external", handler
try:
qb_mode = _QB_FILESELECTION_MODES[mode]
@@ -339,6 +345,8 @@ class WebEnginePage(QWebEnginePage):
log.webview.warning(
f"Got file selection mode {mode}, but we don't support that!"
)
- return super().chooseFiles(mode, old_files, accepted_mimetypes)
+ return super().chooseFiles(
+ mode, old_files_filtered, accepted_mimetypes_filtered,
+ )
return shared.choose_file(qb_mode=qb_mode)