• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kde-workspace API Reference
  • KDE Home
  • Contact Us
 

KWin

  • kde-4.x
  • kde-workspace
  • kwin
main.h
Go to the documentation of this file.
1 /********************************************************************
2  KWin - the KDE window manager
3  This file is part of the KDE project.
4 
5 Copyright (C) 1999, 2000 Matthias Ettrich <[email protected]>
6 Copyright (C) 2003 Lubos Lunak <[email protected]>
7 
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12 
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 *********************************************************************/
21 
22 #ifndef MAIN_H
23 #define MAIN_H
24 
25 #include <KSelectionWatcher>
26 #include <KSelectionOwner>
27 // Qt
28 #include <QApplication>
29 #include <QAbstractNativeEventFilter>
30 
31 namespace KWin
32 {
33 
34 class XcbEventFilter : public QAbstractNativeEventFilter
35 {
36 public:
37  virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long int *result) override;
38 };
39 
40 class KWinSelectionOwner
41  : public KSelectionOwner
42 {
43  Q_OBJECT
44 public:
45  explicit KWinSelectionOwner(int screen);
46 protected:
47  virtual bool genericReply(xcb_atom_t target, xcb_atom_t property, xcb_window_t requestor);
48  virtual void replyTargets(xcb_atom_t property, xcb_window_t requestor);
49  virtual void getAtoms();
50 private:
51  xcb_atom_t make_selection_atom(int screen);
52  static xcb_atom_t xa_version;
53 };
54 
55 class Application : public QApplication
56 {
57  Q_OBJECT
58 public:
65  enum OperationMode {
69  OperationModeX11,
74  OperationModeWaylandAndX11
75  };
76  Application(int &argc, char **argv);
77  ~Application();
78 
79  void setReplace(bool replace);
80  void setConfigLock(bool lock);
81 
82  void start();
88  OperationMode operationMode() const;
89  void setOperationMode(OperationMode mode);
90  bool shouldUseWaylandForCompositing() const;
91  bool requiresCompositing() const;
92 
93  static void setCrashCount(int count);
94  static bool wasCrash();
95 
96 protected:
97  bool notify(QObject* o, QEvent* e);
98  static void crashHandler(int signal);
99 
100 private Q_SLOTS:
101  void lostSelection();
102  void resetCrashesCount();
103 
104 private:
105  void crashChecking();
106  QScopedPointer<KWinSelectionOwner> owner;
107  QScopedPointer<XcbEventFilter> m_eventFilter;
108  bool m_replace;
109  bool m_configLock;
110  OperationMode m_operationMode;
111  static int crashes;
112 };
113 
114 inline static Application *kwinApp()
115 {
116  return static_cast<Application*>(QCoreApplication::instance());
117 }
118 
119 } // namespace
120 
121 #endif
KWin::Application::OperationMode
OperationMode
This enum provides the various operation modes of KWin depending on the available Windowing Systems a...
Definition: main.h:65
KWin::Application::operationMode
OperationMode operationMode() const
The operation mode used by KWin.
Definition: main.cpp:204
QEvent
KWin::Application::setCrashCount
static void setCrashCount(int count)
Definition: main.cpp:370
QByteArray
KSelectionOwner
KWin::Application::OperationModeWaylandAndX11
KWin uses X11 for managing windows, but renders to a Wayland compositor.
Definition: main.h:74
KWin::kwinApp
static Application * kwinApp()
Definition: main.h:114
QApplication
KWin::XcbEventFilter::nativeEventFilter
virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long int *result) override
Definition: main.cpp:380
QAbstractNativeEventFilter
KWin::XcbEventFilter
Definition: main.h:34
KWin::Application::shouldUseWaylandForCompositing
bool shouldUseWaylandForCompositing() const
Definition: main.cpp:214
KWin::KWinSelectionOwner::getAtoms
virtual void getAtoms()
Definition: main.cpp:99
QCoreApplication::lock
void lock()
KWin::Application
Definition: main.h:55
KWin::Application::start
void start()
Definition: main.cpp:224
KWin::KWinSelectionOwner::KWinSelectionOwner
KWinSelectionOwner(int screen)
Definition: main.cpp:78
KWin::KWinSelectionOwner::replyTargets
virtual void replyTargets(xcb_atom_t property, xcb_window_t requestor)
Definition: main.cpp:114
KWin::KWinSelectionOwner
Definition: main.h:40
KWin::Application::wasCrash
static bool wasCrash()
Definition: main.cpp:375
QObject
QScopedPointer
QCoreApplication::instance
QCoreApplication * instance()
KWin::Application::setOperationMode
void setOperationMode(OperationMode mode)
Definition: main.cpp:209
KWin::Application::Application
Application(int &argc, char **argv)
Definition: main.cpp:184
KWin::Application::~Application
~Application()
Definition: main.cpp:291
KWin::Application::crashHandler
static void crashHandler(int signal)
Definition: main.cpp:352
KWin::Application::notify
bool notify(QObject *o, QEvent *e)
Definition: main.cpp:340
KWin::Application::setConfigLock
void setConfigLock(bool lock)
Definition: main.cpp:194
KWin::Application::requiresCompositing
bool requiresCompositing() const
Definition: main.cpp:219
QCoreApplication::argc
int argc()
xcb_window_t
QCoreApplication::argv
char ** argv()
KWin::Application::OperationModeX11
KWin uses only X11 for managing windows and compositing.
Definition: main.h:69
KWin::KWinSelectionOwner::genericReply
virtual bool genericReply(xcb_atom_t target, xcb_atom_t property, xcb_window_t requestor)
Definition: main.cpp:123
KWin::Application::setReplace
void setReplace(bool replace)
Definition: main.cpp:199
This file is part of the KDE documentation.
Documentation copyright © 1996-2019 The KDE developers.
Generated on Sun Dec 8 2019 03:18:07 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KWin

Skip menu "KWin"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kde-workspace API Reference

Skip menu "kde-workspace API Reference"
  • KWin
  •   KWin Decoration Library
  •   KWin Effects Library
  • Plasma
  • Plasma
  •   Applets
  •   Engines
  •   libkworkspace
  •   libtaskmanager
  • System Settings
  •   SystemSettingsView

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal