From 21154d6866d9fc9b55fce6900d2d49d14a85cae9 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Thu, 4 Dec 2014 16:20:56 +0100 Subject: [PATCH] qt5: let QNitpickerViewWidget react to focus event With this patch, when calling 'setFocus()' on a QNitpickerViewWidget, the Nitpicker view gets the input focus (provided that the parent Qt window already had it). Fixes #1314 --- .../qt5/qnitpickerviewwidget/qnitpickerviewwidget.h | 1 + .../lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp | 8 ++++++++ .../platforms/nitpicker/qnitpickerplatformwindow.cpp | 5 +++++ .../platforms/nitpicker/qnitpickerplatformwindow.h | 1 + 4 files changed, 15 insertions(+) diff --git a/repos/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h b/repos/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h index 9a0f41213..732e15e40 100644 --- a/repos/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h +++ b/repos/libports/include/qt5/qnitpickerviewwidget/qnitpickerviewwidget.h @@ -75,6 +75,7 @@ protected: virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void paintEvent(QPaintEvent *event); + virtual void focusInEvent(QFocusEvent * event); public: diff --git a/repos/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp b/repos/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp index 15c944e04..e197d19f1 100644 --- a/repos/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp +++ b/repos/libports/src/lib/qt5/qnitpickerviewwidget/qnitpickerviewwidget.cpp @@ -226,3 +226,11 @@ void QNitpickerViewWidget::paintEvent(QPaintEvent *event) nitpicker->release_view_handle(neighbor_handle); } + +void QNitpickerViewWidget::focusInEvent(QFocusEvent *) +{ + QNitpickerPlatformWindow *platform_window = + dynamic_cast(window()->windowHandle()->handle()); + + platform_window->nitpicker().focus(*nitpicker); +} diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp index 01767f803..763b2247c 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.cpp @@ -573,6 +573,11 @@ void QNitpickerPlatformWindow::egl_surface(EGLSurface egl_surface) _egl_surface = egl_surface; } +Nitpicker::Session_client &QNitpickerPlatformWindow::nitpicker() +{ + return _nitpicker_session; +} + Nitpicker::View_capability QNitpickerPlatformWindow::view_cap() const { QNitpickerPlatformWindow *npw = const_cast(this); diff --git a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h index d9f605889..d6e3c6009 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h +++ b/repos/libports/src/lib/qt5/qtbase/src/plugins/platforms/nitpicker/qnitpickerplatformwindow.h @@ -155,6 +155,7 @@ class QNitpickerPlatformWindow : public QObject, public QPlatformWindow /* for QNitpickerViewWidget */ + Nitpicker::Session_client &nitpicker(); Nitpicker::View_capability view_cap() const; signals: