[education/rkward] /: Fix some problems with model change notifications for changes in object meta data

Thomas Friedrichsmeier null at kde.org
Sun Jul 24 08:24:51 BST 2022


Git commit 8d3b9b29eae2bf7fecd820d1376e5f8fe174aad1 by Thomas Friedrichsmeier.
Committed on 24/07/2022 at 07:24.
Pushed by tfry into branch 'master'.

Fix some problems with model change notifications for changes in object meta data

M  +1    -0    ChangeLog
M  +2    -2    rkward/core/rkmodificationtracker.cpp
M  +5    -5    rkward/core/robject.cpp

https://invent.kde.org/education/rkward/commit/8d3b9b29eae2bf7fecd820d1376e5f8fe174aad1

diff --git a/ChangeLog b/ChangeLog
index 784529c4..b06f3a05 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+- Fixed: Workspace browser would not always show change, immediately, when object type changes
 - Fixed: Crash when using the "Git blame" kate plugin
 - Fixed: Problem installing R support package in some configurations
 - Fixed: Menubar would disapper after opening script editor, in some configurations
diff --git a/rkward/core/rkmodificationtracker.cpp b/rkward/core/rkmodificationtracker.cpp
index e06ef336..08f043fc 100644
--- a/rkward/core/rkmodificationtracker.cpp
+++ b/rkward/core/rkmodificationtracker.cpp
@@ -171,7 +171,7 @@ void RKModificationTracker::objectMetaChanged (RObject *object) {
 		sendListenerNotification (RObjectListener::MetaChanged, object, 0, 0, 0);
 
 		QModelIndex object_index = indexFor (object);
-		emit dataChanged(object_index, object_index);
+		emit dataChanged(object_index, object_index.sibling(object_index.row(), ColumnCount-1));
 	}
 }
 
@@ -183,7 +183,7 @@ void RKModificationTracker::objectDataChanged (RObject *object, RObject::ChangeS
 		delete changes;
 
 		QModelIndex object_index = indexFor (object);
-		emit dataChanged(object_index, object_index);	// might have changed dimensions, for instance
+		emit dataChanged(object_index, object_index.sibling(object_index.row(), ColumnCount-1)); // might have changed dimensions, for instance
 	}
 }
 
diff --git a/rkward/core/robject.cpp b/rkward/core/robject.cpp
index 842fbfad..060cfa2d 100644
--- a/rkward/core/robject.cpp
+++ b/rkward/core/robject.cpp
@@ -338,11 +338,11 @@ bool RObject::updateStructure (RData *new_data) {
 
 	RData::RDataStorage new_data_data = new_data->structureVector ();
 	properties_change = updateName (new_data_data.at (StoragePositionName));
-	properties_change = updateType (new_data_data.at (StoragePositionType));
-	properties_change = updateClasses (new_data_data.at (StoragePositionClass));
-	properties_change = updateMeta (new_data_data.at (StoragePositionMeta));
-	properties_change = updateDimensions (new_data_data.at (StoragePositionDims));
-	properties_change = updateSlots (new_data_data.at (StoragePositionSlots));
+	properties_change |= updateType (new_data_data.at (StoragePositionType));
+	properties_change |= updateClasses (new_data_data.at (StoragePositionClass));
+	properties_change |= updateMeta (new_data_data.at (StoragePositionMeta));
+	properties_change |= updateDimensions (new_data_data.at (StoragePositionDims));
+	properties_change |= updateSlots (new_data_data.at (StoragePositionSlots));
 
 	if (properties_change) RKModificationTracker::instance()->objectMetaChanged (this);
 	if (type & NeedDataUpdate) updateDataFromR (0);


More information about the rkward-tracker mailing list