From 0d704043ecaab52640ef83e6ecdc6b8581f679ee Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 11 Jul 2017 23:41:08 +0200 Subject: Fix printing on macOS Fixes #2798 (cherry picked from commit 53620ecce4db7c92d971d12147e3d178fe9d175f) --- CHANGELOG.asciidoc | 1 + 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') -- cgit v1.2.3-54-g00ecf