From b6ba9912158b427a6f1c245445f8d12a516010c2 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Thu, 20 Feb 2020 09:48:52 -0800 Subject: [PATCH] Display line comments from all patchsets in change view The change view did not display comments from previous patchsets, only comments associated with the patchset of the current message. This displays them from all patchsets, annotating them with the patchset number when it is different. Note, the line comments were correctly displayed in the diff view. Change-Id: Ieda0de0bb24800b9c3f577f339ca1338f2f1cc38 --- gertty/view/change.py | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/gertty/view/change.py b/gertty/view/change.py index a1dca9d..f4170ef 100644 --- a/gertty/view/change.py +++ b/gertty/view/change.py @@ -387,11 +387,11 @@ class ChangeButton(urwid.Button): self.change_view.app.error(e.message) class ChangeMessageBox(mywid.HyperText): - def __init__(self, change_view, message): + def __init__(self, change_view, change, message): super(ChangeMessageBox, self).__init__(u'') self.change_view = change_view self.app = change_view.app - self.refresh(message) + self.refresh(change, message) def formatReply(self): text = self.message_text @@ -430,7 +430,7 @@ class ChangeMessageBox(mywid.HyperText): row = self.change_view.revision_rows[self.revision_key] row.review_button.openReview(reply_text) - def refresh(self, message): + def refresh(self, change, message): self.revision_key = message.revision.key self.message_created = message.created self.message_author = message.author_name @@ -476,14 +476,18 @@ class ChangeMessageBox(mywid.HyperText): comment_text = commentlink.run(self.app, comment_text) inline_comments = {} - for file in message.revision.files: - comments = [c for c in file.comments - if c.author.id == message.author.id - and c.created == message.created] - for comment in comments: - path = comment.file.path - inline_comments.setdefault(path, []) - inline_comments[path].append((comment.line or 0, comment.message)) + for revno, revision in enumerate(change.revisions): + for file in revision.files: + comments = [c for c in file.comments + if c.author.id == message.author.id + and c.created == message.created] + for comment in comments: + path = comment.file.path + inline_comments.setdefault(path, []) + comment_ps = revno + 1 + if comment_ps == message.revision.number: + comment_ps = None + inline_comments[path].append((comment_ps or 0, comment.line or 0, comment.message)) for v in inline_comments.values(): v.sort() @@ -491,11 +495,16 @@ class ChangeMessageBox(mywid.HyperText): comment_text.append(u'\n') for key, value in inline_comments.items(): comment_text.append(('filename-inline-comment', u'%s' % key)) - for line, comment in value: - if not line: - comment_text.append(u'\n %s\n' % comment) - else: - comment_text.append(u'\n %s: %s\n' % (line, comment)) + for patchset, line, comment in value: + location_str = '' + if patchset: + location_str += "PS%i" % patchset + if line: location_str += ", " + if line: + location_str += str(line) + if location_str: + location_str += ": " + comment_text.append(u'\n %s%s\n' % (location_str, comment)) self.set_text(text+comment_text) @@ -830,7 +839,7 @@ class ChangeView(urwid.WidgetWrap): for message in display_messages: row = self.message_rows.get(message.key) if not row: - box = ChangeMessageBox(self, message) + box = ChangeMessageBox(self, change, message) row = urwid.Padding(box, width=80) self.listbox.body.insert(listbox_index, row) self.message_rows[message.key] = row