Bug #1909332: Duplicated rules appear to overwrite next item in list Edit

Actually the duplicated rule was exchanged with the last rule.
This commit is contained in:
Charles Haley 2020-12-26 09:22:12 +00:00
parent d7a7dd755f
commit 530238b2fb

View File

@ -784,12 +784,11 @@ class RulesModel(QAbstractListModel): # {{{
def move(self, idx, delta): def move(self, idx, delta):
row = idx.row() + delta row = idx.row() + delta
if row >= 0 and row < len(self.rules): if row >= 0 and row < len(self.rules):
t = self.rules[row] self.beginResetModel()
self.rules[row] = self.rules[row-delta] t = self.rules.pop(row-delta)
self.rules[row-delta] = t self.rules.insert(row, t) # does append if row >= len(rules)
self.dataChanged.emit(idx, idx) self.endResetModel()
idx = self.index(row) idx = self.index(row)
self.dataChanged.emit(idx, idx)
return idx return idx
def clear(self): def clear(self):
@ -1136,6 +1135,7 @@ class EditRules(QWidget): # {{{
idx = self.model.move(idx, -1) idx = self.model.move(idx, -1)
if idx is not None: if idx is not None:
sm.select(idx, QItemSelectionModel.SelectionFlag.Toggle) sm.select(idx, QItemSelectionModel.SelectionFlag.Toggle)
self.rules_view.setCurrentIndex(idx)
self.changed.emit() self.changed.emit()
def move_down(self): def move_down(self):
@ -1150,6 +1150,7 @@ class EditRules(QWidget): # {{{
idx = self.model.move(idx, 1) idx = self.model.move(idx, 1)
if idx is not None: if idx is not None:
sm.select(idx, QItemSelectionModel.SelectionFlag.Toggle) sm.select(idx, QItemSelectionModel.SelectionFlag.Toggle)
self.rules_view.setCurrentIndex(idx)
self.changed.emit() self.changed.emit()
def clear(self): def clear(self):