Mon, 01 Apr 2019 21:57:01 -0400
Fixup typo in sound theme title.
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
1 | /* pidgin |
| 15094 | 2 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
3 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 15094 | 4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 5 | * source distribution. | |
| 6 | * | |
| 7 | * This program is free software; you can redistribute it and/or modify | |
| 8 | * it under the terms of the GNU General Public License as published by | |
| 9 | * the Free Software Foundation; either version 2 of the License, or | |
| 10 | * (at your option) any later version. | |
| 11 | * | |
| 12 | * This program is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | * GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 18 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
16254
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 15094 | 20 | */ |
| 21 | ||
| 22 | #include "gtkscrollbook.h" | |
| 23 | ||
|
35531
03bb64bf8a72
Fix gtk2 build again
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35528
diff
changeset
|
24 | #include "gtk3compat.h" |
| 15094 | 25 | |
| 15577 | 26 | static void pidgin_scroll_book_init (PidginScrollBook *scroll_book); |
| 27 | static void pidgin_scroll_book_class_init (PidginScrollBookClass *klass); | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
28 | static void pidgin_scroll_book_forall (GtkContainer *c, |
| 15240 | 29 | gboolean include_internals, |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
30 | GtkCallback callback, |
| 15240 | 31 | gpointer user_data); |
| 15094 | 32 | |
| 33 | GType | |
| 15577 | 34 | pidgin_scroll_book_get_type (void) |
| 15094 | 35 | { |
| 36 | static GType scroll_book_type = 0; | |
| 37 | ||
| 38 | if (!scroll_book_type) | |
| 39 | { | |
| 40 | static const GTypeInfo scroll_book_info = | |
| 41 | { | |
| 15577 | 42 | sizeof (PidginScrollBookClass), |
| 15094 | 43 | NULL, /* base_init */ |
| 44 | NULL, /* base_finalize */ | |
| 15577 | 45 | (GClassInitFunc) pidgin_scroll_book_class_init, |
| 15094 | 46 | NULL, /* class_finalize */ |
| 47 | NULL, /* class_data */ | |
| 15577 | 48 | sizeof (PidginScrollBook), |
| 15094 | 49 | 0, |
| 15577 | 50 | (GInstanceInitFunc) pidgin_scroll_book_init, |
| 15094 | 51 | NULL /* value_table */ |
| 52 | }; | |
| 53 | ||
|
37994
11829debec7a
Replace Gtk[HV]Box with GtkBox.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
35531
diff
changeset
|
54 | scroll_book_type = g_type_register_static(GTK_TYPE_BOX, |
| 15577 | 55 | "PidginScrollBook", |
| 15094 | 56 | &scroll_book_info, |
| 57 | 0); | |
| 58 | } | |
| 59 | ||
| 60 | return scroll_book_type; | |
| 61 | } | |
| 62 | ||
|
22032
8136dd5eeda3
Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21763
diff
changeset
|
63 | static gboolean |
|
31179
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
64 | scroll_left_cb(PidginScrollBook *scroll_book, GdkEventButton *event) |
| 15094 | 65 | { |
| 66 | int index; | |
|
31179
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
67 | |
|
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
68 | if (event->type != GDK_BUTTON_PRESS) |
|
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
69 | return FALSE; |
|
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
70 | |
| 15094 | 71 | index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); |
| 72 | ||
| 73 | if (index > 0) | |
| 74 | gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), index - 1); | |
|
22032
8136dd5eeda3
Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21763
diff
changeset
|
75 | return TRUE; |
| 15094 | 76 | } |
| 77 | ||
|
22032
8136dd5eeda3
Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21763
diff
changeset
|
78 | static gboolean |
|
31179
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
79 | scroll_right_cb(PidginScrollBook *scroll_book, GdkEventButton *event) |
| 15094 | 80 | { |
| 81 | int index, count; | |
|
31179
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
82 | |
|
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
83 | if (event->type != GDK_BUTTON_PRESS) |
|
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
84 | return FALSE; |
|
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
85 | |
| 15094 | 86 | index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); |
| 87 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
88 | |
| 15094 | 89 | if (index + 1 < count) |
| 90 | gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), index + 1); | |
|
22032
8136dd5eeda3
Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21763
diff
changeset
|
91 | return TRUE; |
| 15094 | 92 | } |
| 93 | ||
| 94 | static void | |
| 15577 | 95 | refresh_scroll_box(PidginScrollBook *scroll_book, int index, int count) |
| 15094 | 96 | { |
| 97 | char *label; | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
98 | |
|
15114
4224e5db3ee4
[gaim-migrate @ 17836]
Mark Doliner <markdoliner@pidgin.im>
parents:
15094
diff
changeset
|
99 | gtk_widget_show_all(GTK_WIDGET(scroll_book)); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
100 | if (count < 1) |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
101 | gtk_widget_hide(scroll_book->hbox); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
102 | else { |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
103 | gtk_widget_show_all(scroll_book->hbox); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
104 | if (count == 1) { |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
105 | gtk_widget_hide(scroll_book->label); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
106 | gtk_widget_hide(scroll_book->left_arrow); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
107 | gtk_widget_hide(scroll_book->right_arrow); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
108 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
109 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
110 | |
| 15094 | 111 | label = g_strdup_printf("<span size='smaller' weight='bold'>(%d/%d)</span>", index+1, count); |
| 112 | gtk_label_set_markup(GTK_LABEL(scroll_book->label), label); | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
113 | g_free(label); |
| 15094 | 114 | |
| 115 | if (index == 0) | |
| 116 | gtk_widget_set_sensitive(scroll_book->left_arrow, FALSE); | |
| 117 | else | |
| 118 | gtk_widget_set_sensitive(scroll_book->left_arrow, TRUE); | |
| 119 | ||
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
120 | |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
121 | if (index + 1 == count) |
| 15094 | 122 | gtk_widget_set_sensitive(scroll_book->right_arrow, FALSE); |
| 123 | else | |
| 124 | gtk_widget_set_sensitive(scroll_book->right_arrow, TRUE); | |
| 125 | } | |
| 126 | ||
| 127 | ||
| 128 | static void | |
| 15577 | 129 | page_count_change_cb(PidginScrollBook *scroll_book) |
| 15094 | 130 | { |
| 15243 | 131 | int count; |
| 15094 | 132 | int index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); |
| 15243 | 133 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); |
| 15094 | 134 | refresh_scroll_box(scroll_book, index, count); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
135 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
136 | |
|
22032
8136dd5eeda3
Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21763
diff
changeset
|
137 | static gboolean |
|
31179
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
138 | scroll_close_cb(PidginScrollBook *scroll_book, GdkEventButton *event) |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
139 | { |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
31179
diff
changeset
|
140 | if (event->type == GDK_BUTTON_PRESS) |
|
31179
245a26364487
The left/right scroll, and close buttons in a PidginScrollBook should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29499
diff
changeset
|
141 | gtk_widget_destroy(gtk_notebook_get_nth_page(GTK_NOTEBOOK(scroll_book->notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)))); |
|
22032
8136dd5eeda3
Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21763
diff
changeset
|
142 | return FALSE; |
| 15094 | 143 | } |
| 144 | ||
| 145 | static void | |
|
32915
27891bd13ca3
It appears that GtkNotebookPage is deprecated, though the 'switch-page'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
31294
diff
changeset
|
146 | switch_page_cb(GtkNotebook *notebook, GtkWidget *page, guint page_num, PidginScrollBook *scroll_book) |
| 15094 | 147 | { |
|
15320
c4eea0409712
[gaim-migrate @ 18048]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15246
diff
changeset
|
148 | int count; |
|
c4eea0409712
[gaim-migrate @ 18048]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15246
diff
changeset
|
149 | count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); |
| 15094 | 150 | refresh_scroll_box(scroll_book, page_num, count); |
| 151 | } | |
| 152 | ||
| 153 | static void | |
| 15577 | 154 | pidgin_scroll_book_add(GtkContainer *container, GtkWidget *widget) |
| 15094 | 155 | { |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
156 | PidginScrollBook *scroll_book; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
157 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
158 | g_return_if_fail(GTK_IS_WIDGET (widget)); |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
159 | g_return_if_fail(gtk_widget_get_parent(widget) == NULL); |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
160 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
161 | scroll_book = PIDGIN_SCROLL_BOOK(container); |
|
21719
b4d7c3fe216c
I'm pretty sure this is what was intended.
Daniel Atallah <datallah@pidgin.im>
parents:
21670
diff
changeset
|
162 | scroll_book->children = g_list_append(scroll_book->children, widget); |
| 15094 | 163 | gtk_widget_show(widget); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
164 | gtk_notebook_append_page(GTK_NOTEBOOK(scroll_book->notebook), widget, NULL); |
| 15577 | 165 | page_count_change_cb(PIDGIN_SCROLL_BOOK(container)); |
| 15094 | 166 | } |
| 167 | ||
| 168 | static void | |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
169 | pidgin_scroll_book_remove(GtkContainer *container, GtkWidget *widget) |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
170 | { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
171 | int page; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
172 | PidginScrollBook *scroll_book; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
173 | g_return_if_fail(GTK_IS_WIDGET(widget)); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
174 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
175 | scroll_book = PIDGIN_SCROLL_BOOK(container); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
176 | scroll_book->children = g_list_remove(scroll_book->children, widget); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
177 | /* gtk_widget_unparent(widget); */ |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
178 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
179 | page = gtk_notebook_page_num(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), widget); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
180 | if (page >= 0) { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
181 | gtk_notebook_remove_page(GTK_NOTEBOOK(PIDGIN_SCROLL_BOOK(container)->notebook), page); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
182 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
183 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
184 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
185 | static void |
| 15577 | 186 | pidgin_scroll_book_forall(GtkContainer *container, |
| 15240 | 187 | gboolean include_internals, |
| 188 | GtkCallback callback, | |
| 189 | gpointer callback_data) | |
| 190 | { | |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
191 | #if 0 |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
192 | GList *children; |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
193 | #endif |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
194 | PidginScrollBook *scroll_book; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
195 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
196 | g_return_if_fail(GTK_IS_CONTAINER(container)); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
197 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
198 | scroll_book = PIDGIN_SCROLL_BOOK(container); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
199 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
200 | if (include_internals) { |
| 15240 | 201 | (*callback)(scroll_book->hbox, callback_data); |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
202 | (*callback)(scroll_book->notebook, callback_data); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
203 | } |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
204 | |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
205 | #if 0 |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
206 | children = scroll_book->children; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
207 | |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
208 | while (children) { |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
209 | GtkWidget *child; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
210 | child = children->data; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
211 | children = children->next; |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
212 | (*callback)(child, callback_data); |
|
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
213 | } |
|
21760
0f73c3c192ac
My previous commit caused the scrollbook's children to be tracked correctly - it turns out that this causes problems because they really aren't the children of the scrollbook, they're the notebook'children. This stuff needs to be revisited.
Daniel Atallah <datallah@pidgin.im>
parents:
21719
diff
changeset
|
214 | #endif |
| 15240 | 215 | } |
| 216 | ||
| 217 | static void | |
| 15577 | 218 | pidgin_scroll_book_class_init (PidginScrollBookClass *klass) |
| 15094 | 219 | { |
| 220 | GtkContainerClass *container_class = (GtkContainerClass*)klass; | |
| 221 | ||
| 15577 | 222 | container_class->add = pidgin_scroll_book_add; |
|
21670
9ce6e7374523
This fixes the problem where all accounts are disabled due to connection
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20147
diff
changeset
|
223 | container_class->remove = pidgin_scroll_book_remove; |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
224 | container_class->forall = pidgin_scroll_book_forall; |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
225 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
226 | |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
227 | static gboolean |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
228 | close_button_left_cb(GtkWidget *widget, GdkEventCrossing *event, GtkLabel *label) |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
229 | { |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
230 | static GdkCursor *ptr = NULL; |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
231 | if (ptr == NULL) { |
|
37997
7b62a2153898
Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37994
diff
changeset
|
232 | GdkDisplay *display = gtk_widget_get_display(widget); |
|
7b62a2153898
Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37994
diff
changeset
|
233 | ptr = gdk_cursor_new_for_display(display, GDK_LEFT_PTR); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
234 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
235 | |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
236 | gtk_label_set_markup(label, "×"); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
237 | gdk_window_set_cursor(event->window, ptr); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
238 | return FALSE; |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
239 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
240 | |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
241 | static gboolean |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
242 | close_button_entered_cb(GtkWidget *widget, GdkEventCrossing *event, GtkLabel *label) |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
243 | { |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
244 | static GdkCursor *hand = NULL; |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
245 | if (hand == NULL) { |
|
37997
7b62a2153898
Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37994
diff
changeset
|
246 | GdkDisplay *display = gtk_widget_get_display(widget); |
|
7b62a2153898
Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37994
diff
changeset
|
247 | hand = gdk_cursor_new_for_display(display, GDK_HAND2); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
248 | } |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
249 | |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
250 | gtk_label_set_markup(label, "<u>×</u>"); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
251 | gdk_window_set_cursor(event->window, hand); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
252 | return FALSE; |
| 15094 | 253 | } |
| 254 | ||
| 255 | static void | |
| 15577 | 256 | pidgin_scroll_book_init (PidginScrollBook *scroll_book) |
| 15094 | 257 | { |
| 258 | GtkWidget *eb; | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
259 | GtkWidget *close_button; |
| 15094 | 260 | |
|
37994
11829debec7a
Replace Gtk[HV]Box with GtkBox.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
35531
diff
changeset
|
261 | gtk_orientable_set_orientation(GTK_ORIENTABLE(scroll_book), GTK_ORIENTATION_VERTICAL); |
|
11829debec7a
Replace Gtk[HV]Box with GtkBox.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
35531
diff
changeset
|
262 | |
|
35528
e04ba70092e9
Fix the rest of [hv] gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35454
diff
changeset
|
263 | scroll_book->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); |
| 15094 | 264 | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
265 | /* Close */ |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
266 | eb = gtk_event_box_new(); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
267 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
268 | gtk_event_box_set_visible_window(GTK_EVENT_BOX(eb), FALSE); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
269 | gtk_widget_set_events(eb, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
270 | close_button = gtk_label_new("×"); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
271 | g_signal_connect(G_OBJECT(eb), "enter-notify-event", G_CALLBACK(close_button_entered_cb), close_button); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
272 | g_signal_connect(G_OBJECT(eb), "leave-notify-event", G_CALLBACK(close_button_left_cb), close_button); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
273 | gtk_container_add(GTK_CONTAINER(eb), close_button); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
274 | g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_close_cb), scroll_book); |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
275 | |
|
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
276 | /* Right arrow */ |
| 15094 | 277 | eb = gtk_event_box_new(); |
| 278 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); | |
|
38004
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
279 | #if GTK_CHECK_VERSION(3,14,0) |
|
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
280 | scroll_book->right_arrow = gtk_image_new_from_icon_name("pan-right-symbolic", GTK_ICON_SIZE_BUTTON); |
|
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
281 | #else |
| 15094 | 282 | scroll_book->right_arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE); |
|
38004
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
283 | #endif |
| 15094 | 284 | gtk_container_add(GTK_CONTAINER(eb), scroll_book->right_arrow); |
| 285 | g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_right_cb), scroll_book); | |
| 286 | ||
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
287 | /* Count */ |
| 15094 | 288 | scroll_book->label = gtk_label_new(NULL); |
| 289 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), scroll_book->label, FALSE, FALSE, 0); | |
| 290 | ||
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
291 | /* Left arrow */ |
| 15094 | 292 | eb = gtk_event_box_new(); |
| 293 | gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); | |
|
38004
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
294 | #if GTK_CHECK_VERSION(3,14,0) |
|
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
295 | scroll_book->left_arrow = gtk_image_new_from_icon_name("pan-left-symbolic", GTK_ICON_SIZE_BUTTON); |
|
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
296 | #else |
| 15094 | 297 | scroll_book->left_arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE); |
|
38004
2a9e87b2a89c
Remove deprecated gtk_arrow_new calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37997
diff
changeset
|
298 | #endif |
| 15094 | 299 | gtk_container_add(GTK_CONTAINER(eb), scroll_book->left_arrow); |
| 300 | g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_left_cb), scroll_book); | |
| 301 | ||
| 302 | gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->hbox, FALSE, FALSE, 0); | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
303 | |
| 15094 | 304 | scroll_book->notebook = gtk_notebook_new(); |
| 305 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(scroll_book->notebook), FALSE); | |
| 306 | gtk_notebook_set_show_border(GTK_NOTEBOOK(scroll_book->notebook), FALSE); | |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
307 | |
| 15094 | 308 | gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->notebook, TRUE, TRUE, 0); |
|
21763
95ce28fc860a
Patch from DB42 to add a little '×' in a scrollbook. I edited the patch in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21760
diff
changeset
|
309 | |
|
15190
4ce2829864f0
[gaim-migrate @ 17914]
Mark Doliner <markdoliner@pidgin.im>
parents:
15120
diff
changeset
|
310 | g_signal_connect_swapped(G_OBJECT(scroll_book->notebook), "remove", G_CALLBACK(page_count_change_cb), scroll_book); |
| 15094 | 311 | g_signal_connect(G_OBJECT(scroll_book->notebook), "switch-page", G_CALLBACK(switch_page_cb), scroll_book); |
| 15243 | 312 | gtk_widget_show_all(scroll_book->notebook); |
| 15094 | 313 | } |
| 314 | ||
| 315 | GtkWidget * | |
| 15577 | 316 | pidgin_scroll_book_new() |
| 15094 | 317 | { |
| 15577 | 318 | return g_object_new(PIDGIN_TYPE_SCROLL_BOOK, NULL); |
| 15094 | 319 | } |