[tests] Extend paneltest to enable/disable showDesktop mode

* Left button: enable
* Right button: disable
This commit is contained in:
Martin Gräßlin 2015-06-12 20:02:53 +02:00
parent deeb0bc50e
commit fea4b92c92

View file

@ -25,6 +25,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
#include "../src/client/event_queue.h" #include "../src/client/event_queue.h"
#include "../src/client/keyboard.h" #include "../src/client/keyboard.h"
#include "../src/client/plasmashell.h" #include "../src/client/plasmashell.h"
#include "../src/client/plasmawindowmanagement.h"
#include "../src/client/pointer.h" #include "../src/client/pointer.h"
#include "../src/client/registry.h" #include "../src/client/registry.h"
#include "../src/client/seat.h" #include "../src/client/seat.h"
@ -41,6 +42,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
// system // system
#include <unistd.h> #include <unistd.h>
#include <linux/input.h>
using namespace KWayland::Client; using namespace KWayland::Client;
class PanelTest : public QObject class PanelTest : public QObject
@ -66,6 +69,7 @@ private:
Surface *m_surface = nullptr; Surface *m_surface = nullptr;
PlasmaShell *m_plasmaShell = nullptr; PlasmaShell *m_plasmaShell = nullptr;
PlasmaShellSurface *m_plasmaShellSurface = nullptr; PlasmaShellSurface *m_plasmaShellSurface = nullptr;
PlasmaWindowManagement *m_windowManagement = nullptr;
}; };
PanelTest::PanelTest(QObject *parent) PanelTest::PanelTest(QObject *parent)
@ -120,6 +124,30 @@ void PanelTest::setupRegistry(Registry *registry)
connect(registry, &Registry::seatAnnounced, this, connect(registry, &Registry::seatAnnounced, this,
[this, registry](quint32 name, quint32 version) { [this, registry](quint32 name, quint32 version) {
m_seat = registry->createSeat(name, version, this); m_seat = registry->createSeat(name, version, this);
connect(m_seat, &Seat::hasPointerChanged, this,
[this] (bool has) {
if (!has) {
return;
}
auto p = m_seat->createPointer(this);
connect(p, &Pointer::buttonStateChanged, this,
[this] (quint32 serial, quint32 time, quint32 button, KWayland::Client::Pointer::ButtonState state) {
Q_UNUSED(serial)
if (!m_windowManagement) {
return;
}
if (state == Pointer::ButtonState::Released) {
return;
}
if (button == BTN_LEFT) {
m_windowManagement->showDesktop();
} else if (button == BTN_RIGHT) {
m_windowManagement->hideDesktop();
}
}
);
}
);
} }
); );
connect(registry, &Registry::plasmaShellAnnounced, this, connect(registry, &Registry::plasmaShellAnnounced, this,
@ -127,6 +155,16 @@ void PanelTest::setupRegistry(Registry *registry)
m_plasmaShell = registry->createPlasmaShell(name, version, this); m_plasmaShell = registry->createPlasmaShell(name, version, this);
} }
); );
connect(registry, &Registry::plasmaWindowManagementAnnounced, this,
[this, registry] (quint32 name, quint32 version) {
m_windowManagement = registry->createPlasmaWindowManagement(name, version, this);
connect(m_windowManagement, &PlasmaWindowManagement::showingDesktopChanged, this,
[] (bool set) {
qDebug() << "Showing desktop changed, new state: " << set;
}
);
}
);
connect(registry, &Registry::interfacesAnnounced, this, connect(registry, &Registry::interfacesAnnounced, this,
[this] { [this] {
Q_ASSERT(m_compositor); Q_ASSERT(m_compositor);