Support for KWin.registerShortcut() in declarative script
Summary: registerShortcut is available to javascript KWin scripts but was not available to those written in declarative script. BUG: 340225 FIXED-IN: 5.8.4 REVIEW: 129250
This commit is contained in:
parent
9e3fb47259
commit
0c4c529d68
2 changed files with 24 additions and 0 deletions
|
@ -587,6 +587,28 @@ void KWin::JSEngineGlobalMethodsWrapper::registerWindow(QQuickWindow *window)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool KWin::JSEngineGlobalMethodsWrapper::registerShortcut(const QString &name, const QString &text, const QKeySequence& keys, QJSValue function)
|
||||||
|
{
|
||||||
|
if (!function.isCallable()) {
|
||||||
|
qCDebug(KWIN_SCRIPTING) << "Fourth and final argument must be a javascript function";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QAction *a = new QAction(this);
|
||||||
|
a->setObjectName(name);
|
||||||
|
a->setText(text);
|
||||||
|
const QKeySequence shortcut = QKeySequence(keys);
|
||||||
|
KGlobalAccel::self()->setShortcut(a, QList<QKeySequence>{shortcut});
|
||||||
|
KWin::input()->registerShortcut(shortcut, a);
|
||||||
|
|
||||||
|
connect(a, &QAction::triggered, this, [=]() mutable {
|
||||||
|
QJSValueList arguments;
|
||||||
|
arguments << Scripting::self()->qmlEngine()->toScriptValue(a);
|
||||||
|
function.call(arguments);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
KWin::Scripting *KWin::Scripting::s_self = nullptr;
|
KWin::Scripting *KWin::Scripting::s_self = nullptr;
|
||||||
|
|
||||||
KWin::Scripting *KWin::Scripting::create(QObject *parent)
|
KWin::Scripting *KWin::Scripting::create(QObject *parent)
|
||||||
|
|
|
@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QtScript/QScriptEngineAgent>
|
#include <QtScript/QScriptEngineAgent>
|
||||||
|
#include <QtQml/QJSValue>
|
||||||
|
|
||||||
class QQmlComponent;
|
class QQmlComponent;
|
||||||
class QQmlContext;
|
class QQmlContext;
|
||||||
|
@ -318,6 +319,7 @@ public:
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
QVariant readConfig(const QString &key, QVariant defaultValue = QVariant());
|
QVariant readConfig(const QString &key, QVariant defaultValue = QVariant());
|
||||||
void registerWindow(QQuickWindow *window);
|
void registerWindow(QQuickWindow *window);
|
||||||
|
bool registerShortcut(const QString &name, const QString &text, const QKeySequence& keys, QJSValue function);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DeclarativeScript *m_script;
|
DeclarativeScript *m_script;
|
||||||
|
|
Loading…
Reference in a new issue