Fix updating flags on threaded changes
If a flag (hold, mark, starred) was changed, the row would lose the threading indication. Correct this. Change-Id: I91aa6c2df4164c8e539e8bd1cf5bd703ddd5e58b
This commit is contained in:
parent
94bfcd13f4
commit
2b302321ba
@ -62,11 +62,12 @@ class ChangeRow(urwid.Button):
|
|||||||
def selectable(self):
|
def selectable(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def __init__(self, app, change, categories, project=False, owner=False,
|
def __init__(self, app, change, prefix, categories, project=False,
|
||||||
updated=False, callback=None):
|
owner=False, updated=False, callback=None):
|
||||||
super(ChangeRow, self).__init__('', on_press=callback, user_data=change.key)
|
super(ChangeRow, self).__init__('', on_press=callback, user_data=change.key)
|
||||||
self.app = app
|
self.app = app
|
||||||
self.change_key = change.key
|
self.change_key = change.key
|
||||||
|
self.prefix = prefix
|
||||||
self.subject = urwid.Text(u'', wrap='clip')
|
self.subject = urwid.Text(u'', wrap='clip')
|
||||||
self.number = urwid.Text(u'')
|
self.number = urwid.Text(u'')
|
||||||
self.updated = urwid.Text(u'')
|
self.updated = urwid.Text(u'')
|
||||||
@ -91,10 +92,7 @@ class ChangeRow(urwid.Button):
|
|||||||
style = 'reviewed-change'
|
style = 'reviewed-change'
|
||||||
else:
|
else:
|
||||||
style = 'unreviewed-change'
|
style = 'unreviewed-change'
|
||||||
if hasattr(change, '_subject'):
|
subject = '%s%s' % (self.prefix, change.subject)
|
||||||
subject = change._subject
|
|
||||||
else:
|
|
||||||
subject = change.subject
|
|
||||||
flag = ' '
|
flag = ' '
|
||||||
if change.starred:
|
if change.starred:
|
||||||
flag = '*'
|
flag = '*'
|
||||||
@ -253,7 +251,9 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
if self.reverse:
|
if self.reverse:
|
||||||
change_list.reverse()
|
change_list.reverse()
|
||||||
if self.app.config.thread_changes:
|
if self.app.config.thread_changes:
|
||||||
change_list = self._threadChanges(change_list)
|
change_list, prefixes = self._threadChanges(change_list)
|
||||||
|
else:
|
||||||
|
prefixes = {}
|
||||||
new_rows = []
|
new_rows = []
|
||||||
if len(self.listbox.body):
|
if len(self.listbox.body):
|
||||||
focus_pos = self.listbox.focus_position
|
focus_pos = self.listbox.focus_position
|
||||||
@ -264,7 +264,9 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
for change in change_list:
|
for change in change_list:
|
||||||
row = self.change_rows.get(change.key)
|
row = self.change_rows.get(change.key)
|
||||||
if not row:
|
if not row:
|
||||||
row = ChangeRow(self.app, change, self.categories,
|
row = ChangeRow(self.app, change,
|
||||||
|
prefixes.get(change.key),
|
||||||
|
self.categories,
|
||||||
self.display_project,
|
self.display_project,
|
||||||
self.display_owner,
|
self.display_owner,
|
||||||
self.display_updated,
|
self.display_updated,
|
||||||
@ -290,6 +292,7 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
|
|
||||||
def _threadChanges(self, changes):
|
def _threadChanges(self, changes):
|
||||||
ret = []
|
ret = []
|
||||||
|
prefixes = {}
|
||||||
stack = ThreadStack()
|
stack = ThreadStack()
|
||||||
children = {}
|
children = {}
|
||||||
commits = {}
|
commits = {}
|
||||||
@ -337,6 +340,7 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
prefix += u' '
|
prefix += u' '
|
||||||
subject = '%s%s' % (prefix, change.subject)
|
subject = '%s%s' % (prefix, change.subject)
|
||||||
change._subject = subject
|
change._subject = subject
|
||||||
|
prefixes[change.key] = prefix
|
||||||
ret.append(change)
|
ret.append(change)
|
||||||
if change in children:
|
if change in children:
|
||||||
stack.push(change, children[change])
|
stack.push(change, children[change])
|
||||||
@ -344,7 +348,7 @@ class ChangeListView(urwid.WidgetWrap):
|
|||||||
if (not change) and orphans:
|
if (not change) and orphans:
|
||||||
change = orphans.pop(0)
|
change = orphans.pop(0)
|
||||||
assert len(ret) == len(changes)
|
assert len(ret) == len(changes)
|
||||||
return ret
|
return (ret, prefixes)
|
||||||
|
|
||||||
def clearChangeList(self):
|
def clearChangeList(self):
|
||||||
for key, value in self.change_rows.iteritems():
|
for key, value in self.change_rows.iteritems():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user