Meshroom/meshroom/ui/components/clipboard.py
Candice Bentéjac 08d502f4a6 Clear clipboard's content when exiting
Workaround for a bug in QClipboard that occurs when the clipboard
has been used within the app and its content exceeds a certain size
on X11/XCB.
This issue will hold up the app when exiting and is present in Qt5
versions.

With this workaround, the content of the clipboard will be lost when
exiting, but the app will exit normally.
2022-08-19 15:24:30 +02:00

31 lines
998 B
Python

from PySide2.QtCore import Slot, QObject
from PySide2.QtGui import QClipboard
class ClipboardHelper(QObject):
"""
Simple wrapper around a QClipboard with methods exposed as Slots for QML use.
"""
def __init__(self, parent=None):
super(ClipboardHelper, self).__init__(parent)
self._clipboard = QClipboard(parent=self)
def __del__(self):
# Workaround to avoid the "QXcbClipboard: Unable to receive an event from the clipboard manager
# in a reasonable time" that will hold up the application when exiting if the clipboard has been
# used at least once and its content exceeds a certain size (on X11/XCB).
# The bug occurs in QClipboard and is present on all Qt5 versions.
self.clear()
@Slot(str)
def setText(self, value):
self._clipboard.setText(value)
@Slot(result=str)
def getText(self):
return self._clipboard.text()
@Slot()
def clear(self):
self._clipboard.clear()