mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:37:44 +00:00
Ladybird/WebContentView: Make Tab and Shift+Tab work
These didn't work, for two reasons: 1. Qt swallows all Tab key presses by default. We have to override the event() function in order to receive them. 2. Qt transforms Shift+Tab into a fake "Backtab" key. We have to undo this transformation and send Shift+Tab to WebContent.
This commit is contained in:
parent
c154d94964
commit
195cdb33de
2 changed files with 23 additions and 0 deletions
|
@ -334,6 +334,12 @@ void WebContentView::keyPressEvent(QKeyEvent* event)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event->key() == Qt::Key_Backtab) {
|
||||||
|
// NOTE: Qt transforms Shift+Tab into a "Backtab", so we undo that transformation here.
|
||||||
|
client().async_key_down(KeyCode::Key_Tab, Mod_Shift, '\t');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto text = event->text();
|
auto text = event->text();
|
||||||
if (text.isEmpty()) {
|
if (text.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
|
@ -919,3 +925,19 @@ void WebContentView::request_repaint()
|
||||||
m_client_state.back_bitmap.pending_paints++;
|
m_client_state.back_bitmap.pending_paints++;
|
||||||
client().async_paint(m_client_state.back_bitmap.bitmap->rect().translated(horizontalScrollBar()->value(), verticalScrollBar()->value()), m_client_state.back_bitmap.id);
|
client().async_paint(m_client_state.back_bitmap.bitmap->rect().translated(horizontalScrollBar()->value(), verticalScrollBar()->value()), m_client_state.back_bitmap.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool WebContentView::event(QEvent* event)
|
||||||
|
{
|
||||||
|
// NOTE: We have to implement event() manually as Qt's focus navigation mechanism
|
||||||
|
// eats all the Tab key presses by default.
|
||||||
|
|
||||||
|
if (event->type() == QEvent::KeyPress) {
|
||||||
|
keyPressEvent(static_cast<QKeyEvent*>(event));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (event->type() == QEvent::KeyRelease) {
|
||||||
|
keyReleaseEvent(static_cast<QKeyEvent*>(event));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return QAbstractScrollArea::event(event);
|
||||||
|
}
|
||||||
|
|
|
@ -87,6 +87,7 @@ public:
|
||||||
virtual void hideEvent(QHideEvent*) override;
|
virtual void hideEvent(QHideEvent*) override;
|
||||||
virtual void focusInEvent(QFocusEvent*) override;
|
virtual void focusInEvent(QFocusEvent*) override;
|
||||||
virtual void focusOutEvent(QFocusEvent*) override;
|
virtual void focusOutEvent(QFocusEvent*) override;
|
||||||
|
virtual bool event(QEvent*) override;
|
||||||
|
|
||||||
void debug_request(String const& request, String const& argument);
|
void debug_request(String const& request, String const& argument);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue