id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc	distribution	status_field
203	traceback on accepting invitation	sascha_silbe	marcopg	"Priority set to minor because there's no apparent effect except for the traceback itself.
Also filed as Debian bug #511894 [1].

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511894

Upon accepting an invitation, the following traceback will occur (on the machine accepting the invitation):

Traceback (most recent call last):
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/animator.py"", line 66, in _next_frame_cb
    animation.do_frame(current_time, self._duration, self._easing)
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/animator.py"", line 92, in do_frame
    self.next_frame(frame)
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/palette.py"", line 728, in next_frame
    self._palette._hide()
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/palette.py"", line 564, in _hide
    self.menu.set_active(False)
AttributeError: 'NoneType' object has no attribute 'set_active'


This seems to be due to calling _hide again after __destroy_cb. Custom debugging output, filtered on the instance the traceback occured on:

__init__: self = <ActivityInvitePalette object at 0x9c296e4 (SugarPalette at 0xa01c2e0)>, self.menu = <_Menu object at 0x9c29acc (SugarPaletteMenu at 0xa027210)>
_hide: self = <ActivityInvitePalette object at 0x9c296e4 (SugarPalette at 0xa01c2e0)>, self.menu = <_Menu object at 0x9c29acc (SugarPaletteMenu at 0xa027210)>
__destroy_cb: self = <ActivityInvitePalette object at 0x9c296e4 (SugarPalette at 0xa01c2e0)>, self.menu = None
_hide: self = <ActivityInvitePalette object at 0x9c296e4 (SugarPalette at 0xa01c2e0)>, self.menu = None


Stack trace from the __destroy_cb call:

  File ""/usr/bin/sugar-shell"", line 32, in <module>
    main()
  File ""/usr/share/sugar/shell/main.py"", line 151, in main
    gtk.main()
  File ""/usr/share/sugar/shell/view/frame/activitiestray.py"", line 364, in __invite_clicked_cb
    self._invites.remove_invite(invite)
  File ""/usr/share/sugar/shell/model/Invites.py"", line 103, in remove_invite
    self.emit('invite-removed', invite)
  File ""/usr/share/sugar/shell/view/frame/activitiestray.py"", line 372, in __invite_removed_cb
    self._remove_invite(invite)
  File ""/usr/share/sugar/shell/view/frame/activitiestray.py"", line 392, in _remove_invite
    self._invite_to_item[invite].destroy()
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/toolbutton.py"", line 75, in __destroy_cb
    self._palette_invoker.detach()
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/palette.py"", line 975, in detach
    Invoker.detach(self)
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/palette.py"", line 772, in detach
    self._palette.destroy()
  File ""/usr/lib/python2.5/site-packages/sugar/graphics/palette.py"", line 284, in __destroy_cb
    traceback.print_stack()


The self._palette._hide() call belongs to _PopdownAnimation:


class _PopdownAnimation(animator.Animation):
    def __init__(self, palette):
        animator.Animation.__init__(self, 0.0, 1.0)
        self._palette = palette

    def next_frame(self, current):
        if current == 1.0:
            self._palette._hide()


Looks like this animation object should be destroyed as well when removing the invitation.

"	defect	closed	minor		sugar	0.82.x	Minor	fixed			Debian	New
