Preserve sort order when removing rows

This commit is contained in:
Kovid Goyal 2022-02-16 08:32:18 +05:30
parent cad142847a
commit 8464187b7a
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -186,10 +186,12 @@ class EmailAccounts(QAbstractTableModel): # {{{
self.endResetModel()
return self.index(self.account_order.index(y), 0)
def remove(self, index):
if index.isValid():
row = index.row()
def remove_rows(self, *rows):
for row in sorted(rows, reverse=True):
try:
account = self.account_order[row]
except Exception:
continue
self.accounts.pop(account)
self.account_order = sorted(self.accounts)
has_default = False
@ -202,6 +204,11 @@ class EmailAccounts(QAbstractTableModel): # {{{
self.beginResetModel()
self.endResetModel()
self.do_sort()
def remove(self, index):
if index.isValid():
self.remove(index.row())
# }}}
@ -270,11 +277,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.changed_signal.emit()
def remove_email_account(self, *args):
row_map = {}
rows = set()
for idx in self.email_view.selectionModel().selectedIndexes():
row_map[idx.row()] = idx
for idx in sorted(row_map.values(), reverse=True):
self._email_accounts.remove(idx)
rows.add(idx.row())
self._email_accounts.remove_rows(*rows)
self.changed_signal.emit()
def refresh_gui(self, gui):