diff options
author | Florian Bruhin <git@the-compiler.org> | 2017-07-11 23:41:08 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2017-07-12 07:43:18 +0200 |
commit | 0d704043ecaab52640ef83e6ecdc6b8581f679ee (patch) | |
tree | 9b4b58c005e622d13305b68879ff947144dbdc1c | |
parent | b11abb028b75f8b4a9149aaf20881b3cc22c7dbb (diff) | |
download | qutebrowser-0d704043ecaab52640ef83e6ecdc6b8581f679ee.tar.gz qutebrowser-0d704043ecaab52640ef83e6ecdc6b8581f679ee.zip |
Fix printing on macOS
Fixes #2798
(cherry picked from commit 53620ecce4db7c92d971d12147e3d178fe9d175f)
-rw-r--r-- | CHANGELOG.asciidoc | 1 | ||||
-rw-r--r-- | qutebrowser/browser/commands.py | 16 |
2 files changed, 14 insertions, 3 deletions
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 20f4ed364..2a8e2869a 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -22,6 +22,7 @@ Fixes - Fixed empty space being shown after tabs in the tabbar in some cases. - Fixed `:restart` in private browsing mode. +- Fixed printing on macOS. v0.11.0 ------- diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 0b448a845..804ad4e6a 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -20,11 +20,12 @@ """Command dispatcher for TabbedBrowser.""" import os +import sys import os.path import shlex import functools -from PyQt5.QtWidgets import QApplication, QTabBar +from PyQt5.QtWidgets import QApplication, QTabBar, QDialog from PyQt5.QtCore import Qt, QUrl, QEvent, QUrlQuery from PyQt5.QtGui import QKeyEvent from PyQt5.QtPrintSupport import QPrintDialog, QPrintPreviewDialog @@ -436,9 +437,18 @@ class CommandDispatcher: message.error("Printing failed!") diag.deleteLater() + def do_print(): + """Called when the dialog was closed.""" + tab.printing.to_printer(diag.printer(), print_callback) + diag = QPrintDialog(tab) - diag.open(lambda: tab.printing.to_printer(diag.printer(), - print_callback)) + if sys.platform == 'darwin': + # For some reason we get a segfault when using open() on macOS + ret = diag.exec_() + if ret == QDialog.Accepted: + do_print() + else: + diag.open(do_print) @cmdutils.register(instance='command-dispatcher', name='print', scope='window') |