9e54cb5a1f
The event filter is only used to let Qt compose a QKeyEvent from an x11 event for grabbed key events. On Wayland we don't need it as we can generate good QKeyEvents ourself. This means less event processing as the events no longer need to pass through the Workspace::workspaceEvent. In addition it fixes a regression in LockScreenTest::testEffectsKeyboard caused by the LockScreenEventFilter sending a QKeyEvent to KSldApp. This event got intercepted by the global event filter making the test rightfully fail.
65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
/********************************************************************
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
Copyright (C) 2014 Martin Gräßlin <mgraesslin@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*********************************************************************/
|
|
#ifndef KWIN_MAIN_X11_H
|
|
#define KWIN_MAIN_X11_H
|
|
#include "main.h"
|
|
|
|
namespace KWin
|
|
{
|
|
|
|
class KWinSelectionOwner
|
|
: public KSelectionOwner
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit KWinSelectionOwner(int screen);
|
|
protected:
|
|
virtual bool genericReply(xcb_atom_t target, xcb_atom_t property, xcb_window_t requestor);
|
|
virtual void replyTargets(xcb_atom_t property, xcb_window_t requestor);
|
|
virtual void getAtoms();
|
|
private:
|
|
xcb_atom_t make_selection_atom(int screen);
|
|
static xcb_atom_t xa_version;
|
|
};
|
|
|
|
class ApplicationX11 : public Application
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
ApplicationX11(int &argc, char **argv);
|
|
virtual ~ApplicationX11();
|
|
|
|
void setReplace(bool replace);
|
|
|
|
protected:
|
|
void performStartup() override;
|
|
bool notify(QObject *o, QEvent *e) override;
|
|
|
|
private Q_SLOTS:
|
|
void lostSelection();
|
|
|
|
private:
|
|
QScopedPointer<KWinSelectionOwner> owner;
|
|
bool m_replace;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|