Make a branch to make krunner Good Enough For Aaron™.
[kdebase/uwolfer.git] / workspace / klipper / clipboardpoll.h
blob9559dd55192e568524326387e5f20028cec65635
1 // -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8; -*-
2 /* This file is part of the KDE project
3 Copyright (C) 2003 by Lubos Lunak <l.lunak@kde.org>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; see the file COPYING. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
20 #ifndef _CLIPBOARDPOLL_H_
21 #define _CLIPBOARDPOLL_H_
23 #include <QWidget>
24 #include <QTimer>
25 #include <X11/Xlib.h>
26 #include <fixx11h.h>
28 class ClipboardPoll
29 : public QWidget
31 Q_OBJECT
32 public:
33 ClipboardPoll();
34 Q_SIGNALS:
35 void clipboardChanged( bool selectionMode );
36 protected:
37 virtual bool x11Event( XEvent* );
38 private Q_SLOTS:
39 void timeout();
40 void qtSelectionChanged();
41 void qtClipboardChanged();
42 private:
43 struct SelectionData
45 Atom atom;
46 Atom sentinel_atom;
47 Atom timestamp_atom;
48 Window last_owner;
49 bool owner_is_qt;
50 Time last_change;
51 bool waiting_for_timestamp;
52 Time waiting_x_time;
54 void updateQtOwnership( SelectionData& data );
55 bool checkTimestamp( SelectionData& data );
56 bool changedTimestamp( SelectionData& data, const XEvent& e );
57 void initPolling();
58 QTimer timer;
59 SelectionData selection;
60 SelectionData clipboard;
61 Atom xa_clipboard;
62 Atom xa_timestamp;
63 int xfixes_event_base;
66 #endif