summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2017-07-11 23:41:08 +0200
committerFlorian Bruhin <git@the-compiler.org>2017-07-12 07:43:18 +0200
commit0d704043ecaab52640ef83e6ecdc6b8581f679ee (patch)
tree9b4b58c005e622d13305b68879ff947144dbdc1c
parentb11abb028b75f8b4a9149aaf20881b3cc22c7dbb (diff)
downloadqutebrowser-0d704043ecaab52640ef83e6ecdc6b8581f679ee.tar.gz
qutebrowser-0d704043ecaab52640ef83e6ecdc6b8581f679ee.zip
Fix printing on macOS
Fixes #2798 (cherry picked from commit 53620ecce4db7c92d971d12147e3d178fe9d175f)
-rw-r--r--CHANGELOG.asciidoc1
-rw-r--r--qutebrowser/browser/commands.py16
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')