diff options
author | Stefan Siegel <ssiegel@sdas.net> | 2017-03-21 05:18:35 +0100 |
---|---|---|
committer | Christian Geier <github@lostpackets.de> | 2017-03-22 22:33:42 +0100 |
commit | 26dbb5eeb246038eb3877eaf75a9669d705cd54d (patch) | |
tree | 9d9e24efdb9431834e53da031f6686b85930066f | |
parent | 3d2be563983d4003238fb5adb238af7505b4c99f (diff) |
Fix viewing/editing logic in ikhal
Test case for the unexpected behavior which is fixed by this commit:
Show the first event of some day, then
- with event_view_always_visible = False:
press Escape, Up, Down, Enter
- with event_view_always_visible = True:
press Up, Down
The expected result is to just view the event, but previously the edit form was opened.
-rw-r--r-- | khal/ui/__init__.py | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/khal/ui/__init__.py b/khal/ui/__init__.py index 41a5d9e4..95609b5c 100644 --- a/khal/ui/__init__.py +++ b/khal/ui/__init__.py @@ -886,7 +886,10 @@ class EventColumn(urwid.WidgetWrap): return True def keypress(self, size, key): + prev_shown = self._eventshown + self._eventshown = False self.clear_event_view() + if key in self._conf['keybindings']['new']: self.new(self.focus_date, None) key = None @@ -904,23 +907,18 @@ class EventColumn(urwid.WidgetWrap): rval = super().keypress(size, key) if self.focus_event: - if key in self._conf['keybindings']['view'] or \ + if key in self._conf['keybindings']['view'] and \ + prev_shown == self.focus_event.recuid: + # the event in focus is already viewed -> edit + if self.delete_status(self.focus_event.recuid): + self.pane.window.alert(('light red', 'This event is marked as deleted')) + self.edit(self.focus_event.event) + elif key in self._conf['keybindings']['view'] or \ self._conf['view']['event_view_always_visible']: - if self._eventshown == self.focus_event.recuid: - # the event in focus is already viewed -> edit - self.clear_event_view() # do not move before the if condition - if self.delete_status(self.focus_event.recuid): - self.pane.window.alert(('alert', 'This event is marked as deleted')) - self.edit(self.focus_event.event) - else: - self.clear_event_view() - self._eventshown = self.focus_event.recuid - self.view(self.focus_event.event) + self._eventshown = self.focus_event.recuid + self.view(self.focus_event.event) elif key in self._conf['keybindings']['external_edit']: self.edit(self.focus_event.event, external_edit=True) - if key in ['esc'] and self._eventshown: - self.clear_event_view() - key = None return rval def render(self, a, focus): |