Bem, o melhor é que funciona com o Ubuntu 12.10 e o GTK 3.6 (é esse número de versão? IDK).
Então, basicamente, o que estou fazendo é definir meu contêiner da barra de status como INSENSITIVE via Gtk.StateFlags.INSENSITIVE).
Esta propriedade é estilizada via CSS. Aqui está minha fonte :
def poll_for_motion(self):
if (self.was_motion == False
and self.status_bar_visible
and self.buffer_modified_for_status_bar):
self.status_bar.set_state_flags(Gtk.StateFlags.INSENSITIVE, True)
self.status_bar_visible = False
self.buffer_modified_for_status_bar = False
return False
self.was_motion = False
return True
def on_motion_notify(self, widget, data=None):
self.was_motion = True
if self.status_bar_visible == False:
self.status_bar_visible = True
self.buffer_modified_for_status_bar = False
self.update_line_and_char_count()
self.status_bar.set_state_flags(Gtk.StateFlags.NORMAL, True)
GObject.timeout_add(3000, self.poll_for_motion)
E o CSS que complementa:
#status_bar_box GtkLabel:insensitive {
color: rgba(255,255,255,0);
transition: 500ms ease-in-out;
}
#status_bar_box GtkButton:insensitive {
background: rgba(255,255,255,0);
transition: 500ms ease-in-out;
}