Blame libwnck/test-urgent.c

Packit 4e910c
/* vim: set sw=2 et: */
Packit 4e910c
Packit 4e910c
#include <gtk/gtk.h>
Packit 4e910c
Packit 4e910c
static void
Packit 4e910c
set_urgent (GtkWidget *window,
Packit 4e910c
            gboolean   urgent)
Packit 4e910c
{
Packit 4e910c
  GtkWidget *label;
Packit 4e910c
Packit 4e910c
  label = gtk_bin_get_child (GTK_BIN (window));
Packit 4e910c
Packit 4e910c
  if (urgent)
Packit 4e910c
    {
Packit 4e910c
      gtk_window_set_urgency_hint (GTK_WINDOW (window), TRUE);
Packit 4e910c
      gtk_window_set_title (GTK_WINDOW (window), "Test Window - Urgent");
Packit 4e910c
      gtk_label_set_text (GTK_LABEL (label), "I am urgent!");
Packit 4e910c
    }
Packit 4e910c
  else
Packit 4e910c
    {
Packit 4e910c
      gtk_window_set_urgency_hint (GTK_WINDOW (window), FALSE);
Packit 4e910c
      gtk_window_set_title (GTK_WINDOW (window), "Test Window");
Packit 4e910c
      gtk_label_set_text (GTK_LABEL (label), "I'm not urgent.");
Packit 4e910c
    }
Packit 4e910c
}
Packit 4e910c
Packit 4e910c
static gboolean
Packit 4e910c
make_urgent (GtkWidget *widget)
Packit 4e910c
{
Packit 4e910c
  set_urgent (widget, TRUE);
Packit 4e910c
  g_object_set_data (G_OBJECT (widget), "wnck-timeout", NULL);
Packit 4e910c
Packit 4e910c
  return FALSE;
Packit 4e910c
}
Packit 4e910c
Packit 4e910c
static gboolean
Packit 4e910c
focused_in (GtkWidget     *widget,
Packit 4e910c
            GdkEventFocus *event,
Packit 4e910c
            gpointer       user_data)
Packit 4e910c
{
Packit 4e910c
  guint id;
Packit 4e910c
Packit 4e910c
  set_urgent (widget, FALSE);
Packit 4e910c
Packit 4e910c
  id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "wnck-timeout"));
Packit 4e910c
  g_object_set_data (G_OBJECT (widget), "wnck-timeout", NULL);
Packit 4e910c
Packit 4e910c
  if (id)
Packit 4e910c
    g_source_remove (id);
Packit 4e910c
Packit 4e910c
  return FALSE;
Packit 4e910c
}
Packit 4e910c
Packit 4e910c
static gboolean
Packit 4e910c
focused_out (GtkWidget     *widget,
Packit 4e910c
             GdkEventFocus *event,
Packit 4e910c
             gpointer       user_data)
Packit 4e910c
{
Packit 4e910c
  guint id;
Packit 4e910c
Packit 4e910c
  id = g_timeout_add_seconds (3, (GSourceFunc) make_urgent, widget);
Packit 4e910c
  g_object_set_data (G_OBJECT (widget), "wnck-timeout", GUINT_TO_POINTER (id));
Packit 4e910c
Packit 4e910c
  return FALSE;
Packit 4e910c
}
Packit 4e910c
Packit 4e910c
int
Packit 4e910c
main (int argc, char **argv)
Packit 4e910c
{
Packit 4e910c
  GtkWidget *win;
Packit 4e910c
  GtkWidget *label;
Packit 4e910c
Packit 4e910c
  gtk_init (&argc, &argv);
Packit 4e910c
Packit 4e910c
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 4e910c
  label = gtk_label_new ("");
Packit 4e910c
  gtk_container_add (GTK_CONTAINER (win), label);
Packit 4e910c
  gtk_window_set_keep_above (GTK_WINDOW (win), TRUE);
Packit 4e910c
  gtk_widget_show_all (win);
Packit 4e910c
Packit 4e910c
  g_signal_connect (G_OBJECT (win), "focus-in-event",
Packit 4e910c
                    G_CALLBACK (focused_in),
Packit 4e910c
                    NULL);
Packit 4e910c
  g_signal_connect (G_OBJECT (win), "focus-out-event",
Packit 4e910c
                    G_CALLBACK (focused_out),
Packit 4e910c
                    NULL);
Packit 4e910c
  g_signal_connect (G_OBJECT (win), "destroy",
Packit 4e910c
                    G_CALLBACK (gtk_main_quit),
Packit 4e910c
                    NULL);
Packit 4e910c
Packit 4e910c
  set_urgent (win, FALSE);
Packit 4e910c
Packit 4e910c
  gtk_main ();
Packit 4e910c
Packit 4e910c
  return 0;
Packit 4e910c
}