diff --git a/src/rdp_display_widget.cpp b/src/rdp_display_widget.cpp index 121e6f7..85349f2 100644 --- a/src/rdp_display_widget.cpp +++ b/src/rdp_display_widget.cpp @@ -173,6 +173,14 @@ void RdpDisplayWidget::keyReleaseEvent(QKeyEvent* event) event->accept(); } +bool RdpDisplayWidget::focusNextPrevChild(bool next) +{ + Q_UNUSED(next); + // Tab/Shift+Tab must reach keyPressEvent() and be forwarded to the + // remote session instead of moving focus to the next local widget. + return false; +} + void RdpDisplayWidget::mousePressEvent(QMouseEvent* event) { if (event == nullptr) { diff --git a/src/rdp_display_widget.h b/src/rdp_display_widget.h index d9861d1..74599b1 100644 --- a/src/rdp_display_widget.h +++ b/src/rdp_display_widget.h @@ -40,6 +40,7 @@ protected: void mouseReleaseEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override; void wheelEvent(QWheelEvent* event) override; + bool focusNextPrevChild(bool next) override; private: enum class CursorMode { diff --git a/src/terminal_view.cpp b/src/terminal_view.cpp index e2f34a2..14a34d7 100644 --- a/src/terminal_view.cpp +++ b/src/terminal_view.cpp @@ -219,6 +219,14 @@ void TerminalView::focusInEvent(QFocusEvent* event) moveCursor(QTextCursor::End); } +bool TerminalView::focusNextPrevChild(bool next) +{ + Q_UNUSED(next); + // Tab/Shift+Tab must reach keyPressEvent() and be forwarded to the + // remote session instead of moving focus to the next local widget. + return false; +} + void TerminalView::resizeEvent(QResizeEvent* event) { QTextEdit::resizeEvent(event); diff --git a/src/terminal_view.h b/src/terminal_view.h index c534072..610cbdb 100644 --- a/src/terminal_view.h +++ b/src/terminal_view.h @@ -29,6 +29,7 @@ protected: void keyPressEvent(QKeyEvent* event) override; void focusInEvent(QFocusEvent* event) override; void resizeEvent(QResizeEvent* event) override; + bool focusNextPrevChild(bool next) override; private: struct ThemePalette {