diff options
-rw-r--r-- | src/gui/widgets/qsoftkeystack.cpp | 16 | ||||
-rw-r--r-- | src/gui/widgets/qsoftkeystack.h | 3 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/gui/widgets/qsoftkeystack.cpp b/src/gui/widgets/qsoftkeystack.cpp index ae58e8d..723b9bf 100644 --- a/src/gui/widgets/qsoftkeystack.cpp +++ b/src/gui/widgets/qsoftkeystack.cpp @@ -165,6 +165,22 @@ void QSoftKeyStack::handleSoftKeyPress(int command) d->handleSoftKeyPress(command); } +QMainWindow *QSoftKeyStack::mainWindowOfWidget(QWidget *widget) +{ + QWidget *widgetParent = widget; + while (widgetParent = widgetParent->parentWidget()) + if (QMainWindow *mainWindow = qobject_cast<QMainWindow*>(widgetParent)) + return mainWindow; + + return 0; +} + +QSoftKeyStack *QSoftKeyStack::softKeyStackOfWidget(QWidget *widget) +{ + QMainWindow *mainWindow = mainWindowOfWidget(widget); + return mainWindow ? mainWindow->softKeyStack() : 0; +} + #if !defined(Q_WS_S60) void QSoftKeyStackPrivate::handleSoftKeyPress(int command) { diff --git a/src/gui/widgets/qsoftkeystack.h b/src/gui/widgets/qsoftkeystack.h index c9a05c3..7c955da 100644 --- a/src/gui/widgets/qsoftkeystack.h +++ b/src/gui/widgets/qsoftkeystack.h @@ -69,6 +69,9 @@ public: void handleSoftKeyPress(int command); + static QMainWindow *mainWindowOfWidget(QWidget *widget); + static QSoftKeyStack *softKeyStackOfWidget(QWidget *widget); + private Q_SLOTS: void handleFocusChanged(QWidget *old, QWidget *now); |