summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Siegel <ssiegel@sdas.net>2017-03-21 05:18:35 +0100
committerChristian Geier <github@lostpackets.de>2017-03-22 22:33:42 +0100
commit26dbb5eeb246038eb3877eaf75a9669d705cd54d (patch)
tree9d9e24efdb9431834e53da031f6686b85930066f
parent3d2be563983d4003238fb5adb238af7505b4c99f (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__.py26
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):