src/gtkticker.c

Tue, 22 Aug 2000 00:37:01 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Tue, 22 Aug 2000 00:37:01 +0000
changeset 736
0e380859da63
parent 430
39105dbbbc21
child 1114
a1e5c60bd23d
permissions
-rw-r--r--

[gaim-migrate @ 746]
Eric the Lumberjack continues to hack away at the tree. When people ask
what kinds of trees Eric hacks, he simply replied "CVS trees. They're
mostly used for computer stuff". Then the ignorants go away, thinking
they have been enlightened into the world of computers, which unknowingly
they have been.

430
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
1 /* GTK - The GIMP Toolkit
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
3 *
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
4 * This library is free software; you can redistribute it and/or
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
5 * modify it under the terms of the GNU Library General Public
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
6 * License as published by the Free Software Foundation; either
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
7 * version 2 of the License, or (at your option) any later version.
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
8 *
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
9 * This library is distributed in the hope that it will be useful,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
12 * Library General Public License for more details.
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
13 *
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
14 * You should have received a copy of the GNU Library General Public
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
15 * License along with this library; if not, write to the
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
17 * Boston, MA 02111-1307, USA.
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
18 */
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
19
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
20 /*
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
21 * GtkTicker Copyright 2000 Syd Logan
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
22 */
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
23
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
24 #include "gtkticker.h"
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
25
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
26 static void gtk_ticker_compute_offsets (GtkTicker *ticker);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
27 static void gtk_ticker_class_init (GtkTickerClass *klass);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
28 static void gtk_ticker_init (GtkTicker *ticker);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
29 static void gtk_ticker_map (GtkWidget *widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
30 static void gtk_ticker_realize (GtkWidget *widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
31 static void gtk_ticker_size_request (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
32 GtkRequisition *requisition);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
33 static void gtk_ticker_size_allocate (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
34 GtkAllocation *allocation);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
35 static void gtk_ticker_paint (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
36 GdkRectangle *area);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
37 static void gtk_ticker_draw (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
38 GdkRectangle *area);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
39 static gint gtk_ticker_expose (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
40 GdkEventExpose *event);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
41 static void gtk_ticker_add_real (GtkContainer *container,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
42 GtkWidget *widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
43 static void gtk_ticker_remove_real (GtkContainer *container,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
44 GtkWidget *widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
45 static void gtk_ticker_forall (GtkContainer *container,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
46 gboolean include_internals,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
47 GtkCallback callback,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
48 gpointer callback_data);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
49 static GtkType gtk_ticker_child_type (GtkContainer *container);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
50
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
51
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
52 static GtkContainerClass *parent_class = NULL;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
53
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
54
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
55 GtkType
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
56 gtk_ticker_get_type (void)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
57 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
58 static GtkType ticker_type = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
59
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
60 if (!ticker_type)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
61 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
62 static const GtkTypeInfo ticker_info =
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
63 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
64 "GtkTicker",
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
65 sizeof (GtkTicker),
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
66 sizeof (GtkTickerClass),
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
67 (GtkClassInitFunc) gtk_ticker_class_init,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
68 (GtkObjectInitFunc) gtk_ticker_init,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
69 /* reserved_1 */ NULL,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
70 /* reserved_2 */ NULL,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
71 (GtkClassInitFunc) NULL,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
72 };
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
73
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
74 ticker_type = gtk_type_unique (GTK_TYPE_CONTAINER, &ticker_info);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
75 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
76
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
77 return ticker_type;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
78 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
79
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
80 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
81 gtk_ticker_class_init (GtkTickerClass *class)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
82 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
83 GtkObjectClass *object_class;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
84 GtkWidgetClass *widget_class;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
85 GtkContainerClass *container_class;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
86
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
87 object_class = (GtkObjectClass*) class;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
88 widget_class = (GtkWidgetClass*) class;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
89 container_class = (GtkContainerClass*) class;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
90
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
91 parent_class = gtk_type_class (GTK_TYPE_CONTAINER);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
92
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
93 widget_class->map = gtk_ticker_map;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
94 widget_class->realize = gtk_ticker_realize;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
95 widget_class->size_request = gtk_ticker_size_request;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
96 widget_class->size_allocate = gtk_ticker_size_allocate;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
97 widget_class->draw = gtk_ticker_draw;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
98 widget_class->expose_event = gtk_ticker_expose;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
99
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
100 container_class->add = gtk_ticker_add_real;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
101 container_class->remove = gtk_ticker_remove_real;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
102 container_class->forall = gtk_ticker_forall;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
103 container_class->child_type = gtk_ticker_child_type;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
104 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
105
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
106 static GtkType
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
107 gtk_ticker_child_type (GtkContainer *container)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
108 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
109 return GTK_TYPE_WIDGET;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
110 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
111
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
112 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
113 gtk_ticker_init (GtkTicker *ticker)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
114 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
115 GTK_WIDGET_UNSET_FLAGS (ticker, GTK_NO_WINDOW);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
116
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
117 ticker->interval = (guint) 200;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
118 ticker->scootch = (guint) 2;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
119 ticker->children = NULL;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
120 ticker->timer = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
121 ticker->dirty = TRUE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
122 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
123
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
124 GtkWidget*
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
125 gtk_ticker_new (void)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
126 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
127 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
128
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
129 ticker = gtk_type_new (GTK_TYPE_TICKER);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
130 return GTK_WIDGET (ticker);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
131 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
132
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
133 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
134 gtk_ticker_put (GtkTicker *ticker,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
135 GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
136 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
137 GtkTickerChild *child_info;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
138
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
139 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
140 g_return_if_fail (GTK_IS_TICKER (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
141 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
142
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
143 child_info = g_new(GtkTickerChild, 1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
144 child_info->widget = widget;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
145 child_info->x = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
146
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
147 gtk_widget_set_parent(widget, GTK_WIDGET (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
148
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
149 ticker->children = g_list_append (ticker->children, child_info);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
150
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
151 if (GTK_WIDGET_REALIZED (ticker))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
152 gtk_widget_realize (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
153
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
154 if (GTK_WIDGET_VISIBLE (ticker) && GTK_WIDGET_VISIBLE (widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
155 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
156 if (GTK_WIDGET_MAPPED (ticker))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
157 gtk_widget_map (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
158
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
159 gtk_widget_queue_resize (GTK_WIDGET (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
160 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
161 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
162
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
163 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
164 gtk_ticker_set_interval (GtkTicker *ticker, gint interval )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
165 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
166 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
167 g_return_if_fail (GTK_IS_TICKER (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
168
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
169 if ( interval < 0 )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
170 interval = 200;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
171 ticker->interval = interval;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
172
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
173 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
174
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
175 guint
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
176 gtk_ticker_get_interval (GtkTicker *ticker )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
177 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
178 g_return_val_if_fail (ticker != NULL, -1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
179 g_return_val_if_fail (GTK_IS_TICKER (ticker), -1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
180
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
181 return ticker->interval;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
182 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
183
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
184 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
185 gtk_ticker_set_scootch (GtkTicker *ticker, gint scootch )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
186 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
187 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
188 g_return_if_fail (GTK_IS_TICKER (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
189
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
190 if ( scootch <= 0 )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
191 scootch = 2;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
192 ticker->scootch = scootch;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
193 ticker->dirty = TRUE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
194 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
195
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
196 guint
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
197 gtk_ticker_get_scootch (GtkTicker *ticker )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
198 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
199 g_return_val_if_fail (ticker != NULL, -1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
200 g_return_val_if_fail (GTK_IS_TICKER (ticker), -1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
201
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
202 return ticker->scootch;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
203 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
204
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
205 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
206 gtk_ticker_set_spacing (GtkTicker *ticker, gint spacing )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
207 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
208 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
209 g_return_if_fail (GTK_IS_TICKER (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
210
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
211 if ( spacing < 0 )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
212 spacing = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
213 ticker->spacing = spacing;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
214 ticker->dirty = TRUE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
215
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
216 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
217
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
218 static int
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
219 ticker_timeout( gpointer data )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
220 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
221 GtkTicker *ticker = (GtkTicker *) data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
222
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
223 if (GTK_WIDGET_VISIBLE (ticker))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
224 gtk_widget_queue_resize (GTK_WIDGET (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
225
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
226 return( TRUE );
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
227 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
228
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
229 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
230 gtk_ticker_start_scroll(GtkTicker *ticker)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
231 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
232 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
233 g_return_if_fail (GTK_IS_TICKER (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
234 if ( ticker->timer != 0 )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
235 return;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
236 ticker->timer = gtk_timeout_add(ticker->interval,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
237 ticker_timeout, ticker);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
238 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
239
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
240 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
241 gtk_ticker_stop_scroll(GtkTicker *ticker)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
242 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
243 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
244 g_return_if_fail (GTK_IS_TICKER (ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
245 if ( ticker->timer == 0 )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
246 return;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
247 gtk_timeout_remove( ticker->timer );
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
248 ticker->timer = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
249
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
250 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
251
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
252 guint
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
253 gtk_ticker_get_spacing (GtkTicker *ticker )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
254 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
255 g_return_val_if_fail (ticker != NULL, -1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
256 g_return_val_if_fail (GTK_IS_TICKER (ticker), -1);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
257
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
258 return ticker->spacing;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
259 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
260
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
261 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
262 gtk_ticker_map (GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
263 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
264 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
265 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
266 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
267
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
268 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
269 g_return_if_fail (GTK_IS_TICKER (widget));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
270
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
271 GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
272 ticker = GTK_TICKER (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
273
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
274 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
275 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
276 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
277 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
278 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
279
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
280 if (GTK_WIDGET_VISIBLE (child->widget) &&
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
281 !GTK_WIDGET_MAPPED (child->widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
282 gtk_widget_map (child->widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
283 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
284
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
285 gdk_window_show (widget->window);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
286 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
287
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
288 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
289 gtk_ticker_realize (GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
290 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
291 GdkWindowAttr attributes;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
292 gint attributes_mask;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
293
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
294 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
295 g_return_if_fail (GTK_IS_TICKER (widget));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
296
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
297 GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
298
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
299 attributes.window_type = GDK_WINDOW_CHILD;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
300 attributes.x = widget->allocation.x;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
301 attributes.y = widget->allocation.y;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
302 attributes.width = widget->allocation.width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
303 attributes.height = widget->allocation.height;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
304 attributes.wclass = GDK_INPUT_OUTPUT;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
305 attributes.visual = gtk_widget_get_visual (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
306 attributes.colormap = gtk_widget_get_colormap (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
307 attributes.event_mask = gtk_widget_get_events (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
308 attributes.event_mask |= GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
309
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
310 attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
311
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
312 widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
313 &attributes, attributes_mask);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
314 gdk_window_set_user_data (widget->window, widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
315
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
316 widget->style = gtk_style_attach (widget->style, widget->window);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
317 gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
318 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
319
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
320 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
321 gtk_ticker_size_request (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
322 GtkRequisition *requisition)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
323 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
324 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
325 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
326 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
327 GtkRequisition child_requisition;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
328
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
329 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
330 g_return_if_fail (GTK_IS_TICKER (widget));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
331 g_return_if_fail (requisition != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
332
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
333 ticker = GTK_TICKER (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
334 requisition->width = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
335 requisition->height = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
336
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
337 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
338 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
339 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
340 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
341 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
342
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
343 if (GTK_WIDGET_VISIBLE (child->widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
344 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
345 gtk_widget_size_request (child->widget, &child_requisition);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
346
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
347 requisition->height = MAX (requisition->height,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
348 child_requisition.height);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
349 requisition->width += child_requisition.width + ticker->spacing;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
350 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
351 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
352 if ( requisition->width > ticker->spacing )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
353 requisition->width -= ticker->spacing;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
354
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
355 requisition->height += GTK_CONTAINER (ticker)->border_width * 2;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
356 requisition->width += GTK_CONTAINER (ticker)->border_width * 2;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
357 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
358
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
359 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
360 gtk_ticker_compute_offsets (GtkTicker *ticker)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
361 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
362 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
363 GtkRequisition child_requisition;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
364 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
365 guint16 border_width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
366
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
367 g_return_if_fail (ticker != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
368 g_return_if_fail (GTK_IS_TICKER(ticker));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
369
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
370 border_width = GTK_CONTAINER (ticker)->border_width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
371
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
372 ticker->width = GTK_WIDGET(ticker)->allocation.width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
373 ticker->total = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
374 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
375 while (children) {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
376 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
377
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
378 child->x = 0;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
379 if (GTK_WIDGET_VISIBLE (child->widget)) {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
380 gtk_widget_get_child_requisition (child->widget, &child_requisition);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
381 child->offset = ticker->total;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
382 ticker->total +=
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
383 child_requisition.width + border_width + ticker->spacing;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
384 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
385 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
386 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
387 ticker->dirty = FALSE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
388 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
389
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
390 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
391 gtk_ticker_size_allocate (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
392 GtkAllocation *allocation)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
393 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
394 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
395 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
396 GtkAllocation child_allocation;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
397 GtkRequisition child_requisition;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
398 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
399 guint16 border_width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
400
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
401 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
402 g_return_if_fail (GTK_IS_TICKER(widget));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
403 g_return_if_fail (allocation != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
404
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
405 ticker = GTK_TICKER (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
406
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
407 if ( GTK_WIDGET(ticker)->allocation.width != ticker->width )
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
408 ticker->dirty = TRUE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
409
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
410 if ( ticker->dirty == TRUE ) {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
411 gtk_ticker_compute_offsets( ticker );
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
412 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
413
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
414 widget->allocation = *allocation;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
415 if (GTK_WIDGET_REALIZED (widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
416 gdk_window_move_resize (widget->window,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
417 allocation->x,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
418 allocation->y,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
419 allocation->width,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
420 allocation->height);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
421
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
422 border_width = GTK_CONTAINER (ticker)->border_width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
423
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
424 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
425 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
426 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
427 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
428 child->x -= ticker->scootch;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
429
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
430 if (GTK_WIDGET_VISIBLE (child->widget)) {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
431 gtk_widget_get_child_requisition (child->widget, &child_requisition);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
432 child_allocation.width = child_requisition.width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
433 child_allocation.x = child->offset + border_width + child->x;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
434 if ( ( child_allocation.x + child_allocation.width ) < GTK_WIDGET(ticker)->allocation.x ) {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
435 if ( ticker->total >= GTK_WIDGET(ticker)->allocation.width ) {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
436 child->x += GTK_WIDGET(ticker)->allocation.x + GTK_WIDGET(ticker)->allocation.width + ( ticker->total - ( GTK_WIDGET(ticker)->allocation.x + GTK_WIDGET(ticker)->allocation.width ) );
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
437 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
438 else {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
439 child->x += GTK_WIDGET(ticker)->allocation.x + GTK_WIDGET(ticker)->allocation.width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
440 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
441 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
442 child_allocation.y = border_width;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
443 child_allocation.height = child_requisition.height;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
444 gtk_widget_size_allocate (child->widget, &child_allocation);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
445 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
446 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
447 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
448 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
449
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
450 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
451 gtk_ticker_paint (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
452 GdkRectangle *area)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
453 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
454 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
455 g_return_if_fail (GTK_IS_TICKER (widget));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
456 g_return_if_fail (area != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
457
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
458 if (GTK_WIDGET_DRAWABLE (widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
459 gdk_window_clear_area (widget->window, 0, 0, widget->allocation.width,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
460 widget->allocation.height);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
461 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
462
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
463 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
464 gtk_ticker_draw (GtkWidget *widget,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
465 GdkRectangle *area)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
466 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
467 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
468 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
469 GdkRectangle child_area;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
470 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
471
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
472 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
473 g_return_if_fail (GTK_IS_TICKER (widget));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
474
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
475 if (GTK_WIDGET_DRAWABLE (widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
476 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
477 ticker = GTK_TICKER (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
478 gtk_ticker_paint (widget, area);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
479
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
480 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
481 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
482 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
483 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
484 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
485 gtk_widget_draw (child->widget, NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
486 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
487 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
488 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
489
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
490 static gint
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
491 gtk_ticker_expose (GtkWidget *widget, GdkEventExpose *event)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
492 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
493 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
494 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
495 GdkEventExpose child_event;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
496 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
497
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
498 g_return_val_if_fail (widget != NULL, FALSE);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
499 g_return_val_if_fail (GTK_IS_TICKER (widget), FALSE);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
500 g_return_val_if_fail (event != NULL, FALSE);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
501
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
502 if (GTK_WIDGET_DRAWABLE (widget))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
503 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
504 ticker = GTK_TICKER (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
505
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
506 child_event = *event;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
507
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
508 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
509 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
510 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
511 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
512 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
513
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
514 if (GTK_WIDGET_NO_WINDOW (child->widget) &&
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
515 gtk_widget_intersect (child->widget, &event->area,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
516 &child_event.area))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
517 gtk_widget_event (child->widget, (GdkEvent*) &child_event);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
518 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
519 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
520
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
521 return FALSE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
522 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
523
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
524 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
525 gtk_ticker_add(GtkTicker *ticker, GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
526 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
527 gtk_ticker_add_real( GTK_CONTAINER( ticker ), widget );
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
528 ticker->dirty = TRUE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
529 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
530
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
531 void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
532 gtk_ticker_remove(GtkTicker *ticker, GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
533 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
534 gtk_ticker_remove_real( GTK_CONTAINER( ticker ), widget );
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
535 ticker->dirty = TRUE;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
536 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
537
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
538 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
539 gtk_ticker_add_real(GtkContainer *container,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
540 GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
541 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
542 g_return_if_fail (container != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
543 g_return_if_fail (GTK_IS_TICKER (container));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
544 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
545
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
546 gtk_ticker_put(GTK_TICKER (container), widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
547 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
548
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
549 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
550 gtk_ticker_remove_real(GtkContainer *container,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
551 GtkWidget *widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
552 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
553 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
554 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
555 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
556
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
557 g_return_if_fail (container != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
558 g_return_if_fail (GTK_IS_TICKER (container));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
559 g_return_if_fail (widget != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
560
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
561 ticker = GTK_TICKER (container);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
562
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
563 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
564 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
565 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
566 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
567
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
568 if (child->widget == widget)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
569 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
570 gboolean was_visible = GTK_WIDGET_VISIBLE (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
571
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
572 gtk_widget_unparent (widget);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
573
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
574 ticker->children = g_list_remove_link (ticker->children, children);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
575 g_list_free (children);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
576 g_free (child);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
577
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
578 if (was_visible && GTK_WIDGET_VISIBLE (container))
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
579 gtk_widget_queue_resize (GTK_WIDGET (container));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
580
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
581 break;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
582 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
583
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
584 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
585 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
586 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
587
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
588 static void
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
589 gtk_ticker_forall (GtkContainer *container,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
590 gboolean include_internals,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
591 GtkCallback callback,
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
592 gpointer callback_data)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
593 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
594 GtkTicker *ticker;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
595 GtkTickerChild *child;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
596 GList *children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
597
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
598 g_return_if_fail (container != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
599 g_return_if_fail (GTK_IS_TICKER (container));
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
600 g_return_if_fail (callback != NULL);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
601
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
602 ticker = GTK_TICKER (container);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
603
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
604 children = ticker->children;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
605 while (children)
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
606 {
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
607 child = children->data;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
608 children = children->next;
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
609
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
610 (* callback) (child->widget, callback_data);
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
611 }
39105dbbbc21 [gaim-migrate @ 440]
Syd Logan <slogan@users.sourceforge.net>
parents:
diff changeset
612 }

mercurial