mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 01:23:24 -08:00
[FlowWidget] Restore arrow-key navigation for items in flow widgets (#7591)
Some checks are pending
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (actions) (push) Waiting to run
Build Desktop / Configure (push) Waiting to run
Build Desktop / Debian 13 (push) Blocked by required conditions
Build Desktop / Debian 12 (push) Blocked by required conditions
Build Desktop / Fedora 44 (push) Blocked by required conditions
Build Desktop / Fedora 43 (push) Blocked by required conditions
Build Desktop / Servatrice_Debian 12 (push) Blocked by required conditions
Build Desktop / Ubuntu 24.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 (push) Blocked by required conditions
Build Desktop / Arch (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 cover (push) Blocked by required conditions
Build Desktop / macOS 13 Intel (push) Blocked by required conditions
Build Desktop / macOS 14 (push) Blocked by required conditions
Build Desktop / macOS 15 (push) Blocked by required conditions
Build Desktop / macOS 26 Debug (push) Blocked by required conditions
Build Desktop / Windows 10 (push) Blocked by required conditions
Build Desktop / Prune caches (push) Waiting to run
Build Docker / Servatrice (arm) (push) Waiting to run
Build Docker / Servatrice (x86) (push) Waiting to run
Build Docker / Publish multi-platform Servatrice image (push) Blocked by required conditions
Some checks are pending
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (actions) (push) Waiting to run
Build Desktop / Configure (push) Waiting to run
Build Desktop / Debian 13 (push) Blocked by required conditions
Build Desktop / Debian 12 (push) Blocked by required conditions
Build Desktop / Fedora 44 (push) Blocked by required conditions
Build Desktop / Fedora 43 (push) Blocked by required conditions
Build Desktop / Servatrice_Debian 12 (push) Blocked by required conditions
Build Desktop / Ubuntu 24.04 (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 (push) Blocked by required conditions
Build Desktop / Arch (push) Blocked by required conditions
Build Desktop / Ubuntu 26.04 cover (push) Blocked by required conditions
Build Desktop / macOS 13 Intel (push) Blocked by required conditions
Build Desktop / macOS 14 (push) Blocked by required conditions
Build Desktop / macOS 15 (push) Blocked by required conditions
Build Desktop / macOS 26 Debug (push) Blocked by required conditions
Build Desktop / Windows 10 (push) Blocked by required conditions
Build Desktop / Prune caches (push) Waiting to run
Build Docker / Servatrice (arm) (push) Waiting to run
Build Docker / Servatrice (x86) (push) Waiting to run
Build Docker / Publish multi-platform Servatrice image (push) Blocked by required conditions
Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
829152f388
commit
9709fe4a1a
2 changed files with 7 additions and 13 deletions
|
|
@ -105,9 +105,9 @@ void FlowWidget::addWidget(QWidget *widget_to_add)
|
||||||
*
|
*
|
||||||
* The widget is filtered for arrow-key events so keyboard navigation between
|
* The widget is filtered for arrow-key events so keyboard navigation between
|
||||||
* the flow items keeps working even when the flow sits inside a QScrollArea,
|
* the flow items keeps working even when the flow sits inside a QScrollArea,
|
||||||
* which swallows arrow keys before they can reach FlowWidget::keyPressEvent.
|
* which swallows arrow keys before they can bubble up. Only widgets added
|
||||||
* Only widgets added through this method are affected; anything that needs its
|
* through this method are affected; anything that needs its own arrow keys
|
||||||
* own arrow keys should use plain addWidget.
|
* should use plain addWidget.
|
||||||
*
|
*
|
||||||
* @param widget_to_add The widget to add to the flow layout.
|
* @param widget_to_add The widget to add to the flow layout.
|
||||||
*/
|
*/
|
||||||
|
|
@ -207,17 +207,12 @@ QLayoutItem *FlowWidget::itemAt(int index) const
|
||||||
return flowLayout->itemAt(index);
|
return flowLayout->itemAt(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlowWidget::keyPressEvent(QKeyEvent *event)
|
|
||||||
{
|
|
||||||
if (moveFocus(event)) {
|
|
||||||
event->accept();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
QWidget::keyPressEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FlowWidget::eventFilter(QObject *watched, QEvent *event)
|
bool FlowWidget::eventFilter(QObject *watched, QEvent *event)
|
||||||
{
|
{
|
||||||
|
// Arrow-key navigation is deliberately scoped to widgets that opted in via
|
||||||
|
// addNavigableWidget(). Handling arrow keys in keyPressEvent() as well would
|
||||||
|
// also catch the events ordinary children (QLineEdit, ...) ignore and move
|
||||||
|
// focus away from the control the user is typing in.
|
||||||
if (event->type() == QEvent::KeyPress && moveFocus(static_cast<QKeyEvent *>(event))) {
|
if (event->type() == QEvent::KeyPress && moveFocus(static_cast<QKeyEvent *>(event))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,6 @@ public slots:
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject *watched, QEvent *event) override;
|
bool eventFilter(QObject *watched, QEvent *event) override;
|
||||||
void resizeEvent(QResizeEvent *event) override;
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
void keyPressEvent(QKeyEvent *event) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// @brief Moves keyboard focus to an adjacent flow item for an arrow-key event.
|
/// @brief Moves keyboard focus to an adjacent flow item for an arrow-key event.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue