JeffHoogland / ePad

A simple text editor written in python and elementary
GNU General Public License v3.0
4 stars 8 forks source link

unsavedWorkPopup behavior under multiple close clicks #16

Closed rbtylee closed 7 years ago

rbtylee commented 7 years ago

I noticed this error because I have a Kensington mouse that has been malfunctioning lately. Actually an older version of the one I link to above. Specifically sometimes single clicks are magically turned into double clicks. A minor annoyance I have been ignoring for months now.

However 'Xing out ePad" and clicking No on the You have unsaved work Popup sometimes was giving me:

Traceback (most recent call last):
  File "efl/evas/efl.evas_object_smart.pxi", line 426, in efl.evas._smart_callback (efl/evas/efl.evas.c:82366)
  File "epad.py", line 453, in closePopup
    self.confirmPopup.delete()
AttributeError: 'NoneType' object has no attribute 'delete'

For the record this error did not occur with efl 1.18.4, only started occurring after we updated to 1.19.1. Must be some minor difference in the way efl handles dismissed callbacks or whatnot.

Adding some debugging code to epad and I can see this error occurs when my mouse is sending double clicks and hence the callback_delete_request is being called twice. Changing my mouse to an old fully functioning Dell Mouse I keep as a backup and naturally I don't have that problem. But that lead to me to investigate what happens if I simulate that error.

So open ePad and type some text and click X in the Title Bar and then click X again. Now on the You have unsaved work Popup click No. Note it does not appear to dismiss the Popup. In reality it does dismiss it but there is a Popup underneath it. Clicking No again gives the error above.

I wasn't sure we should handle cases of broken Hardware breaking our apps, that is to be expected. BUT I am sure we should handle the case of users doing unexpected things like Xing out an App multiple times.

kaihu commented 7 years ago

This made me think that I should write a section about object lifetime in py-efl documentation. Going to do that now in fact.

rbtylee commented 7 years ago

Certainly worth writing kaihu :+1: