Change shortcut editor
Remove global shortcuts when blocking actions to not trigger it when editing
This commit is contained in:
parent
75bfd798c8
commit
26c034e75a
@ -53,6 +53,7 @@ HEADERS += \
|
|||||||
src/service/debug.h \
|
src/service/debug.h \
|
||||||
src/service/geometryutils.h \
|
src/service/geometryutils.h \
|
||||||
src/service/globalaction.h \
|
src/service/globalaction.h \
|
||||||
|
src/service/keysequenceedit.h \
|
||||||
src/service/runatsystemstart.h \
|
src/service/runatsystemstart.h \
|
||||||
src/service/singleapplication.h \
|
src/service/singleapplication.h \
|
||||||
src/service/updates.h \
|
src/service/updates.h \
|
||||||
@ -90,6 +91,7 @@ SOURCES += \
|
|||||||
src/service/debug.cpp \
|
src/service/debug.cpp \
|
||||||
src/service/geometryutils.cpp \
|
src/service/geometryutils.cpp \
|
||||||
src/service/globalaction.cpp \
|
src/service/globalaction.cpp \
|
||||||
|
src/service/keysequenceedit.cpp \
|
||||||
src/service/runatsystemstart.cpp \
|
src/service/runatsystemstart.cpp \
|
||||||
src/service/singleapplication.cpp \
|
src/service/singleapplication.cpp \
|
||||||
src/service/updates.cpp \
|
src/service/updates.cpp \
|
||||||
|
71
src/service/keysequenceedit.cpp
Normal file
71
src/service/keysequenceedit.cpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#include "keysequenceedit.h"
|
||||||
|
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
|
namespace service
|
||||||
|
{
|
||||||
|
KeySequenceEdit::KeySequenceEdit(QWidget *parent)
|
||||||
|
: QLineEdit(parent)
|
||||||
|
{
|
||||||
|
setPlaceholderText(tr("Press shortcut"));
|
||||||
|
setFocusPolicy(Qt::StrongFocus);
|
||||||
|
setAttribute(Qt::WA_MacShowFocusRect, true);
|
||||||
|
setAttribute(Qt::WA_InputMethodEnabled, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
const QKeySequence &KeySequenceEdit::keySequence() const
|
||||||
|
{
|
||||||
|
return current_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeySequenceEdit::setKeySequence(const QKeySequence &newKeySequence)
|
||||||
|
{
|
||||||
|
setKeySequence(newKeySequence, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeySequenceEdit::setKeySequence(const QKeySequence ¤t,
|
||||||
|
bool updateFallback)
|
||||||
|
{
|
||||||
|
current_ = current;
|
||||||
|
if (updateFallback)
|
||||||
|
fallback_ = current;
|
||||||
|
setText(current_.toString(QKeySequence::NativeText));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KeySequenceEdit::event(QEvent *e)
|
||||||
|
{
|
||||||
|
switch (e->type()) {
|
||||||
|
case QEvent::Shortcut: return true;
|
||||||
|
case QEvent::ShortcutOverride: e->accept(); return true;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QWidget::event(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeySequenceEdit::keyPressEvent(QKeyEvent *event)
|
||||||
|
{
|
||||||
|
const auto key = event->key();
|
||||||
|
if (key == Qt::Key_Control || key == Qt::Key_Meta || key == Qt::Key_Alt ||
|
||||||
|
key == Qt::Key_Shift || key == Qt::Key_unknown) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event->key() == Qt::Key_Escape) {
|
||||||
|
setKeySequence(fallback_, false);
|
||||||
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event->key() == Qt::Key_Backspace) {
|
||||||
|
setKeySequence({}, false);
|
||||||
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QKeySequence seq = event->modifiers() + event->key();
|
||||||
|
setKeySequence(seq, false);
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace service
|
25
src/service/keysequenceedit.h
Normal file
25
src/service/keysequenceedit.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QLineEdit>
|
||||||
|
|
||||||
|
namespace service
|
||||||
|
{
|
||||||
|
class KeySequenceEdit : public QLineEdit
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
KeySequenceEdit(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
const QKeySequence &keySequence() const;
|
||||||
|
void setKeySequence(const QKeySequence &newKeySequence);
|
||||||
|
bool event(QEvent *event) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void keyPressEvent(QKeyEvent *event) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setKeySequence(const QKeySequence ¤t, bool updateFallback);
|
||||||
|
QKeySequence current_;
|
||||||
|
QKeySequence fallback_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace service
|
@ -221,7 +221,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="4" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QKeySequenceEdit" name="clipboardEdit"/>
|
<widget class="service::KeySequenceEdit" name="clipboardEdit"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_8">
|
<widget class="QLabel" name="label_8">
|
||||||
@ -231,7 +231,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QKeySequenceEdit" name="repeatCaptureEdit"/>
|
<widget class="service::KeySequenceEdit" name="repeatCaptureEdit"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
@ -241,7 +241,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QKeySequenceEdit" name="captureEdit"/>
|
<widget class="service::KeySequenceEdit" name="captureEdit"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_7">
|
<widget class="QLabel" name="label_7">
|
||||||
@ -251,7 +251,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QKeySequenceEdit" name="repeatEdit"/>
|
<widget class="service::KeySequenceEdit" name="repeatEdit"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
@ -268,7 +268,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QKeySequenceEdit" name="captureLockedEdit"/>
|
<widget class="service::KeySequenceEdit" name="captureLockedEdit"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
@ -775,6 +775,11 @@
|
|||||||
<extends>QTableWidget</extends>
|
<extends>QTableWidget</extends>
|
||||||
<header>substitutionstable.h</header>
|
<header>substitutionstable.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>service::KeySequenceEdit</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>keysequenceedit.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>captureEdit</tabstop>
|
<tabstop>captureEdit</tabstop>
|
||||||
|
@ -59,6 +59,16 @@ void TrayIcon::blockActions(bool block)
|
|||||||
{
|
{
|
||||||
isActionsBlocked_ = block;
|
isActionsBlocked_ = block;
|
||||||
updateActions();
|
updateActions();
|
||||||
|
const auto actions =
|
||||||
|
QVector<QAction *>{captureAction_, repeatCaptureAction_, showLastAction_,
|
||||||
|
clipboardAction_, captureLockedAction_};
|
||||||
|
for (const auto i : actions) {
|
||||||
|
if (block) {
|
||||||
|
GlobalAction::removeGlobal(i);
|
||||||
|
} else {
|
||||||
|
GlobalAction::makeGlobal(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrayIcon::setTaskActionsEnabled(bool isEnabled)
|
void TrayIcon::setTaskActionsEnabled(bool isEnabled)
|
||||||
|
Loading…
Reference in New Issue
Block a user