-
Bug
-
Resolution: Out of scope
-
P2: Important
-
4.6.2
-
None
QWidgetPrivate::setGeometry_sys() causes the above behavior because it does the following:
QRect r = QRect(x, y, w, h); data.crect = r; q->internalWinId()->SetRect(TRect(TPoint(x, y), TSize(w, h)));
Basically it updates the widget geometry (in data.crect) before it updates the geometry of the underlying CCoeControl (SetRect). This causes a problem because calling SetRect() will result in a call to QSymbianControl::SizeChanged() which then uses the current widget size as the old size and the current CCoeControl size as the new size to determine if a resize has actually occurred. It then calls syncBackingStore() to resize the window surface and update it with new content. If the widget's geometry is updated first, then newSize == oldSize and the the window surface geometry is not updated correctly.
In fixing this bug, care must be taken such that Qt does not send 2 QResizeEvents because both setGeometry_sys() and SizeChanged() will send these separately so simply swapping the order of the functions above might not be enough.