|
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 |
}
|