Commit 8add14fe authored by Martin Flöser's avatar Martin Flöser

[wayland] Drop hack for faking input for Qt popups

This reverts 29c2ae57.
parent 28b48e69
......@@ -206,7 +206,6 @@ void ApplicationWayland::continueStartupWithX()
Xcb::sync(); // Trigger possible errors, there's still a chance to abort
notifyKSplash();
waylandServer()->createDummyQtWindow();
}
void ApplicationWayland::createX11Connection()
......
......@@ -115,10 +115,6 @@ void WaylandServer::init(const QByteArray &socketName)
}
if (surface->client() == m_internalConnection.server) {
// one of Qt's windows
if (m_dummyWindowSurface && (m_dummyWindowSurface->id() == surface->surface()->id())) {
fakeDummyQtWindowInput();
return;
}
// HACK: in order to get Qt to not block for frame rendered, we immediatelly emit the
// frameRendered once we get a new damage event.
auto s = surface->surface();
......@@ -310,37 +306,6 @@ void WaylandServer::removeClient(ShellClient *c)
emit shellClientRemoved(c);
}
void WaylandServer::createDummyQtWindow()
{
if (m_dummyWindow) {
return;
}
m_dummyWindow.reset(new QWindow());
m_dummyWindow->setSurfaceType(QSurface::RasterSurface);
m_dummyWindow->show();
m_dummyWindowSurface = KWayland::Client::Surface::fromWindow(m_dummyWindow.data());
}
void WaylandServer::fakeDummyQtWindowInput()
{
// we need to fake Qt into believing it has got any seat events
// this is done only when receiving either a key press or button.
// we simulate by sending a button press and release
auto surface = KWayland::Server::SurfaceInterface::get(m_dummyWindowSurface->id(), m_internalConnection.server);
if (!surface) {
return;
}
const auto oldSeatSurface = m_seat->focusedPointerSurface();
const auto oldPos = m_seat->focusedPointerSurfacePosition();
m_seat->setFocusedPointerSurface(surface, QPoint(0, 0));
m_seat->setPointerPos(QPointF(0, 0));
m_seat->pointerButtonPressed(Qt::LeftButton);
m_seat->pointerButtonReleased(Qt::LeftButton);
m_internalConnection.server->flush();
m_dummyWindow->hide();
m_seat->setFocusedPointerSurface(oldSeatSurface, oldPos);
}
void WaylandServer::dispatch()
{
if (!m_display) {
......
......@@ -109,7 +109,6 @@ public:
int createInputMethodConnection();
void createInternalConnection();
void createDummyQtWindow();
void initWorkspace();
KWayland::Server::ClientConnection *xWaylandConnection() const {
......@@ -138,7 +137,6 @@ Q_SIGNALS:
void shellClientRemoved(ShellClient*);
private:
void fakeDummyQtWindowInput();
quint16 createClientId(KWayland::Server::ClientConnection *c);
KWayland::Server::Display *m_display = nullptr;
KWayland::Server::CompositorInterface *m_compositor = nullptr;
......@@ -160,8 +158,6 @@ private:
AbstractBackend *m_backend = nullptr;
QList<ShellClient*> m_clients;
QList<ShellClient*> m_internalClients;
QScopedPointer<QWindow> m_dummyWindow;
KWayland::Client::Surface *m_dummyWindowSurface = nullptr;
QHash<KWayland::Server::ClientConnection*, quint16> m_clientIds;
KWIN_SINGLETON(WaylandServer)
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment