Skip to content

Commit b47fcc4

Browse files
author
Qt Continuous Integration System
committed
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public: Input method hints are not correct if using proxy widget Fix for GL graphcics system orientation which Update Symbian platform notes documentation
2 parents d0787ad + 507a819 commit b47fcc4

File tree

3 files changed

+33
-60
lines changed

3 files changed

+33
-60
lines changed

doc/src/platforms/platform-notes.qdoc

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -645,28 +645,8 @@
645645

646646
\section1 Supported Devices
647647

648-
Qt is designed to work on any device which runs one of the following
649-
versions of Symbian:
650-
651-
\table
652-
\header \o Symbian Version
653-
\row \o S60 3.1
654-
\row \o S60 3.2
655-
\row \o S60 5.0 (Symbian ^1)
656-
\endtable
657-
658-
Qt has received \l{Tier 1 Platforms}{Tier 1} testing on the following phone models:
659-
660-
\table
661-
\header \o Phone
662-
\row \o Nokia 5800
663-
\row \o Nokia E71
664-
\row \o Nokia E72
665-
\row \o Nokia N78
666-
\row \o Nokia N95
667-
\row \o Nokia N97
668-
\row \o Samsung i8910
669-
\endtable
648+
See the list of supported devices at
649+
http://wiki.forum.nokia.com/index.php/Nokia_Smart_Installer_for_Symbian#Supported_Devices
670650

671651
\section1 Supported Functionality
672652

@@ -679,8 +659,6 @@
679659
\o Planned for future release.
680660
\row \o QtDBus
681661
\o No current plans to support this feature.
682-
\row \o QtOpenGL ES
683-
\o Planned for future release.
684662
\row \o Printing support
685663
\o No current plans to support this feature.
686664
\row \o Qt3Support
@@ -774,6 +752,12 @@
774752
plugin. If the Helix plugin fails to load, the MMF plugin, if present on
775753
the device, will be loaded instead.
776754

755+
\section1 QtOpenGL Support
756+
757+
Qt 4.7 introduces the QtOpenGL module to Symbian^3. QtOpenGL is supported on
758+
devices which support OpenGL ES 2.0. Symbian platforms prior to Symbian^3
759+
are not supported.
760+
777761
\section1 UI Performance in devices prior to Symbian^3
778762

779763
Qt uses the QPainter class to perform low-level painting on widgets and

src/gui/inputmethod/qcoefepinputcontext_s60.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,13 @@ bool QCoeFepInputContext::filterEvent(const QEvent *event)
255255
// fall through intended
256256
case QEvent::KeyRelease:
257257
const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
258+
//If proxy exists, always use hints from proxy.
259+
QWidget *proxy = focusWidget()->focusProxy();
260+
Qt::InputMethodHints currentHints = proxy ? proxy->inputMethodHints() : focusWidget()->inputMethodHints();
261+
258262
switch (keyEvent->key()) {
259263
case Qt::Key_F20:
260-
Q_ASSERT(m_lastImHints == focusWidget()->inputMethodHints());
264+
Q_ASSERT(m_lastImHints == currentHints);
261265
if (m_lastImHints & Qt::ImhHiddenText) {
262266
// Special case in Symbian. On editors with secret text, F20 is for some reason
263267
// considered to be a backspace.
@@ -287,7 +291,7 @@ bool QCoeFepInputContext::filterEvent(const QEvent *event)
287291
}
288292

289293
if (keyEvent->type() == QEvent::KeyPress
290-
&& focusWidget()->inputMethodHints() & Qt::ImhHiddenText
294+
&& currentHints & Qt::ImhHiddenText
291295
&& !keyEvent->text().isEmpty()) {
292296
// Send some temporary preedit text in order to make text visible for a moment.
293297
m_preeditString = keyEvent->text();
@@ -588,9 +592,10 @@ void QCoeFepInputContext::updateHints(bool mustUpdateInputCapabilities)
588592
{
589593
QWidget *w = focusWidget();
590594
if (w) {
591-
Qt::InputMethodHints hints = w->inputMethodHints();
595+
QWidget *proxy = w->focusProxy();
596+
Qt::InputMethodHints hints = proxy ? proxy->inputMethodHints() : w->inputMethodHints();
592597

593-
// Since splitview support works like an input method hint, yet it is private flag,
598+
// Since splitview support works like an input method hint, yet it is private flag,
594599
// we need to update its state separately.
595600
if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0) {
596601
TInt currentFlags = m_fepState->Flags();

src/opengl/qwindowsurface_gl.cpp

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,6 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &
706706
} else {
707707
glFlush();
708708
}
709-
710709
return;
711710
}
712711

@@ -856,8 +855,22 @@ void QGLWindowSurface::updateGeometry() {
856855

857856
bool hijack(true);
858857
QWidgetPrivate *wd = window()->d_func();
859-
if (wd->extraData() && wd->extraData()->glContext)
860-
hijack = false; // we already have gl context for widget
858+
if (wd->extraData() && wd->extraData()->glContext) {
859+
#ifdef Q_OS_SYMBIAN // Symbian needs to recreate the context when native window size changes
860+
if (d_ptr->size != geometry().size()) {
861+
if (window() != qt_gl_share_widget())
862+
--(_qt_gl_share_widget()->widgetRefCount);
863+
864+
delete wd->extraData()->glContext;
865+
wd->extraData()->glContext = 0;
866+
d_ptr->ctx = 0;
867+
}
868+
else
869+
#endif
870+
{
871+
hijack = false; // we already have gl context for widget
872+
}
873+
}
861874

862875
if (hijack)
863876
hijackWindow(window());
@@ -878,35 +891,6 @@ void QGLWindowSurface::updateGeometry() {
878891

879892
d_ptr->size = surfSize;
880893

881-
#ifdef Q_OS_SYMBIAN
882-
if (!hijack) { // Symbian needs to recreate EGL surface when native window size changes
883-
if (ctx->d_func()->eglSurface != EGL_NO_SURFACE) {
884-
eglDestroySurface(ctx->d_func()->eglContext->display(),
885-
ctx->d_func()->eglSurface);
886-
}
887-
888-
ctx->d_func()->eglSurface = QEgl::createSurface(ctx->device(),
889-
ctx->d_func()->eglContext->config());
890-
891-
eglGetError(); // Clear error state.
892-
if (hasPartialUpdateSupport()) {
893-
eglSurfaceAttrib(ctx->d_func()->eglContext->display(),
894-
ctx->d_func()->eglSurface,
895-
EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED);
896-
897-
if (eglGetError() != EGL_SUCCESS)
898-
qWarning("QGLWindowSurface: could not enable preserved swap behaviour");
899-
} else {
900-
eglSurfaceAttrib(ctx->d_func()->eglContext->display(),
901-
ctx->d_func()->eglSurface,
902-
EGL_SWAP_BEHAVIOR, EGL_BUFFER_DESTROYED);
903-
904-
if (eglGetError() != EGL_SUCCESS)
905-
qWarning("QGLWindowSurface: could not enable destroyed swap behaviour");
906-
}
907-
}
908-
#endif
909-
910894
if (d_ptr->ctx) {
911895
#ifndef QT_OPENGL_ES_2
912896
if (d_ptr->destructive_swap_buffers)

0 commit comments

Comments
 (0)