Kaydet (Commit) 5843e14a authored tarafından Aleksei Nikiforov's avatar Aleksei Nikiforov Kaydeden (comit) Thorsten Behrens

tdf#122238 KDE5: disable mechanism of Qt for shortcut activation

When QEvent::KeyPress event is processed, QEvent::ShortcutOverride event is created
and processed before finishing processing original event.

If it's an active shortcut, and QEvent::ShortcutOverride event is not accepted,
the shortcut is activated, but QEvent::KeyPress event is omitted.
If it's an active shortcut, and QEvent::ShortcutOverride event is accepted,
the shortcut is not activated, and QEvent::KeyPress event is sent as usual.

But it looks like even if shortcut activation is suppressed,
shortcut is still called somewhere from insides SalEvent::KeyInput
event processing callback from Qt5Widget::handleKeyEvent function.

Shortcuts are still assigned to menu actions
since it shows the key combinations used to activate them.

Change-Id: I1ffc63c2530dd61ae67ab66a96ea3efe767218c0
Reviewed-on: https://gerrit.libreoffice.org/66444
Tested-by: Jenkins
Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst a89f127d
...@@ -45,6 +45,8 @@ class Qt5Widget : public QWidget ...@@ -45,6 +45,8 @@ class Qt5Widget : public QWidget
bool handleKeyEvent(QKeyEvent*, bool); bool handleKeyEvent(QKeyEvent*, bool);
void handleMouseButtonEvent(QMouseEvent*, bool); void handleMouseButtonEvent(QMouseEvent*, bool);
virtual bool event(QEvent*) override;
virtual void focusInEvent(QFocusEvent*) override; virtual void focusInEvent(QFocusEvent*) override;
virtual void focusOutEvent(QFocusEvent*) override; virtual void focusOutEvent(QFocusEvent*) override;
virtual void keyPressEvent(QKeyEvent*) override; virtual void keyPressEvent(QKeyEvent*) override;
......
...@@ -395,6 +395,22 @@ bool Qt5Widget::handleKeyEvent(QKeyEvent* pEvent, bool bDown) ...@@ -395,6 +395,22 @@ bool Qt5Widget::handleKeyEvent(QKeyEvent* pEvent, bool bDown)
return bStopProcessingKey; return bStopProcessingKey;
} }
bool Qt5Widget::event(QEvent* pEvent)
{
if (pEvent->type() == QEvent::ShortcutOverride)
{
// Accepted event disables shortcut activation,
// but enables keypress event.
// If event is not accepted and shortcut is successfully activated,
// KeyPress event is omitted.
// It looks like handleKeyEvent function still activates the shortcut on KeyPress event,
// so there's no harm in disabling shortcut activation via Qt mechanisms.
pEvent->accept();
}
return QWidget::event(pEvent);
}
void Qt5Widget::keyPressEvent(QKeyEvent* pEvent) void Qt5Widget::keyPressEvent(QKeyEvent* pEvent)
{ {
if (handleKeyEvent(pEvent, true)) if (handleKeyEvent(pEvent, true))
......
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