summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforminputcontexts
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforminputcontexts')
-rw-r--r--src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp18
-rw-r--r--src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h1
2 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp
index dc0a4f286d..0df21e3908 100644
--- a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp
+++ b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp
@@ -151,6 +151,7 @@ public:
bool correctionEnabled;
QRect keyboardRect;
QString preedit;
+ QWeakPointer<QWindow> window;
QMeeGoPlatformInputContext *q;
};
@@ -447,6 +448,11 @@ void QMeeGoPlatformInputContext::updateInputMethodArea(int x, int y, int width,
emitKeyboardRectChanged();
}
+void QMeeGoPlatformInputContext::updateServerWindowOrientation(Qt::ScreenOrientation orientation)
+{
+ d->server->appOrientationChanged(orientationAngle(orientation));
+}
+
void QMeeGoPlatformInputContext::inputItemChanged()
{
if (!d->valid)
@@ -455,6 +461,15 @@ void QMeeGoPlatformInputContext::inputItemChanged()
QInputPanel *panel = qApp->inputPanel();
QObject *input = panel->inputItem();
QWindow *window = panel->inputWindow();
+ if (window != d->window.data()) {
+ if (d->window)
+ disconnect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)),
+ this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation)));
+ d->window = window;
+ if (d->window)
+ connect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)),
+ this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation)));
+ }
d->imState["focusState"] = input != 0;
if (input) {
@@ -465,9 +480,8 @@ void QMeeGoPlatformInputContext::inputItemChanged()
d->active = true;
d->server->activateContext();
- // ### react to orientation changes, too
if (window)
- d->server->appOrientationChanged(orientationAngle(window->screen()->orientation()));
+ d->server->appOrientationChanged(orientationAngle(window->contentOrientation()));
}
}
d->sendStateUpdate(/*focusChanged*/true);
diff --git a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h
index e84ac2035d..8b3edd0f9b 100644
--- a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h
+++ b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h
@@ -86,6 +86,7 @@ public Q_SLOTS:
void setRedirectKeys(bool );
void setSelection(int start, int length);
void updateInputMethodArea(int x, int y, int width, int height);
+ void updateServerWindowOrientation(Qt::ScreenOrientation orientation);
private:
QMeeGoPlatformInputContextPrivate *d;