+
+static void hide_timeout(Slit *self)
+{
+ /* dont repeat */
+ timer_stop(self->hide_timer);
+ self->hide_timer = NULL;
+
+ /* hide */
+ self->hidden = TRUE;
+ slit_configure(self);
+}
+
+void slit_hide(Slit *self, gboolean hide)
+{
+ if (self->hidden == hide)
+ return;
+ if (!hide) {
+ /* show */
+ self->hidden = FALSE;
+ slit_configure(self);
+
+ /* if was hiding, stop it */
+ if (self->hide_timer) {
+ timer_stop(self->hide_timer);
+ self->hide_timer = NULL;
+ }
+ } else {
+ g_assert(!self->hide_timer);
+ self->hide_timer = timer_start(3000000,
+ (TimeoutHandler)hide_timeout, self);
+ }
+}