diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2011-06-08 22:00:39 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2011-06-20 12:50:16 +0200 |
commit | 813139f4f5bd78ed16577a3ae214b2cb91ef5170 (patch) | |
tree | 2e6873ad37951d1561a95a915ceadcfacba87565 /src/plugins/platforms/xcb/qxcbclipboard.h | |
parent | fc266713cc20d0f90524bc2ec7e8fd6b57c61c99 (diff) |
Enhance Xcb clipboard code
Some cleanup on the data structures.
Properly implement support for timestamps on each
selection.
Transfer selections to the clipboard manager on
exit if it exists.
Properly clear our selection when X11 asks us to
do so.
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbclipboard.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbclipboard.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/plugins/platforms/xcb/qxcbclipboard.h b/src/plugins/platforms/xcb/qxcbclipboard.h index ff2d44144e..db31051ee7 100644 --- a/src/plugins/platforms/xcb/qxcbclipboard.h +++ b/src/plugins/platforms/xcb/qxcbclipboard.h @@ -48,16 +48,19 @@ class QXcbConnection; class QXcbScreen; +class QXcbClipboardMime; class QXcbClipboard : public QXcbObject, public QPlatformClipboard { public: QXcbClipboard(QXcbConnection *connection); + ~QXcbClipboard(); QMimeData *mimeData(QClipboard::Mode mode); void setMimeData(QMimeData *data, QClipboard::Mode mode); bool supportsMode(QClipboard::Mode mode) const; + bool ownsMode(QClipboard::Mode mode) const; QXcbScreen *screen() const { return m_screen; } @@ -67,6 +70,7 @@ public: xcb_window_t owner() const; void handleSelectionRequest(xcb_selection_request_event_t *event); + void handleSelectionClearRequest(xcb_selection_clear_event_t *event); bool clipboardReadProperty(xcb_window_t win, xcb_atom_t property, bool deleteProperty, QByteArray *buffer, int *size, xcb_atom_t *type, int *format) const; QByteArray clipboardReadIncrementalProperty(xcb_window_t win, xcb_atom_t property, int nbytes, bool nullterm); @@ -77,20 +81,20 @@ public: QByteArray getSelection(xcb_atom_t selection, xcb_atom_t target, xcb_atom_t property); private: - void setOwner(xcb_window_t window); - xcb_generic_event_t *waitForClipboardEvent(xcb_window_t win, int type, int timeout); xcb_atom_t sendTargetsSelection(QMimeData *d, xcb_window_t window, xcb_atom_t property); xcb_atom_t sendSelection(QMimeData *d, xcb_atom_t target, xcb_window_t window, xcb_atom_t property); - QXcbScreen *m_screen; + xcb_atom_t atomForMode(QClipboard::Mode mode) const; + QClipboard::Mode modeForAtom(xcb_atom_t atom) const; - QMimeData *m_xClipboard; - QMimeData *m_clientClipboard; + QXcbScreen *m_screen; - QMimeData *m_xSelection; - QMimeData *m_clientSelection; + // Selection and Clipboard + QXcbClipboardMime *m_xClipboard[2]; + QMimeData *m_clientClipboard[2]; + xcb_timestamp_t m_timestamp[2]; xcb_window_t m_requestor; xcb_window_t m_owner; |