summaryrefslogtreecommitdiff
path: root/alot/widgets
diff options
context:
space:
mode:
authorPatrick Totzke <patricktotzke@gmail.com>2013-05-04 19:27:31 +0100
committerPatrick Totzke <patricktotzke@gmail.com>2013-05-04 19:27:31 +0100
commit749f4ef9ec85e4570aa79cb25b49d50320c83c9b (patch)
tree892658d4eacb933ed76eb8dcfecb6a51db0e2c32 /alot/widgets
parent10a763910c00a299ef9e78d9db6838256e14b906 (diff)
Fix duplicate display of headers
This separates the code dealing with the case "display all headers" from the case "display selected heders" in `MesageTree.construct_header_pile` and ensures that 1. in "all in" case, no headers will be duplicated and 2. in the filtered case, the order of headers given in the whitelist parameter) is preserved. fixes #601
Diffstat (limited to 'alot/widgets')
-rw-r--r--alot/widgets/thread.py50
1 files changed, 27 insertions, 23 deletions
diff --git a/alot/widgets/thread.py b/alot/widgets/thread.py
index 5d2e2bda..17b43883 100644
--- a/alot/widgets/thread.py
+++ b/alot/widgets/thread.py
@@ -271,33 +271,37 @@ class MessageTree(CollapsibleTree):
def construct_header_pile(self, headers=None, normalize=True):
mail = self._message.get_email()
+ lines = []
+
if headers is None:
+ # collect all header/value pairs in the order they appear
headers = mail.keys()
+ for key, value in mail.items():
+ dvalue = decode_header(value, normalize=normalize)
+ lines.append((key, dvalue))
else:
- headers = [k for k in headers if
- k.lower() == 'tags' or k in mail]
-
- lines = []
- for key in headers:
- if key in mail:
- if key.lower() in ['cc', 'bcc', 'to']:
- values = mail.get_all(key)
- values = [decode_header(
- v, normalize=normalize) for v in values]
+ # only a selection of headers should be displayed.
+ # use order of the `headers` parameter
+ for key in headers:
+ if key in mail:
+ if key.lower() in ['cc', 'bcc', 'to']:
+ values = mail.get_all(key)
+ values = [decode_header(
+ v, normalize=normalize) for v in values]
+ lines.append((key, ', '.join(values)))
+ else:
+ for value in mail.get_all(key):
+ dvalue = decode_header(value, normalize=normalize)
+ lines.append((key, dvalue))
+ elif key.lower() == 'tags':
+ logging.debug('want tags header')
+ values = []
+ for t in self._message.get_tags():
+ tagrep = settings.get_tagstring_representation(t)
+ if t is not tagrep['translated']:
+ t = '%s (%s)' % (tagrep['translated'], t)
+ values.append(t)
lines.append((key, ', '.join(values)))
- else:
- for value in mail.get_all(key):
- dvalue = decode_header(value, normalize=normalize)
- lines.append((key, dvalue))
- elif key.lower() == 'tags':
- logging.debug('want tags header')
- values = []
- for t in self._message.get_tags():
- tagrep = settings.get_tagstring_representation(t)
- if t is not tagrep['translated']:
- t = '%s (%s)' % (tagrep['translated'], t)
- values.append(t)
- lines.append((key, ', '.join(values)))
key_att = settings.get_theming_attribute('thread', 'header_key')
value_att = settings.get_theming_attribute('thread', 'header_value')