src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenucontent.cpp
changeset 30 80e4d18b72f5
parent 21 4633027730f5
--- a/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenucontent.cpp	Fri Sep 17 08:32:10 2010 +0300
+++ b/src/hbplugins/devicedialogs/indicatormenuplugin/hbindicatormenucontent.cpp	Mon Oct 04 00:38:12 2010 +0300
@@ -158,7 +158,13 @@
         HbIndicatorInterface *indicator =
             indicatorFromIndex(indicatorModel.item(i)->index());
         if (indicator) {
-            if (indicator->refreshData()) {
+            bool refreshed = true;
+            try {
+                refreshed = indicator->refreshData();
+            } catch (const std::bad_alloc &) {
+                refreshed = false;
+            }
+            if (refreshed) {
                 setData(indicator, indicatorModel.item(i)->index());
             }
         }
@@ -175,7 +181,10 @@
     HbIndicatorInterface *indicator = indicatorFromIndex(modelIndex);
     if (indicator && indicator->interactionTypes().testFlag(
             HbIndicatorInterface::InteractionActivated)) {
-        indicator->handleInteraction(HbIndicatorInterface::InteractionActivated);
+        try {
+            indicator->handleInteraction(HbIndicatorInterface::InteractionActivated);
+        }  catch (const std::bad_alloc &) {
+        }
         emit aboutToClose();
     }
 }
@@ -229,8 +238,15 @@
         HbIndicatorInterface::DecorationNameRole).toString();
 
     QStringList texts;
+
+    // List doesn't allow empty text
+    static const char empty[] = " ";
+    if (primaryText.isEmpty()) {
+        primaryText.append(empty);
+    }
+    // Always reserve space for secondary text. Item size should be uniform.
     if (secondaryText.isEmpty()) {
-        secondaryText = ' '; //always reserve space for secondary text. Item size should be uniform.
+        secondaryText.append(empty);
     }
     texts << primaryText << secondaryText;