pidgin/gtkutils.c

Mon, 28 Nov 2022 23:20:24 -0600

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 28 Nov 2022 23:20:24 -0600
changeset 41947
7b3312d0760c
parent 41924
7646d24a31be
child 42161
152522734e16
permissions
-rw-r--r--

Bump C standard to C99 for Pidgin files and fix warnings

Bump C standard to C99 for Pidgin files only and fix warnings

Testing Done:
Touched all Pidgin files, compiled and saw no new warnings.

Reviewed at https://reviews.imfreedom.org/r/2103/

20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20036
diff changeset
1 /* pidgin
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
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
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7988
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7988
diff changeset
5 * source distribution.
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
6 *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * (at your option) any later version.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * GNU General Public License for more details.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
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: 19547
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 */
24569
5dbd0617a27d Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@pidgin.im>
parents: 23501
diff changeset
21
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
22 #ifdef HAVE_CONFIG_H
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
23 # include <config.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
24 #endif
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
25
40462
24ed25d87550 Fix some issues on macos that resulted from the internal.h cleanup
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
26 #include <errno.h>
24ed25d87550 Fix some issues on macos that resulted from the internal.h cleanup
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
27
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
28 #include <glib/gi18n-lib.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
29 #include <glib/gstdio.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
30
40474
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40462
diff changeset
31 #include <purple.h>
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40462
diff changeset
32
33477
ed01a53b8afc These changes were what I needed to be able to build on a Macbook Pro with OS
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 33359
diff changeset
33 #ifdef _WIN32
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
34 # undef small
35892
02bf3200b9cb cross-win32: make use of WIN32_LEAN_AND_MEAN define
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35856
diff changeset
35 # include <shellapi.h>
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
36 #endif /*_WIN32*/
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
37
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38 #include <gdk/gdkkeysyms.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
39
39690
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
40 #include <talkatu.h>
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
41
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
42 #include "gtkaccount.h"
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
43
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
44 #include "gtkconv.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9706
diff changeset
45 #include "gtkdialogs.h"
34451
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
46 #include "gtkrequest.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
47 #include "gtkutils.h"
40496
6941fece679b phase2 of pidgin.h: move existing file to pidgincore.h
Gary Kramlich <grim@reaperworld.com>
parents: 40490
diff changeset
48 #include "pidgincore.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
49
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
50 /******************************************************************************
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
51 * Enums
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
52 *****************************************************************************/
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
53
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
54 enum {
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
55 AOP_ICON_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
56 AOP_NAME_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
57 AOP_DATA_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
58 AOP_COLUMN_COUNT
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
59 };
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
60
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
61 enum {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
62 COMPLETION_DISPLAYED_COLUMN, /* displayed completion value */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
63 COMPLETION_BUDDY_COLUMN, /* buddy name */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
64 COMPLETION_NORMALIZED_COLUMN, /* UTF-8 normalized & casefolded buddy name */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
65 COMPLETION_COMPARISON_COLUMN, /* UTF-8 normalized & casefolded value for comparison */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
66 COMPLETION_ACCOUNT_COLUMN, /* account */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
67 COMPLETION_COLUMN_COUNT
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
68 };
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
69
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
70 /******************************************************************************
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
71 * Structs
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
72 *****************************************************************************/
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
73
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
74 typedef struct
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
75 {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
76 GtkWidget *entry;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
77 GtkWidget *accountopt;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
78
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
79 PidginFilterBuddyCompletionEntryFunc filter_func;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
80 gpointer filter_func_user_data;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
81
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
82 GtkListStore *store;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
83 } PidginCompletionData;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
84
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
85 /******************************************************************************
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
86 * Code
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
87 *****************************************************************************/
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
88
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
89 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
90 pidgin_make_frame(GtkWidget *parent, const char *title)
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
91 {
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
92 GtkWidget *vbox, *vbox2, *hbox;
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
93 GtkLabel *label;
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
94 char *labeltitle;
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
95
40490
fb6e46c4c63c Remove PIDGIN_HIG_* constants
Gary Kramlich <grim@reaperworld.com>
parents: 40474
diff changeset
96 vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
97 gtk_box_append(GTK_BOX(parent), vbox);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
98
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
99 label = GTK_LABEL(gtk_label_new(NULL));
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
100
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
101 labeltitle = g_strdup_printf("<span weight=\"bold\">%s</span>", title);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
102 gtk_label_set_markup(label, labeltitle);
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
103 g_free(labeltitle);
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
104
38007
3b971d2ecae1 Simplify gtk_label_set_[xy]align calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
105 gtk_label_set_xalign(GTK_LABEL(label), 0);
3b971d2ecae1 Simplify gtk_label_set_[xy]align calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
106 gtk_label_set_yalign(GTK_LABEL(label), 0);
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
107 gtk_box_append(GTK_BOX(vbox), GTK_WIDGET(label));
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
108 pidgin_set_accessible_label(vbox, label);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
109
40490
fb6e46c4c63c Remove PIDGIN_HIG_* constants
Gary Kramlich <grim@reaperworld.com>
parents: 40474
diff changeset
110 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
111 gtk_box_append(GTK_BOX (vbox), hbox);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
112
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
113 label = GTK_LABEL(gtk_label_new(" "));
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
114 gtk_box_append(GTK_BOX(hbox), GTK_WIDGET(label));
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
115
40490
fb6e46c4c63c Remove PIDGIN_HIG_* constants
Gary Kramlich <grim@reaperworld.com>
parents: 40474
diff changeset
116 vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
117 gtk_box_append(GTK_BOX(hbox), vbox2);
34186
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
118
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
119 g_object_set_data(G_OBJECT(vbox2), "main-vbox", vbox);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
120
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
121 return vbox2;
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
122 }
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
123
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
124 static void
17118
4fbaa628dd8e Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17117
diff changeset
125 aop_option_menu_select_by_data(GtkWidget *optmenu, gpointer data)
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
126 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
127 GtkTreeModel *model;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
128 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
129 gpointer iter_data;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
130 model = gtk_combo_box_get_model(GTK_COMBO_BOX(optmenu));
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
131 if (gtk_tree_model_get_iter_first(model, &iter)) {
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
132 do {
32936
03b440305f19 Looks like I missed a number.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32935
diff changeset
133 gtk_tree_model_get(model, &iter, AOP_DATA_COLUMN, &iter_data, -1);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
134 if (iter_data == data) {
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
135 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(optmenu), &iter);
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
136 return;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
137 }
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
138 } while (gtk_tree_model_iter_next(model, &iter));
17235
f04fc9bbb90b Style changes in if statements.
Richard Laager <rlaager@pidgin.im>
parents: 17234
diff changeset
139 }
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
140 }
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
141
41924
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
142 void
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
143 pidgin_retrieve_user_info(PurpleConnection *conn, const char *name) {
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
144 PurpleNotifyUserInfo *info = NULL;
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
145 PurpleProtocol *protocol = NULL;
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
146
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
147 protocol = purple_connection_get_protocol(conn);
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
148 if(!PURPLE_IS_PROTOCOL_SERVER(protocol)) {
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
149 return;
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
150 }
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
151
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
152 purple_protocol_server_get_info(PURPLE_PROTOCOL_SERVER(protocol), conn,
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
153 name);
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
154
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
155 info = purple_notify_user_info_new();
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
156 purple_notify_user_info_add_pair_plaintext(info, _("Information"),
7646d24a31be Inline purple_serv_get_info and purple_serv_set_info
Gary Kramlich <grim@reaperworld.com>
parents: 41797
diff changeset
157 _("Retrieving..."));
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
158 purple_notify_userinfo(conn, name, info, NULL, NULL);
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
159 purple_notify_user_info_destroy(info);
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
160 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
161
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
162 void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chat)
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
163 {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
164 char *who = NULL;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
165 PurpleProtocol *protocol = NULL;
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
166
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
167 if (chat < 0) {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
168 pidgin_retrieve_user_info(conn, name);
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
169 return;
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
170 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
171
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36608
diff changeset
172 protocol = purple_connection_get_protocol(conn);
36633
2dcb81a189bd Refactored pidgin to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
173 if (protocol != NULL)
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40693
diff changeset
174 who = purple_protocol_chat_get_user_real_name(PURPLE_PROTOCOL_CHAT(protocol), conn, chat, name);
36633
2dcb81a189bd Refactored pidgin to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
175
2dcb81a189bd Refactored pidgin to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
176 pidgin_retrieve_user_info(conn, who ? who : name);
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
177 g_free(who);
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
178 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
179
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
180 void
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
181 pidgin_set_accessible_label(GtkWidget *w, GtkLabel *l)
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
182 {
41568
8effab29be30 Make a11y utility functions work on GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41567
diff changeset
183 GtkAccessible *acc, *label;
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
184
41568
8effab29be30 Make a11y utility functions work on GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41567
diff changeset
185 acc = GTK_ACCESSIBLE(w);
8effab29be30 Make a11y utility functions work on GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41567
diff changeset
186 label = GTK_ACCESSIBLE(l);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
187
18351
b881759cda28 Call gtk_label_set_mnemonic_widget() in pidgin_make_accessible_label. Closes #589
Sean Egan <seanegan@pidgin.im>
parents: 18281
diff changeset
188 /* Make sure mnemonics work */
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
189 gtk_label_set_mnemonic_widget(l, w);
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
190
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
191 /* Create the labeled-by relation */
41568
8effab29be30 Make a11y utility functions work on GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41567
diff changeset
192 gtk_accessible_update_relation(acc, GTK_ACCESSIBLE_RELATION_LABELLED_BY,
8effab29be30 Make a11y utility functions work on GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41567
diff changeset
193 label, NULL, -1);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
194 }
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
195
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
196 static gboolean
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
197 buddyname_completion_match_func(GtkEntryCompletion *completion,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
198 const char *key, GtkTreeIter *iter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
199 G_GNUC_UNUSED gpointer user_data)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
200 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
201 GtkTreeModel *model;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
202 GValue val1;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
203 GValue val2;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
204 const char *tmp;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
205
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
206 model = gtk_entry_completion_get_model(completion);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
207
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
208 val1.g_type = 0;
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
209 gtk_tree_model_get_value(model, iter, COMPLETION_NORMALIZED_COLUMN, &val1);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
210 tmp = g_value_get_string(&val1);
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40094
diff changeset
211 if (tmp != NULL && g_str_has_prefix(tmp, key)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
212 g_value_unset(&val1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
213 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
214 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
215 g_value_unset(&val1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
216
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
217 val2.g_type = 0;
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
218 gtk_tree_model_get_value(model, iter, COMPLETION_COMPARISON_COLUMN, &val2);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
219 tmp = g_value_get_string(&val2);
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40094
diff changeset
220 if (tmp != NULL && g_str_has_prefix(tmp, key)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
221 g_value_unset(&val2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
222 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
223 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
224 g_value_unset(&val2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
225
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
226 return FALSE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
227 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
228
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
229 static gboolean
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
230 buddyname_completion_match_selected_cb(G_GNUC_UNUSED GtkEntryCompletion *completion,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
231 GtkTreeModel *model, GtkTreeIter *iter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
232 PidginCompletionData *data)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
233 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
234 GValue val;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
235 GtkWidget *optmenu = data->accountopt;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
236 PurpleAccount *account;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
237
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
238 val.g_type = 0;
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
239 gtk_tree_model_get_value(model, iter, COMPLETION_BUDDY_COLUMN, &val);
41531
2b86501d13fe Replace gtk_entry_[gs]et_text with gtk_editable_[gs]et_text
Gary Kramlich <grim@reaperworld.com>
parents: 41526
diff changeset
240 gtk_editable_set_text(GTK_EDITABLE(data->entry), g_value_get_string(&val));
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
241 g_value_unset(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
242
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
243 gtk_tree_model_get_value(model, iter, COMPLETION_ACCOUNT_COLUMN, &val);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
244 account = g_value_get_pointer(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
245 g_value_unset(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
246
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
247 if (account == NULL)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
248 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
249
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
250 if (optmenu != NULL)
17385
bf46968ab031 Casting things to gpointer isn't useful, unless they were previously const.
Richard Laager <rlaager@pidgin.im>
parents: 17377
diff changeset
251 aop_option_menu_select_by_data(optmenu, account);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
252
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
253 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
254 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
255
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
256 static void
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
257 add_buddyname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
258 const PurpleAccount *account, const char *buddyname)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
259 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
260 GtkTreeIter iter;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
261 gboolean completion_added = FALSE;
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
262 gchar *normalized_buddyname;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
263 gchar *tmp;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
264
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
265 tmp = g_utf8_normalize(buddyname, -1, G_NORMALIZE_DEFAULT);
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
266 normalized_buddyname = g_utf8_casefold(tmp, -1);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
267 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
268
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
269 /* There's no sense listing things like: 'xxx "xxx"'
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
270 when the name and buddy alias match. */
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
271 if (buddy_alias && !purple_strequal(buddy_alias, buddyname)) {
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
272 char *completion_entry = g_strdup_printf("%s \"%s\"", buddyname, buddy_alias);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
273 char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
274
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
275 tmp = g_utf8_casefold(tmp2, -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
276 g_free(tmp2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
277
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
278 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
279 gtk_list_store_set(store, &iter,
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
280 COMPLETION_DISPLAYED_COLUMN, completion_entry,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
281 COMPLETION_BUDDY_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
282 COMPLETION_NORMALIZED_COLUMN, normalized_buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
283 COMPLETION_COMPARISON_COLUMN, tmp,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
284 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
285 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
286 g_free(completion_entry);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
287 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
288 completion_added = TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
289 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
290
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
291 /* There's no sense listing things like: 'xxx "xxx"'
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
292 when the name and contact alias match. */
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
293 if (contact_alias && !purple_strequal(contact_alias, buddyname)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
294 /* We don't want duplicates when the contact and buddy alias match. */
38260
dcada91c0912 Remove redundant NULL checks
qarkai <qarkai@gmail.com>
parents: 38259
diff changeset
295 if (!purple_strequal(contact_alias, buddy_alias)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
296 char *completion_entry = g_strdup_printf("%s \"%s\"",
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
297 buddyname, contact_alias);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
298 char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
299
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
300 tmp = g_utf8_casefold(tmp2, -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
301 g_free(tmp2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
302
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
303 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
304 gtk_list_store_set(store, &iter,
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
305 COMPLETION_DISPLAYED_COLUMN, completion_entry,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
306 COMPLETION_BUDDY_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
307 COMPLETION_NORMALIZED_COLUMN, normalized_buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
308 COMPLETION_COMPARISON_COLUMN, tmp,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
309 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
310 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
311 g_free(completion_entry);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
312 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
313 completion_added = TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
314 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
315 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
316
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
317 if (completion_added == FALSE) {
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
318 /* Add the buddy's name. */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
319 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
320 gtk_list_store_set(store, &iter,
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
321 COMPLETION_DISPLAYED_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
322 COMPLETION_BUDDY_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
323 COMPLETION_NORMALIZED_COLUMN, normalized_buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
324 COMPLETION_COMPARISON_COLUMN, NULL,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
325 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
326 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
327 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
328
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
329 g_free(normalized_buddyname);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
330 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
331
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
332 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
333 add_completion_list(PidginCompletionData *data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
334 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
335 PurpleBlistNode *gnode, *cnode, *bnode;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
336 PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
337 gpointer user_data = data->filter_func_user_data;
34739
7d507b8b9f92 Refactored pidgin to use the GObject BList API
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
338 gchar *alias;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
339
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
340 gtk_list_store_clear(data->store);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
341
39665
2172e3b8eeef Rename some buddy list accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39568
diff changeset
342 for (gnode = purple_blist_get_default_root(); gnode != NULL;
2172e3b8eeef Rename some buddy list accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39568
diff changeset
343 gnode = gnode->next) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34662
diff changeset
344 if (!PURPLE_IS_GROUP(gnode))
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
345 continue;
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
346
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
347 for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
348 {
41733
a9085b52de8b Rename PurpleContact to PurpleMetaContact.
Gary Kramlich <grim@reaperworld.com>
parents: 41629
diff changeset
349 if (!PURPLE_IS_META_CONTACT(cnode))
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
350 continue;
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
351
34769
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
352 g_object_get(cnode, "alias", &alias, NULL);
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
353
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
354 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
355 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
356 PidginBuddyCompletionEntry entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
357 entry.is_buddy = TRUE;
41137
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41097
diff changeset
358 entry.buddy = (PurpleBuddy *) bnode;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
359
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
360 if (filter_func(&entry, user_data)) {
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
361 add_buddyname_autocomplete_entry(data->store,
34739
7d507b8b9f92 Refactored pidgin to use the GObject BList API
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
362 alias,
41137
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41097
diff changeset
363 purple_buddy_get_contact_alias(entry.buddy),
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41097
diff changeset
364 purple_buddy_get_account(entry.buddy),
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41097
diff changeset
365 purple_buddy_get_name(entry.buddy)
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
366 );
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
367 }
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
368 }
34769
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
369
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
370 g_free(alias);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
371 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
372 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
373 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
374
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
375 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
376 repopulate_autocomplete(G_GNUC_UNUSED gpointer something, gpointer data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
377 {
41797
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
378 add_completion_list(data);
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
379 }
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
380
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
381 static void
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
382 autocomplete_account_added_cb(G_GNUC_UNUSED PurpleAccountManager *manager,
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
383 G_GNUC_UNUSED PurpleAccount *account,
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
384 gpointer data)
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
385 {
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
386 add_completion_list(data);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
387 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
388
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
389 static void
41797
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
390 autocomplete_account_removed_cb(G_GNUC_UNUSED PurpleAccountManager *manager,
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
391 G_GNUC_UNUSED PurpleAccount *account,
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
392 gpointer data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
393 {
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
394 add_completion_list(data);
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
395 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
396
41797
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
397 static void
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
398 buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
399 {
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
400 PurpleAccountManager *manager = purple_account_manager_get_default();
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
401
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
402 purple_signals_disconnect_by_handle(widget);
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
403
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
404 g_signal_handlers_disconnect_by_func(manager,
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
405 G_CALLBACK(autocomplete_account_added_cb), data);
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
406 g_signal_handlers_disconnect_by_func(manager,
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
407 G_CALLBACK(autocomplete_account_removed_cb), data);
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
408
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
409 g_free(data);
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
410 }
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
411
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
412 void
39796
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
413 pidgin_setup_screenname_autocomplete(
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
414 GtkWidget *entry, GtkWidget *chooser,
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
415 PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
416 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
417 PidginCompletionData *data;
41797
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
418 PurpleAccountManager *manager = NULL;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
419
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
420 /*
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
421 * Store the displayed completion value, the buddy name, the UTF-8
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
422 * normalized & casefolded buddy name, the UTF-8 normalized &
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
423 * casefolded value for comparison, and the account.
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
424 */
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
425 GtkListStore *store;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
426
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
427 GtkEntryCompletion *completion;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
428
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
429 data = g_new0(PidginCompletionData, 1);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
430 store = gtk_list_store_new(COMPLETION_COLUMN_COUNT, G_TYPE_STRING,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
431 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
432 G_TYPE_POINTER);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
433
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
434 data->entry = entry;
39796
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
435 data->accountopt = chooser;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
436 if (filter_func == NULL) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
437 data->filter_func = pidgin_screenname_autocomplete_default_filter;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
438 data->filter_func_user_data = NULL;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
439 } else {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
440 data->filter_func = filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
441 data->filter_func_user_data = user_data;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
442 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
443 data->store = store;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
444
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
445 add_completion_list(data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
446
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
447 /* Sort the completion list by buddy name */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
448 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
449 COMPLETION_BUDDY_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
450 GTK_SORT_ASCENDING);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
451
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
452 completion = gtk_entry_completion_new();
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
453 gtk_entry_completion_set_match_func(completion, buddyname_completion_match_func, NULL, NULL);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
454
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
455 g_signal_connect(G_OBJECT(completion), "match-selected",
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
456 G_CALLBACK(buddyname_completion_match_selected_cb), data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
457
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
458 gtk_entry_set_completion(GTK_ENTRY(entry), completion);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
459 g_object_unref(completion);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
460
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
461 gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
462 g_object_unref(store);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
463
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
464 gtk_entry_completion_set_text_column(completion, COMPLETION_DISPLAYED_COLUMN);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
465
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
466 purple_signal_connect(purple_connections_get_handle(), "signed-on", entry,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41312
diff changeset
467 G_CALLBACK(repopulate_autocomplete), data);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
468 purple_signal_connect(purple_connections_get_handle(), "signed-off", entry,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41312
diff changeset
469 G_CALLBACK(repopulate_autocomplete), data);
13366
e01cf252b407 [gaim-migrate @ 15738]
Richard Laager <rlaager@pidgin.im>
parents: 13365
diff changeset
470
41797
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
471 manager = purple_account_manager_get_default();
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
472 g_signal_connect(manager, "added",
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
473 G_CALLBACK(autocomplete_account_added_cb), data);
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
474 g_signal_connect(manager, "removed",
3bc9948e9f3c Use PurpleAccountManager added/removed signals
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41766
diff changeset
475 G_CALLBACK(autocomplete_account_removed_cb), data);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
476
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
477 g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
478 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
479
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
480 gboolean
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
481 pidgin_screenname_autocomplete_default_filter(const PidginBuddyCompletionEntry *completion_entry, gpointer all_accounts) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
482 gboolean all = GPOINTER_TO_INT(all_accounts);
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
483
41137
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41097
diff changeset
484 return all || purple_account_is_connected(purple_buddy_get_account(completion_entry->buddy));
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
485 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
486
35455
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
487 /*
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
488 * "This is so dead sexy."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
489 * "Two thumbs up."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
490 * "Best movie of the year."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
491 *
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
492 * This is the function that handles CTRL+F searching in the buddy list.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
493 * It finds the top-most buddy/group/chat/whatever containing the
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
494 * entered string.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
495 *
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
496 * It's somewhat ineffecient, because we strip all the HTML from the
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
497 * "name" column of the buddy list (because the GtkTreeModel does not
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
498 * contain the screen name in a non-markedup format). But the alternative
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
499 * is to add an extra column to the GtkTreeModel. And this function is
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
500 * used rarely, so it shouldn't matter TOO much.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
501 */
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
502 gboolean
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
503 pidgin_tree_view_search_equal_func(GtkTreeModel *model, gint column,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
504 const char *key, GtkTreeIter *iter,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41924
diff changeset
505 G_GNUC_UNUSED gpointer data)
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
506 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
507 gchar *enteredstring;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
508 gchar *tmp;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
509 gchar *withmarkup;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
510 gchar *nomarkup;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
511 gchar *normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
512 gboolean result;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
513 size_t i;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
514 size_t len;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
515 PangoLogAttr *log_attrs;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
516 gchar *word;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
517
17155
143ff2796376 Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents: 17116
diff changeset
518 if (g_ascii_strcasecmp(key, "Global Thermonuclear War") == 0)
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
519 {
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
520 purple_notify_info(NULL, "WOPR", "Wouldn't you prefer a nice "
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
521 "game of chess?", NULL, NULL);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
522 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
523 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
524
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
525 gtk_tree_model_get(model, iter, column, &withmarkup, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
526 if (withmarkup == NULL) /* This is probably a separator */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
527 return TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
528
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
529 tmp = g_utf8_normalize(key, -1, G_NORMALIZE_DEFAULT);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
530 enteredstring = g_utf8_casefold(tmp, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
531 g_free(tmp);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
532
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
533 nomarkup = purple_markup_strip_html(withmarkup);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
534 tmp = g_utf8_normalize(nomarkup, -1, G_NORMALIZE_DEFAULT);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
535 g_free(nomarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
536 normalized = g_utf8_casefold(tmp, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
537 g_free(tmp);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
538
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40094
diff changeset
539 if (g_str_has_prefix(normalized, enteredstring)) {
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
540 g_free(withmarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
541 g_free(enteredstring);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
542 g_free(normalized);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
543 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
544 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
545
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
546 /* Use Pango to separate by words. */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
547 len = g_utf8_strlen(normalized, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
548 log_attrs = g_new(PangoLogAttr, len + 1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
549
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
550 pango_get_log_attrs(normalized, strlen(normalized), -1, NULL, log_attrs, len + 1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
551
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
552 word = normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
553 result = TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
554 for (i = 0; i < (len - 1) ; i++)
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
555 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
556 if (log_attrs[i].is_word_start &&
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40094
diff changeset
557 g_str_has_prefix(word, enteredstring)) {
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
558 result = FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
559 break;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
560 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
561 word = g_utf8_next_char(word);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
562 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
563 g_free(log_attrs);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
564
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
565 /* The non-Pango version. */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
566 #if 0
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
567 word = normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
568 result = TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
569 while (word[0] != '\0')
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
570 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
571 gunichar c = g_utf8_get_char(word);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
572 if (!g_unichar_isalnum(c))
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
573 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
574 word = g_utf8_find_next_char(word, NULL);
40125
a7acc7b00d79 Replace purple_str_has_{prefix,suffix} by g_str_has_{prefix,suffix}.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40094
diff changeset
575 if (g_str_has_prefix(word, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
576 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
577 result = FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
578 break;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
579 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
580 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
581 else
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
582 word = g_utf8_find_next_char(word, NULL);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
583 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
584 #endif
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
585
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
586 g_free(withmarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
587 g_free(enteredstring);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
588 g_free(normalized);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
589
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
590 return result;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
591 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
592
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
593 GtkWidget *
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
594 pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label)
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
595 {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
596 GtkWidget *hbox;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
597 GtkWidget *label = NULL;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
598
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
599 if (widget_label) {
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
600 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
601 gtk_box_append(vbox, hbox);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
602
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
603 label = gtk_label_new_with_mnemonic(widget_label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
604 if (sg) {
38007
3b971d2ecae1 Simplify gtk_label_set_[xy]align calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
605 gtk_label_set_xalign(GTK_LABEL(label), 0);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
606 gtk_size_group_add_widget(sg, label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
607 }
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
608 gtk_box_append(GTK_BOX(hbox), label);
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
609
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
610 gtk_widget_set_hexpand(widget, expand);
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
611 gtk_box_append(GTK_BOX(hbox), widget);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
612 } else {
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
613 gtk_widget_set_vexpand(widget, expand);
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
614 gtk_box_append(vbox, widget);
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
615
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
616 hbox = GTK_WIDGET(vbox);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
617 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
618
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
619 if (label) {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
620 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
621 pidgin_set_accessible_label(widget, GTK_LABEL(label));
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
622 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
623
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
624 if (p_label)
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
625 (*p_label) = label;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
626 return hbox;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
627 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
628
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
629 gboolean pidgin_auto_parent_window(GtkWidget *widget)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
630 {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
631 /* This finds the currently active window and makes that the parent window. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
632 GList *windows = NULL;
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
633 GtkWindow *parent = NULL;
34451
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
634 gpointer parent_from;
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
635 PurpleNotifyType notify_type;
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
636
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
637 parent_from = g_object_get_data(G_OBJECT(widget), "pidgin-parent-from");
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
638 if (purple_request_is_valid_ui_handle(parent_from, NULL)) {
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
639
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
640 gtk_window_set_transient_for(GTK_WINDOW(widget),
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
641 gtk_window_get_transient_for(
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
642 pidgin_request_get_dialog_window(parent_from)));
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
643 return TRUE;
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
644 }
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
645 if (purple_notify_is_valid_ui_handle(parent_from, &notify_type) &&
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
646 notify_type == PURPLE_NOTIFY_MESSAGE)
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
647 {
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
648 gtk_window_set_transient_for(GTK_WINDOW(widget),
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
649 gtk_window_get_transient_for(GTK_WINDOW(parent_from)));
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
650 return TRUE;
b7165d4e1d73 Implement purple_*_is_valid_ui_handle, purple_request_cpar_*et_parent_from, pidgin_request_get_dialog_window
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34449
diff changeset
651 }
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
652
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
653 windows = gtk_window_list_toplevels();
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
654 while (windows) {
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
655 GtkWindow *window = GTK_WINDOW(windows->data);
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
656 windows = g_list_delete_link(windows, windows);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
657
34447
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
658 if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(window),
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
659 "pidgin-window-is-closing")))
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
660 {
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
661 parent = gtk_window_get_transient_for(window);
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
662 break;
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
663 }
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
664
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
665 if (GTK_WIDGET(window) == widget ||
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
666 !gtk_widget_get_visible(GTK_WIDGET(window))) {
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
667 continue;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
668 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
669
41572
218b27397c2b Port gtkutils to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41569
diff changeset
670 if (gtk_window_is_active(window)) {
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
671 parent = window;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
672 break;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
673 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
674 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
675 if (windows)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
676 g_list_free(windows);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
677 if (parent) {
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
678 gtk_window_set_transient_for(GTK_WINDOW(widget), parent);
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
679 return TRUE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
680 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
681 return FALSE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
682 }

mercurial