diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbcore/gui/hbbackgrounditem.cpp --- a/src/hbcore/gui/hbbackgrounditem.cpp Mon Oct 04 17:49:30 2010 +0300 +++ b/src/hbcore/gui/hbbackgrounditem.cpp Mon Oct 18 18:23:13 2010 +0300 @@ -42,21 +42,23 @@ \internal */ -HbBackgroundItem::HbBackgroundItem(HbMainWindow *mainWindow, QGraphicsWidget *parent) : - HbWidget(parent), - mMainWindow(mainWindow), - mImageMode(Hb::ScaleBackgroundToFit) +HbBackgroundItem::HbBackgroundItem(HbMainWindow *mainWindow, QGraphicsWidget *parent) + : HbWidgetBase(parent), + mMainWindow(mainWindow), + mImageMode(Hb::ScaleBackgroundToFit) { setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); + + // paint() will be called from HbMainWindow's drawBackground (which is more + // efficient due to the clipping it sets) so do not let the graphicsview + // call it directly. + setFlag(QGraphicsItem::ItemHasNoContents, true); + mPrtImageName = defaultImageName(Qt::Vertical); mLscImageName = defaultImageName(Qt::Horizontal); updateBackgroundImage(); } -HbBackgroundItem::~HbBackgroundItem() -{ -} - void HbBackgroundItem::setImageName(Qt::Orientation orientation, const QString &name) { bool changed = false; @@ -103,7 +105,6 @@ void HbBackgroundItem::updateBackgroundImage() { - prepareGeometryChange(); if (mMainWindow) { QSizeF size(HbDeviceProfile::profile(mMainWindow).logicalSize()); mBoundingRect.setWidth(size.width()); @@ -122,35 +123,41 @@ } } mBackground.setSize(size); + if (mMainWindow->scene()) { + mMainWindow->scene()->invalidate(boundingRect()); + } } } void HbBackgroundItem::resizeEvent(QGraphicsSceneResizeEvent *event) { - HbWidget::resizeEvent(event); + HbWidgetBase::resizeEvent(event); // RnD feature for resizing the window by dragging if (HbMainWindowPrivate::dragToResizeEnabled) { - prepareGeometryChange(); if (mMainWindow) { QSizeF size(event->newSize()); mBoundingRect.setWidth(size.width()); mBoundingRect.setHeight(size.height()); mBackground.setSize(size); + if (mMainWindow->scene()) { + mMainWindow->scene()->invalidate(mBoundingRect); + } } } } bool HbBackgroundItem::event(QEvent *e) { - if (e->type() == QEvent::Polish) { - // No need for any real polishing. - static_cast(d_ptr)->polished = true; + if (e->type() == HbEvent::DeviceProfileChanged) { + updateBackgroundImage(); + } else if (e->type() == QEvent::FontChange || + e->type() == QEvent::PaletteChange || + e->type() == QEvent::ParentChange || + e->type() == QEvent::Polish) { return true; - } else if (e->type() == HbEvent::DeviceProfileChanged) { - updateBackgroundImage(); } - return HbWidget::event(e); + return HbWidgetBase::event(e); } QRectF HbBackgroundItem::boundingRect() const