Index: src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py
===================================================================
--- src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py	(revision d1955d675110f45de94a27bcfb2944496bed625c)
+++ src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py	(revision 6cb305acde0f8a18b6580f6801bf0cd6613b4587)
@@ -63,5 +63,5 @@
         self._model_item = QtGui.QStandardItem()
 
-        #self._helpView = QtWebKit.QWebView()
+        self._helpView = QtWebKit.QWebView()
         self.detailsDialog = DetailsDialog(self)
         self.detailsDialog.cmdOK.clicked.connect(self.enabling)
@@ -82,5 +82,4 @@
         # no reason to have this widget resizable
         self.resize(self.minimumSizeHint())
-        #self.setFixedSize(self.sizeHint())
 
         self.communicate = self._manager.communicator()
@@ -232,5 +231,5 @@
         # Send the modified model item to DE for keeping in the model
         # Currently -unused
-        #self.communicate.updateModelFromPerspectiveSignal.emit(self._model_item)
+        # self.communicate.updateModelFromPerspectiveSignal.emit(self._model_item)
 
         plot_data = GuiUtils.plotsFromCheckedItems(self._manager.filesWidget.model)
@@ -365,5 +364,5 @@
             if self._high_extrapolate:
                 # for presentation in InvariantDetails
-                qmax_plot = Q_MAXIMUM_PLOT * max(temp_data.x) # self._data.x)
+                qmax_plot = Q_MAXIMUM_PLOT * max(temp_data.x)
 
                 if qmax_plot > Q_MAXIMUM:
Index: src/sas/qtgui/Utilities/GuiUtils.py
===================================================================
--- src/sas/qtgui/Utilities/GuiUtils.py	(revision cb4d21923d5112d84638455162621f5823dd13c5)
+++ src/sas/qtgui/Utilities/GuiUtils.py	(revision 6cb305acde0f8a18b6580f6801bf0cd6613b4587)
@@ -58,9 +58,9 @@
     # clean all these module variables and put them into a config class
     # that can be passed by sasview.py.
-    #logging.info(sys.executable)
-    #logging.info(str(sys.argv))
+    # logging.info(sys.executable)
+    # logging.info(str(sys.argv))
     from sas import sasview as sasview
     app_path = os.path.dirname(sasview.__file__)
-    #logging.info("Using application path: %s", app_path)
+    # logging.info("Using application path: %s", app_path)
     return app_path
 
@@ -249,5 +249,7 @@
         if plot_item.isCheckable():
             plot_data = plot_item.child(0).data()
-            if plot_data.id is not None and plot_data.id == update_data.id:
+            if plot_data.id is not None and \
+                   (plot_data.name == update_data.name or plot_data.id == update_data.id):
+            # if plot_data.id is not None and plot_data.id == update_data.id:
                 # replace data section in item
                 plot_item.child(0).setData(update_data)
@@ -343,5 +345,6 @@
     for index in range(model_item.rowCount()):
         item = model_item.item(index)
-        if item.text() == filename and item.isCheckable() and item.checkState() == QtCore.Qt.Checked:
+        if item.text() == filename and item.isCheckable() \
+                and item.checkState() == QtCore.Qt.Checked:
             # Going 1 level deeper only
             for index_2 in range(item.rowCount()):
@@ -360,5 +363,7 @@
 
     # Iterate over model looking for named items
-    item = list([i for i in [model_item.item(index) for index in range(model_item.rowCount())] if str(i.text()) == filename])
+    item = list([i for i in [model_item.item(index)
+                             for index in range(model_item.rowCount())]
+                 if str(i.text()) == filename])
     return item[0] if len(item)>0 else None
 
@@ -396,7 +401,5 @@
     for index in range(model_item.rowCount()):
         item = model_item.item(index)
-        if item.isCheckable() and item.checkState() == QtCore.Qt.Checked:
-            # TODO: assure item type is correct (either data1/2D or Plotter)
-            plot_data.append((item, item.child(0).data()))
+
         # Going 1 level deeper only
         for index_2 in range(item.rowCount()):
@@ -405,4 +408,8 @@
                 # TODO: assure item type is correct (either data1/2D or Plotter)
                 plot_data.append((item_2, item_2.child(0).data()))
+
+        if item.isCheckable() and item.checkState() == QtCore.Qt.Checked:
+            # TODO: assure item type is correct (either data1/2D or Plotter)
+            plot_data.append((item, item.child(0).data()))
 
     return plot_data
Index: src/sas/qtgui/Utilities/UnitTesting/GuiUtilsTest.py
===================================================================
--- src/sas/qtgui/Utilities/UnitTesting/GuiUtilsTest.py	(revision 0261bc13615593f5eb2e08941252c044b8bb2e3b)
+++ src/sas/qtgui/Utilities/UnitTesting/GuiUtilsTest.py	(revision 6cb305acde0f8a18b6580f6801bf0cd6613b4587)
@@ -100,19 +100,51 @@
         Test the QModelItem checkbox update method
         """
+        # test_item = QtGui.QStandardItem()
+        # test_list = ['aa','11']
+        # update_data = test_list
+        # name = "Black Sabbath"
+
+        # # update the item
+        # updateModelItemWithPlot(test_item, update_data, name)
+
         test_item = QtGui.QStandardItem()
-        test_list = ['aa','11']
-        update_data = test_list
+        update_data = Data1D(x=[1.0, 2.0, 3.0], y=[10.0, 11.0, 12.0])
         name = "Black Sabbath"
-
+        update_data.id = '[0]data0'
+        update_data.name = 'data0'
         # update the item
         updateModelItemWithPlot(test_item, update_data, name)
-        
+
         # Make sure test_item got all data added
         self.assertEqual(test_item.child(0).text(), name)
         self.assertTrue(test_item.child(0).isCheckable())
-        list_from_item = test_item.child(0).child(0).data()
-        self.assertIsInstance(list_from_item, list)
-        self.assertEqual(str(list_from_item[0]), test_list[0])
-        self.assertEqual(str(list_from_item[1]), test_list[1])
+        data_from_item = test_item.child(0).child(0).data()
+        self.assertIsInstance(data_from_item, Data1D)
+        self.assertSequenceEqual(list(data_from_item.x), [1.0, 2.0, 3.0])
+        self.assertSequenceEqual(list(data_from_item.y), [10.0, 11.0, 12.0])
+        self.assertEqual(test_item.rowCount(), 1)
+
+        # add another dataset (different from the first one)
+        update_data1 = Data1D(x=[1.1, 2.1, 3.1], y=[10.1, 11.1, 12.1])
+        update_data1.id = '[0]data1'
+        update_data1.name = 'data1'
+        name1 = "Black Sabbath1"
+        # update the item and check number of rows
+        updateModelItemWithPlot(test_item, update_data1, name1)
+
+        self.assertEqual(test_item.rowCount(), 2)
+
+        # add another dataset (with the same name as the first one)
+        # check that number of rows was not changed but data have been updated
+        update_data2 = Data1D(x=[4.0, 5.0, 6.0], y=[13.0, 14.0, 15.0])
+        update_data2.id = '[1]data0'
+        update_data2.name = 'data0'
+        name2 = "Black Sabbath2"
+        updateModelItemWithPlot(test_item, update_data2, name2)
+        self.assertEqual(test_item.rowCount(), 2)
+
+        data_from_item = test_item.child(0).child(0).data()
+        self.assertSequenceEqual(list(data_from_item.x), [4.0, 5.0, 6.0])
+        self.assertSequenceEqual(list(data_from_item.y), [13.0, 14.0, 15.0])
 
 
@@ -162,7 +194,7 @@
         # Make sure only the checked data is present
         # FRIDAY IN
-        self.assertIn(test_list0, plot_list[0])
+        self.assertIn(test_list0, plot_list[1])
         # SATURDAY IN
-        self.assertIn(test_list1, plot_list[1])
+        self.assertIn(test_list1, plot_list[0])
         # MONDAY NOT IN
         self.assertNotIn(test_list2, plot_list[0])
