Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-9672

Window surface geometry can get out of sync with native window geometry in some cases on Symbian

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Out of scope
    • Icon: P2: Important P2: Important
    • 4.8.x
    • 4.6.2
    • GUI: Window management
    • 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.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            jhautaka Jani Hautakangas
            jabarron Jason Barron
            Votes:
            2 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes