1/********************************************************************
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
6Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org>
7
8This program is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program. If not, see <http://www.gnu.org/licenses/>.
20*********************************************************************/
21
22#ifndef MAIN_H
23#define MAIN_H
24
25#include <kapplication.h>
26#include <KDE/KSelectionWatcher>
27
28namespace KWin
29{
30
31class KWinSelectionOwner
32 : public KSelectionOwner
33{
34 Q_OBJECT
35public:
36 explicit KWinSelectionOwner(int screen);
37protected:
38 virtual bool genericReply(Atom target, Atom property, Window requestor);
39 virtual void replyTargets(Atom property, Window requestor);
40 virtual void getAtoms();
41private:
42 Atom make_selection_atom(int screen);
43 static Atom xa_version;
44};
45
46class Application : public KApplication
47{
48 Q_OBJECT
49public:
50 Application();
51 ~Application();
52
53protected:
54 bool x11EventFilter(XEvent*);
55 bool notify(QObject* o, QEvent* e);
56 static void crashHandler(int signal);
57
58private slots:
59 void lostSelection();
60 void resetCrashesCount();
61
62private:
63 KWinSelectionOwner owner;
64 static int crashes;
65};
66
67} // namespace
68
69#endif
70