diff --git a/cura/CuraActions.py b/cura/CuraActions.py index ee75665e0b..e585b261d0 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -1,4 +1,8 @@ -from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, pyqtProperty +from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, pyqtProperty, QUrl +from PyQt5.QtGui import QDesktopServices + +from UM.Event import CallFunctionEvent +from UM.Application import Application import webbrowser @@ -8,8 +12,16 @@ class CuraActions(QObject): @pyqtSlot() def openDocumentation(self): - webbrowser.open("http://ultimaker.com/en/support/software") + # Starting a web browser from a signal handler connected to a menu will crash on windows. + # So instead, defer the call to the next run of the event loop, since that does work. + # Note that weirdly enough, only signal handlers that open a web browser fail like that. + event = CallFunctionEvent(self._openUrl, [QUrl("http://ultimaker.com/en/support/software")], {}) + Application.getInstance().functionEvent(event) @pyqtSlot() def openBugReportPage(self): - webbrowser.open("http://github.com/Ultimaker/Cura/issues") + event = CallFunctionEvent(self._openUrl, [QUrl("http://github.com/Ultimaker/Cura/issues")], {}) + Application.getInstance().functionEvent(event) + + def _openUrl(self, url): + QDesktopServices.openUrl(url) \ No newline at end of file