src/hbwidgets/widgets/hbgroupbox.cpp
changeset 28 b7da29130b0e
parent 23 e6ad4ef83b23
--- a/src/hbwidgets/widgets/hbgroupbox.cpp	Thu Sep 02 20:44:51 2010 +0300
+++ b/src/hbwidgets/widgets/hbgroupbox.cpp	Fri Sep 17 08:32:10 2010 +0300
@@ -100,8 +100,10 @@
     // set dynamic property based on type
     q->setProperty("groupBoxType",(int)type);
 
-    if ( mGroupBoxType == type ) 
+    if ( mGroupBoxType == type ) {
+        q->updatePrimitives();
         return;
+    }
 
     mGroupBoxType = type;
   
@@ -303,6 +305,7 @@
         if( d->mHeadingWidget ){
             delete d->mHeadingWidget;
             d->mHeadingWidget = 0;
+            HbStyle::setItemName( d->mHeadingWidget, QString());
             if( d->mContentWidget ) {
                 d->setGroupBoxType( GroupBoxRichLabel );
             }else{
@@ -310,7 +313,7 @@
             }
         }        
     }
-    repolish();
+    //repolish();
 }
 
 /*!
@@ -524,11 +527,13 @@
 void HbGroupBox::setContentWidget( HbWidget *widget )
 {
     Q_D( HbGroupBox );
-   
-    if(!d->mContentWidget)
-        d->createContentWidget();
     
+    bool doPolish = false; 
     if(widget){
+        // create the mContentWidget if its not there.
+        if(!d->mContentWidget)
+            d->createContentWidget();
+        doPolish = widget != d->mContentWidget->mContent;
         d->mContentWidget->setContentWidget(widget);
         if(d->mHeadingWidget){
             d->setGroupBoxType(GroupBoxCollapsingContainer);
@@ -539,15 +544,21 @@
         d->mContentWidget->updatePrimitives();
 
     }else{
-        delete d->mContentWidget;
-        d->mContentWidget = 0;
-        if(d->mHeadingWidget){
-            d->setGroupBoxType(GroupBoxSimpleLabel);
-        }else{
-            d->setGroupBoxType(GroupBoxTypeUnknown);
+        // delete mContentWidget if widget is null.
+        if( d->mContentWidget ){
+            delete d->mContentWidget;
+            d->mContentWidget = 0;
+            HbStyle::setItemName( d->mContentWidget, QString());
+            if(d->mHeadingWidget){
+                d->setGroupBoxType(GroupBoxSimpleLabel);
+            }else{
+                d->setGroupBoxType(GroupBoxTypeUnknown);
+            }
         }
     }
-    repolish();
+    if(doPolish){
+        repolish();
+    }
 }
 
 /*!