When a event has duration zero because the start and end times are identical,
ZeroDivisionError's are raised:
```
Traceback (most recent call last):
File "/home/fortysixandtwo/install/lib/python3.9/site-packages/confy/widgets.py", line 130, in _on_draw
prc = min(max(pos/dur, 0.0), 1.0)
ZeroDivisionError: float division by zero
```
This patch ensures that prc is either 0 if the event is in the future
or 1, if it's in the past.
Closes #18
---
src/pages.py | 10 ++++++++--src/widgets.py | 10 ++++++++--
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/pages.py b/src/pages.py
index 5e6c09f..4920aae 100644
--- a/src/pages.py+++ b/src/pages.py
@@ -506,8 +506,14 @@ class EventDetailPage(BasePage):
w = self.get_allocated_width()
dur = (obj.end.timestamp() - obj.start.timestamp())
- pos = (now.timestamp() - obj.start.timestamp())- prc = min(max(pos/dur, 0.0), 1.0)+ if dur > 0:+ pos = (now.timestamp() - obj.start.timestamp())
+ prc = min(max(pos/dur, 0.0), 1.0)+ else:+ # not a valid event duration+ # set prc to 0 if the event is in the future or 1 if in the past+ prc = int(pos >= 0)
+ x = w * prc
cr.set_source_rgb(0, 0, 0)
diff --git a/src/widgets.py b/src/widgets.py
index 528244d..16969f5 100644
--- a/src/widgets.py+++ b/src/widgets.py
@@ -126,8 +126,14 @@ class EventActionRow(Handy.ActionRow):
h = self.get_allocated_height()
dur = (obj.end.timestamp() - obj.start.timestamp())
- pos = (now.timestamp() - obj.start.timestamp())- prc = min(max(pos/dur, 0.0), 1.0)+ if dur > 0:+ pos = (now.timestamp() - obj.start.timestamp())+ prc = min(max(pos/dur, 0.0), 1.0)+ else:+ # not a valid event duration+ # set prc to 0 if the event is in the future or 1 if in the past+ prc = int(pos >= 0)+ y = h * prc
cr.set_source_rgb(0, 0, 0)
--
2.30.2