self._cleanup does the self._file.close() anyway if the file exists.
The self._file.close() removed here is redundant, and will always
fail on file not found, which is handled in send_head by returning
None for self._file.
The drag-active property can be set to provide a highlight
when the tray control is accepting target of an ongoing drag.
We can't use the drag_highlight method because we desire to
adjust the background of the widget, rather than drawing on
top of it. Overriding these methods would work in most cases,
but in cases where GTK+ calls drag_unhighlight itself things
could break, so we use a property instead.
The software updater was deleting ~/Activities when it encountered a bad
bundle. Two separate issues: we didn't sanity check the bundle root to
ensure it wasn't '.' or '..' or something crazy like that, and our "clean
up on failure" code was deleting the install_root instead of the activity
root (!). This was a regression introduced by the fix for #7733 in
commit db2d1c42e2481d6dbc15405840ac23e46eab7318 (0.82.2).
The gtk Menu class supports 'table menus', where the menu entries can
be laid out in a grid. This is useful for horizontal menus, and for
dense menus of icons, and for wrapping the menu when it gets too long,
etc.
The Menu.attach() method is used to add entries to a menu by row and
column:
http://www.pygtk.org/docs/pygtk/class-gtkmenu.html#method-gtkmenu--attach
However, the callback in _Menu, defined in palette.py, only triggers
on do_insert(), and so the signal emission (and subsequent
palette._update_separators() call, which places the line underneath
the menu title text at top) never occurs when you add entries using
attach(). _Menu now overrides attach() and emits the proper signal.
Threads and signals don't get along too well together. Instead, use
gobject's spawn_async functionality which already has the necessary zombie-
reaping integrated into the gobject event loop.
screenshots on user-initiated activity save and close. Check before saving
that the window is not fully obscured, as it might be if the user initiates the
close from the frame--- this would produce incorrect screenshots. The check
for visibility is done by attaching a handler to the Activity class which
handles visibility-notify-events from X. In the sugar repository equivalent
changes remove automated screenshot acquisition from window manager navigation
events (e.g. tabbing).