diff --git a/sloth/annotations/model.py b/sloth/annotations/model.py index 29f6f2b..e62d959 100644 --- a/sloth/annotations/model.py +++ b/sloth/annotations/model.py @@ -203,9 +203,11 @@ class KeyValueModelItem(ModelItem, MutableMapping): def __getitem__(self, key): return self._dict[key] - def _emitDataChanged(self): + def _emitDataChanged(self, key): if self.model() is not None: - self.model().dataChanged.emit(self.index(), self.index()) + index_tl = self._items[key].index() + index_br = self._items[key].index(1) + self.model().dataChanged.emit(index_tl, index_br) def __setitem__(self, key, value): if key not in self._dict: @@ -216,7 +218,7 @@ class KeyValueModelItem(ModelItem, MutableMapping): elif self._dict[key] != value: self._dict[key] = value # TODO: Emit for hidden key/values? - self._emitDataChanged() + self._emitDataChanged(key) def __delitem__(self, key): del self._dict[key] diff --git a/sloth/gui/annotationscene.py b/sloth/gui/annotationscene.py index 14b80c1..f0800c9 100644 --- a/sloth/gui/annotationscene.py +++ b/sloth/gui/annotationscene.py @@ -264,13 +264,14 @@ class AnnotationScene(QGraphicsScene): if not self.root_.isValid(): return - if self.root_ != indexFrom.parent() or self.root_ != indexTo.parent(): + annotation_item_index= indexFrom.parent() + + if self.root_ != annotation_item_index.parent(): return - for row in range(indexFrom.row(), indexTo.row()+1): - item = self.itemFromIndex(indexFrom.sibling(row, 0)) - if item is not None: - item.dataChanged() + item = self.itemFromIndex(annotation_item_index) + if item is not None: + item.dataChanged() def rowsInserted(self, index, first, last): if self.root_ != index: