--- 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<HbWidgetPrivate *>(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