summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbclipboard.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2011-06-08 22:00:39 +0200
committerLars Knoll <lars.knoll@nokia.com>2011-06-20 12:50:16 +0200
commit813139f4f5bd78ed16577a3ae214b2cb91ef5170 (patch)
tree2e6873ad37951d1561a95a915ceadcfacba87565 /src/plugins/platforms/xcb/qxcbclipboard.h
parentfc266713cc20d0f90524bc2ec7e8fd6b57c61c99 (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.h18
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;