mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
Prioritise hiding the virtual keyboard
Now that the virtual keyboard appears right over the panel, change the close window button to a hide button. When the virtual keyboard is hidden, now you get the big X to close.
This commit is contained in:
parent
17001ddef9
commit
31fceb18f8
4 changed files with 28 additions and 8 deletions
|
|
@ -37,6 +37,7 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
|
||||||
Notifications
|
Notifications
|
||||||
Wayland
|
Wayland
|
||||||
)
|
)
|
||||||
|
find_package(KWinDBusInterface)
|
||||||
|
|
||||||
include(CheckIncludeFiles)
|
include(CheckIncludeFiles)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
set(taskpanel_SRCS
|
qt5_add_dbus_interfaces(DBUS_SRCS ${KWIN_VIRTUALKEYBOARD_INTERFACE})
|
||||||
taskpanel.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(plasma_containment_phone_taskpanel MODULE ${taskpanel_SRCS})
|
add_library(plasma_containment_phone_taskpanel MODULE taskpanel.cpp ${DBUS_SRCS})
|
||||||
|
|
||||||
kcoreaddons_desktop_to_json(plasma_containment_phone_taskpanel package/metadata.desktop)
|
kcoreaddons_desktop_to_json(plasma_containment_phone_taskpanel package/metadata.desktop)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||||
import org.kde.kquickcontrolsaddons 2.0
|
import org.kde.kquickcontrolsaddons 2.0
|
||||||
|
|
||||||
import org.kde.plasma.private.nanoshell 2.0 as NanoShell
|
import org.kde.plasma.private.nanoshell 2.0 as NanoShell
|
||||||
|
|
||||||
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
|
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
|
||||||
|
import org.kde.plasma.phone.taskpanel 1.0 as TaskPanel
|
||||||
|
|
||||||
PlasmaCore.ColorScope {
|
PlasmaCore.ColorScope {
|
||||||
id: root
|
id: root
|
||||||
|
|
@ -266,9 +266,13 @@ PlasmaCore.ColorScope {
|
||||||
height: parent.height
|
height: parent.height
|
||||||
width: parent.width*0.8/3
|
width: parent.width*0.8/3
|
||||||
mouseArea: mainMouseArea
|
mouseArea: mainMouseArea
|
||||||
enabled: plasmoid.nativeInterface.hasCloseableActiveWindow && !taskSwitcher.visible
|
enabled: TaskPanel.KWinVirtualKeyboard.active || (plasmoid.nativeInterface.hasCloseableActiveWindow && !taskSwitcher.visible)
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (TaskPanel.KWinVirtualKeyboard.active) {
|
||||||
|
TaskPanel.KWinVirtualKeyboard.active = false
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!plasmoid.nativeInterface.hasCloseableActiveWindow) {
|
if (!plasmoid.nativeInterface.hasCloseableActiveWindow) {
|
||||||
|
|
@ -286,7 +290,7 @@ PlasmaCore.ColorScope {
|
||||||
implicitWidth: implicitHeight
|
implicitWidth: implicitHeight
|
||||||
opacity: parent.enabled ? 1 : 0.5
|
opacity: parent.enabled ? 1 : 0.5
|
||||||
svg: panelSvg
|
svg: panelSvg
|
||||||
elementId: "mobile-close-app"
|
elementId: TaskPanel.KWinVirtualKeyboard.active ? "go-down" : "mobile-close-app"
|
||||||
|
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation { duration: units.shortDuration }
|
NumberAnimation { duration: units.shortDuration }
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
#include <QQuickWindow>
|
#include <QQuickWindow>
|
||||||
|
|
||||||
#include <Plasma/Package>
|
#include <Plasma/Package>
|
||||||
|
|
||||||
#include <KWayland/Client/connection_thread.h>
|
#include <KWayland/Client/connection_thread.h>
|
||||||
#include <KWayland/Client/plasmawindowmanagement.h>
|
#include <KWayland/Client/plasmawindowmanagement.h>
|
||||||
#include <KWayland/Client/plasmawindowmodel.h>
|
#include <KWayland/Client/plasmawindowmodel.h>
|
||||||
|
|
@ -20,9 +19,23 @@
|
||||||
#include <KWayland/Client/registry.h>
|
#include <KWayland/Client/registry.h>
|
||||||
#include <KWayland/Client/surface.h>
|
#include <KWayland/Client/surface.h>
|
||||||
|
|
||||||
|
#include <virtualkeyboardinterface.h>
|
||||||
|
|
||||||
static const QString s_kwinService = QStringLiteral("org.kde.KWin");
|
static const QString s_kwinService = QStringLiteral("org.kde.KWin");
|
||||||
constexpr int ACTIVE_WINDOW_UPDATE_INVERVAL = 250;
|
constexpr int ACTIVE_WINDOW_UPDATE_INVERVAL = 250;
|
||||||
|
|
||||||
|
// helper class to expose the NOTIFY in the properties
|
||||||
|
class KwinVirtualKeyboardInterface : public OrgKdeKwinVirtualKeyboardInterface
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
|
||||||
|
Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
|
||||||
|
public:
|
||||||
|
KwinVirtualKeyboardInterface() :
|
||||||
|
OrgKdeKwinVirtualKeyboardInterface(QStringLiteral("org.kde.KWin"), QStringLiteral("/VirtualKeyboard"), QDBusConnection::sessionBus())
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
TaskPanel::TaskPanel(QObject *parent, const QVariantList &args)
|
TaskPanel::TaskPanel(QObject *parent, const QVariantList &args)
|
||||||
: Plasma::Containment(parent, args)
|
: Plasma::Containment(parent, args)
|
||||||
, m_showingDesktop(false)
|
, m_showingDesktop(false)
|
||||||
|
|
@ -34,6 +47,10 @@ TaskPanel::TaskPanel(QObject *parent, const QVariantList &args)
|
||||||
m_activeTimer->setInterval(ACTIVE_WINDOW_UPDATE_INVERVAL);
|
m_activeTimer->setInterval(ACTIVE_WINDOW_UPDATE_INVERVAL);
|
||||||
connect(m_activeTimer, &QTimer::timeout, this, &TaskPanel::updateActiveWindow);
|
connect(m_activeTimer, &QTimer::timeout, this, &TaskPanel::updateActiveWindow);
|
||||||
initWayland();
|
initWayland();
|
||||||
|
|
||||||
|
qmlRegisterSingletonType<OrgKdeKwinVirtualKeyboardInterface>("org.kde.plasma.phone.taskpanel", 1, 0, "KWinVirtualKeyboard", [](QQmlEngine *, QJSEngine *) -> QObject * {
|
||||||
|
return new KwinVirtualKeyboardInterface;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskPanel::~TaskPanel() = default;
|
TaskPanel::~TaskPanel() = default;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue