pidgin/plugins/ticker/gtkticker.c

Wed, 21 Sep 2011 06:45:26 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 21 Sep 2011 06:45:26 +0000
changeset 32575
eb4fc932fae9
parent 30024
f15d76be2ef8
child 32382
ff09c7d01b39
child 41357
758a7925a920
permissions
-rw-r--r--

Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.

Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).

We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.

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

mercurial