pidgin/gtkutils.c

Thu, 17 Oct 2019 23:36:37 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Thu, 17 Oct 2019 23:36:37 -0400
changeset 40058
8a56f10bd1fb
parent 39958
ab8660547d34
child 40062
d25228fc7b8e
permissions
-rw-r--r--

Remove old #include of http header and its init.

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
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9767
diff changeset
22 #include "internal.h"
35194
9a0203562da5 pidgin: Fix build and warnings with glib 2.24
Ankit Vani <a@nevitus.org>
parents: 35079
diff changeset
23 #include "glibcompat.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
24 #include "pidgin.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
25
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
26 #ifdef _WIN32
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
27 # undef small
35892
02bf3200b9cb cross-win32: make use of WIN32_LEAN_AND_MEAN define
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35856
diff changeset
28 # include <shellapi.h>
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 #endif /*_WIN32*/
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
30
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 #include <gdk/gdkkeysyms.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
32
39690
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
33 #include <talkatu.h>
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
34
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
35 #include "conversation.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
36 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
37 #include "notify.h"
5548
200682124464 [gaim-migrate @ 5949]
Nathan Walp <nwalp@pidgin.im>
parents: 5530
diff changeset
38 #include "prefs.h"
36543
a8c3fecee2d3 Renamed prpl.[ch] to protocol.[ch]
Ankit Vani <a@nevitus.org>
parents: 36539
diff changeset
39 #include "protocol.h"
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
40 #include "request.h"
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
41 #include "signals.h"
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
42 #include "sound.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
43 #include "util.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
44
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
45 #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
46 #include "gtkprefs.h"
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
47
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
48 #include "gtkconv.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9706
diff changeset
49 #include "gtkdialogs.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
50 #include "pidginstock.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
51 #include "gtkrequest.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
52 #include "gtkutils.h"
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
53 #include "pidgin/minidialog.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
55 #include "gtk3compat.h"
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
56
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
57
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
58 /******************************************************************************
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
59 * Enums
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
60 *****************************************************************************/
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
61
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
62 enum {
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
63 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
64 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
65 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
66 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
67 };
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
68
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
69 enum {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
70 DND_FILE_TRANSFER,
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
71 DND_IM_IMAGE,
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
72 DND_BUDDY_ICON
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
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
75 enum {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
76 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
77 COMPLETION_BUDDY_COLUMN, /* buddy name */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
78 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
79 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
80 COMPLETION_ACCOUNT_COLUMN, /* account */
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
81 COMPLETION_COLUMN_COUNT
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
82 };
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
83
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 * Structs
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
86 *****************************************************************************/
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
87
17118
4fbaa628dd8e Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17117
diff changeset
88 typedef struct {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
89 GtkTreeModel *model;
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
90 gint default_item;
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
91 } AopMenu;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
92
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
93 typedef struct {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
94 char *filename;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
95 PurpleAccount *account;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
96 char *who;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
97 } _DndData;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
98
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
99 typedef struct
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
100 {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
101 GtkWidget *entry;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
102 GtkWidget *accountopt;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
103
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
104 PidginFilterBuddyCompletionEntryFunc filter_func;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
105 gpointer filter_func_user_data;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
106
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
107 GtkListStore *store;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
108 } PidginCompletionData;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
109
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
110 struct _icon_chooser {
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
111 GtkFileChooserNative *icon_filesel;
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
112 GtkWidget *icon_preview;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
113 GtkWidget *icon_text;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
114
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
115 void (*callback)(const char*,gpointer);
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
116 gpointer data;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
117 };
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
118
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
119 struct _old_button_clicked_cb_data
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
120 {
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
121 PidginUtilMiniDialogCallback cb;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
122 gpointer data;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
123 };
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
124
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
125 /******************************************************************************
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
126 * Globals
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
127 *****************************************************************************/
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
128
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10681
diff changeset
129 static guint accels_save_timer = 0;
35565
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
130 static GSList *minidialogs = NULL;
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
131
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
132 /******************************************************************************
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
133 * Code
f774eda0a91e Move globals and types together in gtkutils.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35541
diff changeset
134 *****************************************************************************/
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
135 static
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
136 void pidgin_window_init(GtkWindow *wnd, const char *title, guint border_width, const char *role, gboolean resizable)
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
137 {
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
138 if (title)
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
139 gtk_window_set_title(wnd, title);
18941
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
140 #ifdef _WIN32
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
141 else
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
142 gtk_window_set_title(wnd, PIDGIN_ALERT_TITLE);
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
143 #endif
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
144 gtk_container_set_border_width(GTK_CONTAINER(wnd), border_width);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
145 if (role)
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
146 gtk_window_set_role(wnd, role);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
147 gtk_window_set_resizable(wnd, resizable);
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
148 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
149
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
150 GtkWidget *
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
151 pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
152 {
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
153 GtkWindow *wnd = NULL;
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
154
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
155 wnd = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
156 pidgin_window_init(wnd, title, border_width, role, resizable);
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
157
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
158 return GTK_WIDGET(wnd);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
159 }
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
160
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
161 GtkWidget *
29896
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
162 pidgin_create_small_button(GtkWidget *image)
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
163 {
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
164 GtkWidget *button;
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
165
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
166 button = gtk_button_new();
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
167 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
168
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
169 /* don't allow focus on the close button */
39946
f1b741397c35 Replace deprecated gtk_button_set_focus_on_click.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39932
diff changeset
170 gtk_widget_set_focus_on_click(button, FALSE);
29896
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
171
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
172 gtk_widget_show(image);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
173
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
174 gtk_container_add(GTK_CONTAINER(button), image);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
175
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
176 return button;
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
177 }
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
178
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
179 GtkWidget *
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
180 pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
181 {
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
182 GtkWindow *wnd = NULL;
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
183
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
184 wnd = GTK_WINDOW(gtk_dialog_new());
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
185 pidgin_window_init(wnd, title, border_width, role, resizable);
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
186
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
187 return GTK_WIDGET(wnd);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
188 }
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
189
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
190 GtkWidget *
37589
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
191 pidgin_create_video_widget(void)
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
192 {
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
193 GtkWidget *video = NULL;
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
194 GdkRGBA color = {0.0, 0.0, 0.0, 1.0};
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
195
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
196 video = gtk_drawing_area_new();
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
197 gtk_widget_override_background_color(video, GTK_STATE_FLAG_NORMAL, &color);
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
198
37590
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
199 /* In order to enable client shadow decorations, GtkDialog from GTK+ 3.0
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
200 * uses ARGB visual which by default gets inherited by its child widgets.
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
201 * XVideo adaptors on the other hand often support just depth 24 and
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
202 * rendering video through xvimagesink onto a widget inside a GtkDialog
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
203 * then results in no visible output.
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
204 *
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
205 * This ensures the default system visual of the drawing area doesn't get
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
206 * overridden by the widget's parent.
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
207 */
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
208 gtk_widget_set_visual(video,
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
209 gdk_screen_get_system_visual(gtk_widget_get_screen(video)));
92bff33e5d0d Fix XVideo rendering into GTK+ 3.0 GtkDialog
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37589
diff changeset
210
37589
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
211 return video;
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
212 }
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
213
e498a88e7c00 Factor out video widget creation into pidgin_create_video_widget()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37541
diff changeset
214 GtkWidget *
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
215 pidgin_dialog_get_vbox_with_properties(GtkDialog *dialog, gboolean homogeneous, gint spacing)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
216 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
217 GtkBox *vbox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
218 gtk_box_set_homogeneous(vbox, homogeneous);
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
219 gtk_box_set_spacing(vbox, spacing);
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
220 return GTK_WIDGET(vbox);
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
221 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
222
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
223 GtkWidget *pidgin_dialog_get_vbox(GtkDialog *dialog)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
224 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
225 return gtk_dialog_get_content_area(GTK_DIALOG(dialog));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
226 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
227
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
228 GtkWidget *pidgin_dialog_get_action_area(GtkDialog *dialog)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
229 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
230 return gtk_dialog_get_action_area(GTK_DIALOG(dialog));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
231 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
232
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
233 GtkWidget *pidgin_dialog_add_button(GtkDialog *dialog, const char *label,
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
234 GCallback callback, gpointer callbackdata)
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
235 {
39007
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
236 GtkWidget *button = gtk_button_new_with_mnemonic(label);
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
237 GtkWidget *bbox = pidgin_dialog_get_action_area(dialog);
39007
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
238
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
239 /* Handle stock labels if passed in until nothing calls this
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
240 * expecting a GtkStock button */
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
241 if (label != NULL) {
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
242 GtkStockItem item;
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
243 if (gtk_stock_lookup(label, &item)) {
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
244 g_object_set(button, "use-stock", TRUE, NULL);
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
245 }
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
246 }
76bcdc258fb2 gtkutils: Port pidgin_dialog_add_button() to only optionally use GtkStock
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
247
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
248 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
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
249 if (callback)
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
250 g_signal_connect(G_OBJECT(button), "clicked", callback, callbackdata);
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
251 gtk_widget_show(button);
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
252 return button;
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
253 }
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
254
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
255 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
256 pidgin_set_sensitive_if_input(GtkWidget *entry, GtkWidget *dialog)
7751
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
257 {
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
258 const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
259 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK,
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
260 (*text != '\0'));
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
261 }
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
262
17359
6dd3b7730470 Change pidgin_separator to return the separator added to the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17155
diff changeset
263 GtkWidget *pidgin_separator(GtkWidget *menu)
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
264 {
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
265 GtkWidget *menuitem;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
266
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
267 menuitem = gtk_separator_menu_item_new();
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
268 gtk_widget_show(menuitem);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
269 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
17359
6dd3b7730470 Change pidgin_separator to return the separator added to the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17155
diff changeset
270 return menuitem;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
271 }
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
272
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
273 GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
274 GCallback cb, gpointer data, gboolean checked)
5906
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
275 {
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
276 GtkWidget *menuitem;
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
277 menuitem = gtk_check_menu_item_new_with_mnemonic(str);
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
278
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
279 if (menu)
5906
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
280 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
281
7299
4c804d9a52f1 [gaim-migrate @ 7883]
Christian Hammond <chipx86@chipx86.com>
parents: 7118
diff changeset
282 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), checked);
4c804d9a52f1 [gaim-migrate @ 7883]
Christian Hammond <chipx86@chipx86.com>
parents: 7118
diff changeset
283
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
284 if (cb)
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
285 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
5906
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
286
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
287 gtk_widget_show_all(menuitem);
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
288
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
289 return menuitem;
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
290 }
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
291
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
292 GtkWidget *
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
293 pidgin_pixbuf_toolbar_button_from_stock(const char *icon)
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
294 {
9706
d5b657fe9cff [gaim-migrate @ 10567]
Mark Doliner <markdoliner@pidgin.im>
parents: 9534
diff changeset
295 GtkWidget *button, *image, *bbox;
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
296
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
297 button = gtk_toggle_button_new();
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
298 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
299
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
300 bbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
301
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
302 gtk_container_add (GTK_CONTAINER(button), bbox);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
303
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15578
diff changeset
304 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
305 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
306
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
307 gtk_widget_show_all(bbox);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
308
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
309 return button;
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
310 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
311
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
312 GtkWidget *
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
313 pidgin_pixbuf_button_from_stock(const char *text, const char *icon,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
314 PidginButtonOrientation style)
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
315 {
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
316 GtkWidget *button, *image, *bbox, *ibox, *lbox = NULL;
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
317
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
318 button = gtk_button_new();
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
319
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
320 if (style == PIDGIN_BUTTON_HORIZONTAL) {
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
321 bbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
322 ibox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
323 if (text)
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
324 lbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
325 } else {
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
326 bbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
327 ibox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
328 if (text)
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
329 lbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
330 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
331
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
332 gtk_container_add(GTK_CONTAINER(button), bbox);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
333
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
334 if (icon) {
29744
c1ae9f0f57ee *** Plucked rev df5196ac4c45dfff9cad5768c27d4e1d46fbb2ab (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29701
diff changeset
335 gtk_box_pack_start(GTK_BOX(bbox), ibox, TRUE, TRUE, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
336 image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_BUTTON);
9767
c68cfe03deec [gaim-migrate @ 10635]
Mark Doliner <markdoliner@pidgin.im>
parents: 9750
diff changeset
337 gtk_box_pack_end(GTK_BOX(ibox), image, FALSE, TRUE, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
338 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
339
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
340 if (text) {
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
341 GtkLabel *label;
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
342
29744
c1ae9f0f57ee *** Plucked rev df5196ac4c45dfff9cad5768c27d4e1d46fbb2ab (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29701
diff changeset
343 gtk_box_pack_start(GTK_BOX(bbox), lbox, TRUE, TRUE, 0);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
344 label = GTK_LABEL(gtk_label_new(NULL));
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
345 gtk_label_set_text_with_mnemonic(label, text);
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
346 gtk_label_set_mnemonic_widget(label, button);
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
347 gtk_box_pack_start(GTK_BOX(lbox), GTK_WIDGET(label),
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
348 FALSE, TRUE, 0);
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
349 pidgin_set_accessible_label(button, label);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
350 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
351
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
352 gtk_widget_show_all(bbox);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
353
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
354 return button;
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
355 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
356
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
357
37879
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
358 GtkWidget *pidgin_new_menu_item(GtkWidget *menu, const char *mnemonic,
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
359 const char *icon, GCallback cb, gpointer data)
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
360 {
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
361 GtkWidget *menuitem;
37879
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
362 GtkWidget *box;
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
363 GtkWidget *label;
37879
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
364
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
365 box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE);
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
366
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
367 menuitem = gtk_menu_item_new();
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
368
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
369 if (cb)
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
370 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
371
37879
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
372 if (icon) {
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
373 GtkWidget *image;
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
374 image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_MENU);
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
375 gtk_container_add(GTK_CONTAINER(box), image);
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
376 }
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
377
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
378 label = gtk_label_new_with_mnemonic(mnemonic);
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
379 gtk_container_add(GTK_CONTAINER(box), label);
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
380
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
381 gtk_container_add(GTK_CONTAINER(menuitem), box);
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
382
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
383 if (menu)
38eebb7c9019 Simplify our menuitem creation util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37590
diff changeset
384 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
385
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
386 gtk_widget_show_all(menuitem);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
387
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
388 return menuitem;
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
389 }
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
390
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
391 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
392 pidgin_make_frame(GtkWidget *parent, const char *title)
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
393 {
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
394 GtkWidget *vbox, *vbox2, *hbox;
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
395 GtkLabel *label;
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
396 char *labeltitle;
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
397
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
398 vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_BOX_SPACE);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
399 gtk_box_pack_start(GTK_BOX(parent), vbox, FALSE, FALSE, 0);
5641
a9d1f7917dd4 [gaim-migrate @ 6054]
Christian Hammond <chipx86@chipx86.com>
parents: 5554
diff changeset
400 gtk_widget_show(vbox);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
401
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
402 label = GTK_LABEL(gtk_label_new(NULL));
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
403
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
404 labeltitle = g_strdup_printf("<span weight=\"bold\">%s</span>", title);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
405 gtk_label_set_markup(label, labeltitle);
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
406 g_free(labeltitle);
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
407
38007
3b971d2ecae1 Simplify gtk_label_set_[xy]align calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
408 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
409 gtk_label_set_yalign(GTK_LABEL(label), 0);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
410 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(label), FALSE, FALSE, 0);
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
411 gtk_widget_show(GTK_WIDGET(label));
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
412 pidgin_set_accessible_label(vbox, label);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
413
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
414 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
415 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
5641
a9d1f7917dd4 [gaim-migrate @ 6054]
Christian Hammond <chipx86@chipx86.com>
parents: 5554
diff changeset
416 gtk_widget_show(hbox);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
417
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
418 label = GTK_LABEL(gtk_label_new(" "));
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
419 gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(label), FALSE, FALSE, 0);
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
420 gtk_widget_show(GTK_WIDGET(label));
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
421
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
422 vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_BOX_SPACE);
34186
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
423 gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
424 gtk_widget_show(vbox2);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
425
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
426 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
427
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
428 return vbox2;
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
429 }
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
430
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
431 static gpointer
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
432 aop_option_menu_get_selected(GtkWidget *optmenu)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
433 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
434 gpointer data = NULL;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
435 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
436
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
437 g_return_val_if_fail(optmenu != NULL, NULL);
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
438
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
439 if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(optmenu), &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
440 gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(optmenu)),
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
441 &iter, AOP_DATA_COLUMN, &data, -1);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
442
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
443 return data;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
444 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
445
5647
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
446 static void
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
447 aop_menu_cb(GtkWidget *optmenu, GCallback cb)
5647
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
448 {
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
449 if (cb != NULL) {
32389
3dcbfaba75f7 Supply something for the widget.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32388
diff changeset
450 ((void (*)(GtkWidget *, gpointer, gpointer))cb)(optmenu,
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
451 aop_option_menu_get_selected(optmenu),
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
452 g_object_get_data(G_OBJECT(optmenu), "user_data"));
17237
77ee6a7263dc Add some braces and clean up indentation.
Richard Laager <rlaager@pidgin.im>
parents: 17236
diff changeset
453 }
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
454 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
455
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
456 static void
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
457 aop_option_menu_replace_menu(GtkWidget *optmenu, AopMenu *new_aop_menu)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
458 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
459 gtk_combo_box_set_model(GTK_COMBO_BOX(optmenu), new_aop_menu->model);
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
460 gtk_combo_box_set_active(GTK_COMBO_BOX(optmenu), new_aop_menu->default_item);
32935
190f458c958b It appears that no-one needs this AopMenu struct after the combo
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32934
diff changeset
461 g_free(new_aop_menu);
5647
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
462 }
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
463
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
464 static GdkPixbuf *
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
465 pidgin_create_icon_from_protocol(PurpleProtocol *protocol, PidginProtocolIconSize size, PurpleAccount *account)
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
466 {
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
467 const char *protoname = NULL;
18216
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
468 char *tmp;
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
469 char *filename = NULL;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
470 GdkPixbuf *pixbuf;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
471
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36716
diff changeset
472 protoname = purple_protocol_class_list_icon(protocol, account, NULL);
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
473 if (protoname == NULL)
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
474 return NULL;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
475
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
476 /*
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
477 * Status icons will be themeable too, and then it will look up
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
478 * protoname from the theme
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
479 */
39040
65ed0e8e8229 Move protocol icons to the apps icon theme specification directory
Mike Ruprecht <cmaiku@gmail.com>
parents: 39009
diff changeset
480 tmp = g_strconcat("im-", protoname, ".png", NULL);
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
481
35850
1abeda205d6c cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35825
diff changeset
482 filename = g_build_filename(PURPLE_DATADIR,
39040
65ed0e8e8229 Move protocol icons to the apps icon theme specification directory
Mike Ruprecht <cmaiku@gmail.com>
parents: 39009
diff changeset
483 "pidgin", "icons", "hicolor",
65ed0e8e8229 Move protocol icons to the apps icon theme specification directory
Mike Ruprecht <cmaiku@gmail.com>
parents: 39009
diff changeset
484 (size == PIDGIN_PROTOCOL_ICON_SMALL) ? "16x16" :
65ed0e8e8229 Move protocol icons to the apps icon theme specification directory
Mike Ruprecht <cmaiku@gmail.com>
parents: 39009
diff changeset
485 ((size == PIDGIN_PROTOCOL_ICON_MEDIUM) ? "22x22" :
65ed0e8e8229 Move protocol icons to the apps icon theme specification directory
Mike Ruprecht <cmaiku@gmail.com>
parents: 39009
diff changeset
486 "48x48"),
65ed0e8e8229 Move protocol icons to the apps icon theme specification directory
Mike Ruprecht <cmaiku@gmail.com>
parents: 39009
diff changeset
487 "apps", tmp, NULL);
18216
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
488 g_free(tmp);
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
489
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
490 pixbuf = pidgin_pixbuf_new_from_file(filename);
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
491 g_free(filename);
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
492
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
493 return pixbuf;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
494 }
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
495
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
496 static GtkWidget *
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
497 aop_option_menu_new(AopMenu *aop_menu, GCallback cb, gpointer user_data)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
498 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
499 GtkWidget *optmenu = NULL;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
500 GtkCellRenderer *cr = NULL;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
501
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
502 optmenu = gtk_combo_box_new();
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
503 gtk_widget_show(optmenu);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
504 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(optmenu), cr = gtk_cell_renderer_pixbuf_new(), FALSE);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
505 gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(optmenu), cr, "pixbuf", AOP_ICON_COLUMN);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
506 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(optmenu), cr = gtk_cell_renderer_text_new(), TRUE);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
507 gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(optmenu), cr, "text", AOP_NAME_COLUMN);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
508
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
509 aop_option_menu_replace_menu(optmenu, aop_menu);
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
510 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
511
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
512 g_signal_connect(G_OBJECT(optmenu), "changed", G_CALLBACK(aop_menu_cb), cb);
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
513
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
514 return optmenu;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
515 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
516
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
517 static void
17118
4fbaa628dd8e Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17117
diff changeset
518 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
519 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
520 GtkTreeModel *model;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
521 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
522 gpointer iter_data;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
523 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
524 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
525 do {
32936
03b440305f19 Looks like I missed a number.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32935
diff changeset
526 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
527 if (iter_data == data) {
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
528 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
529 return;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
530 }
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
531 } while (gtk_tree_model_iter_next(model, &iter));
17235
f04fc9bbb90b Style changes in if statements.
Richard Laager <rlaager@pidgin.im>
parents: 17234
diff changeset
532 }
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
533 }
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
534
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
535 static AopMenu *
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
536 create_protocols_menu(const char *default_proto_id)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
537 {
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
538 AopMenu *aop_menu = NULL;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
539 PurpleProtocol *protocol;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
540 GdkPixbuf *pixbuf = NULL;
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
541 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
542 GtkListStore *ls;
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
543 GList *list, *p;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
544 int i;
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
545
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
546 ls = gtk_list_store_new(AOP_COLUMN_COUNT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
547
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
548 aop_menu = g_malloc0(sizeof(AopMenu));
32934
9b08ef7651b2 Avoid calling gtk_combo_box_set_active twice in some cases.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32933
diff changeset
549 aop_menu->default_item = 0;
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
550 aop_menu->model = GTK_TREE_MODEL(ls);
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
551
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
552 list = purple_protocols_get_all();
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
553
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
554 for (p = list, i = 0;
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
555 p != NULL;
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
556 p = p->next, i++) {
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
557
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
558 protocol = PURPLE_PROTOCOL(p->data);
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
559
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
560 pixbuf = pidgin_create_icon_from_protocol(protocol, PIDGIN_PROTOCOL_ICON_SMALL, NULL);
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
561
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
562 gtk_list_store_append(ls, &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
563 gtk_list_store_set(ls, &iter,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
564 AOP_ICON_COLUMN, pixbuf,
36607
7ad7681dcfd8 Use purple_protocol_get_* API instead of protocol->member
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
565 AOP_NAME_COLUMN, purple_protocol_get_name(protocol),
7ad7681dcfd8 Use purple_protocol_get_* API instead of protocol->member
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
566 AOP_DATA_COLUMN, purple_protocol_get_id(protocol),
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
567 -1);
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
568
17235
f04fc9bbb90b Style changes in if statements.
Richard Laager <rlaager@pidgin.im>
parents: 17234
diff changeset
569 if (pixbuf)
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
570 g_object_unref(pixbuf);
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
571
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38299 38260
diff changeset
572 if (default_proto_id != NULL && purple_strequal(purple_protocol_get_id(protocol), default_proto_id))
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
573 aop_menu->default_item = i;
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
574 }
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
575 g_list_free(list);
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
576
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
577 return aop_menu;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
578 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
579
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
580 GtkWidget *
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
581 pidgin_protocol_option_menu_new(const char *id, GCallback cb,
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
582 gpointer user_data)
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
583 {
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
584 return aop_option_menu_new(create_protocols_menu(id), cb, user_data);
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
585 }
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
586
18672
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
587 const char *
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
588 pidgin_protocol_option_menu_get_selected(GtkWidget *optmenu)
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
589 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
590 return (const char *)aop_option_menu_get_selected(optmenu);
18672
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
591 }
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
592
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
593 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
594 pidgin_save_accels_cb(GtkAccelGroup *accel_group, guint arg1,
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
595 GdkModifierType arg2, GClosure *arg3,
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
596 gpointer data)
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
597 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
598 purple_debug(PURPLE_DEBUG_MISC, "accels",
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
599 "accel changed, scheduling save.\n");
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
600
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
601 if (!accels_save_timer)
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 38358
diff changeset
602 accels_save_timer = g_timeout_add_seconds(5, pidgin_save_accels,
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
603 NULL);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
604 }
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
605
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
606 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
607 pidgin_save_accels(gpointer data)
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
608 {
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
609 char *filename = NULL;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
610
39953
10db0a477198 Move some Pidgin things to XDG directories.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39932
diff changeset
611 filename = g_build_filename(purple_config_dir(), "accels", NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
612 purple_debug(PURPLE_DEBUG_MISC, "accels", "saving accels to %s\n", filename);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
613 gtk_accel_map_save(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
614 g_free(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
615
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
616 accels_save_timer = 0;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
617 return FALSE;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
618 }
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
619
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
620 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
621 pidgin_load_accels()
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
622 {
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
623 char *filename = NULL;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
624
39953
10db0a477198 Move some Pidgin things to XDG directories.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39932
diff changeset
625 filename = g_build_filename(purple_config_dir(), "accels", NULL);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
626 gtk_accel_map_load(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
627 g_free(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
628 }
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
629
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
630 static void
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
631 show_retrieveing_info(PurpleConnection *conn, const char *name)
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
632 {
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
633 PurpleNotifyUserInfo *info = purple_notify_user_info_new();
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32149
diff changeset
634 purple_notify_user_info_add_pair_plaintext(info, _("Information"), _("Retrieving..."));
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
635 purple_notify_userinfo(conn, name, info, NULL, NULL);
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
636 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
637 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
638
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
639 void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name)
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
640 {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
641 show_retrieveing_info(conn, name);
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35455
diff changeset
642 purple_serv_get_info(conn, name);
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
643 }
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
644
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
645 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
646 {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
647 char *who = NULL;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
648 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
649
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
650 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
651 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
652 return;
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
653 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
654
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36608
diff changeset
655 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
656 if (protocol != NULL)
36719
0d7682bdf828 Updated protocol iface calls
Ankit Vani <a@nevitus.org>
parents: 36716
diff changeset
657 who = purple_protocol_chat_iface_get_user_real_name(protocol, conn, chat, name);
36633
2dcb81a189bd Refactored pidgin to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
658
2dcb81a189bd Refactored pidgin to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36626
diff changeset
659 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
660 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
661 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
662
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
663 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
664 pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
665 PurpleAccount **ret_account, char **ret_protocol,
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
666 char **ret_username, char **ret_alias)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
667 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
668 char *protocol = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
669 char *username = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
670 char *alias = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
671 char *str;
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30054
diff changeset
672 char *s;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
673 gboolean valid;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
674
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
675 g_return_val_if_fail(msg != NULL, FALSE);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
676 g_return_val_if_fail(ret_protocol != NULL, FALSE);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
677 g_return_val_if_fail(ret_username != NULL, FALSE);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
678
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
679 s = str = g_strdup(msg);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
680
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
681 while (*s != '\r' && *s != '\n' && *s != '\0')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
682 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
683 char *key, *value;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
684
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
685 key = s;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
686
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
687 /* Grab the key */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
688 while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ' ')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
689 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
690
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
691 if (*s == '\r') s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
692
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
693 if (*s == '\n')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
694 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
695 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
696 continue;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
697 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
698
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
699 if (*s != '\0') *s++ = '\0';
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
700
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
701 /* Clear past any whitespace */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
702 while (*s != '\0' && *s == ' ')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
703 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
704
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
705 /* Now let's grab until the end of the line. */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
706 value = s;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
707
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
708 while (*s != '\r' && *s != '\n' && *s != '\0')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
709 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
710
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
711 if (*s == '\r') *s++ = '\0';
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
712 if (*s == '\n') *s++ = '\0';
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
713
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30054
diff changeset
714 if (strchr(key, ':') != NULL)
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
715 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
716 if (!g_ascii_strcasecmp(key, "X-IM-Username:"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
717 username = g_strdup(value);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
718 else if (!g_ascii_strcasecmp(key, "X-IM-Protocol:"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
719 protocol = g_strdup(value);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
720 else if (!g_ascii_strcasecmp(key, "X-IM-Alias:"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
721 alias = g_strdup(value);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
722 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
723 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
724
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
725 if (username != NULL && protocol != NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
726 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
727 valid = TRUE;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
728
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
729 *ret_username = username;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
730 *ret_protocol = protocol;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
731
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
732 if (ret_alias != NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
733 *ret_alias = alias;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
734
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
735 /* Check for a compatible account. */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
736 if (ret_account != NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
737 {
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
738 GList *list;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
739 PurpleAccount *account = NULL;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
740 GList *l;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
741 const char *protoname;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
742
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
743 if (all_accounts)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
744 list = purple_accounts_get_all();
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
745 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
746 list = purple_connections_get_all();
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
747
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
748 for (l = list; l != NULL; l = l->next)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
749 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
750 PurpleConnection *gc;
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
751 PurpleProtocol *proto = NULL;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
752
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
753 if (all_accounts)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
754 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
755 account = (PurpleAccount *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
756
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
757 proto = purple_protocols_find(
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
758 purple_account_get_protocol_id(account));
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
759
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
760 if (proto == NULL)
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
761 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
762 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
763
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
764 continue;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
765 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
766 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
767 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
768 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
769 gc = (PurpleConnection *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
770 account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
771
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
772 proto = purple_connection_get_protocol(gc);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
773 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
774
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
775 protoname = purple_protocol_class_list_icon(proto, account, NULL);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
776
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38257
diff changeset
777 if (purple_strequal(protoname, protocol))
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
778 break;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
779
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
780 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
781 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
782
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
783 /* Special case for AIM and ICQ */
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38257
diff changeset
784 if (account == NULL && (purple_strequal(protocol, "aim") ||
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38257
diff changeset
785 purple_strequal(protocol, "icq")))
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
786 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
787 for (l = list; l != NULL; l = l->next)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
788 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
789 PurpleConnection *gc;
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
790 PurpleProtocol *proto = NULL;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
791
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
792 if (all_accounts)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
793 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
794 account = (PurpleAccount *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
795
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
796 proto = purple_protocols_find(
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
797 purple_account_get_protocol_id(account));
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
798
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
799 if (proto == NULL)
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
800 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
801 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
802
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
803 continue;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
804 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
805 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
806 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
807 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
808 gc = (PurpleConnection *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
809 account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
810
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
811 proto = purple_connection_get_protocol(gc);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
812 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
813
37006
5fecec4fe589 Fix misleading variable name
Ankit Vani <a@nevitus.org>
parents: 36959
diff changeset
814 protoname = purple_protocol_class_list_icon(proto, account, NULL);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
815
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38257
diff changeset
816 if (purple_strequal(protoname, "aim") || purple_strequal(protoname, "icq"))
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
817 break;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
818
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
819 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
820 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
821 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
822
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
823 *ret_account = account;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
824 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
825 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
826 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
827 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
828 valid = FALSE;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
829
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13783
diff changeset
830 g_free(username);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13783
diff changeset
831 g_free(protocol);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13783
diff changeset
832 g_free(alias);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
833 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
834
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
835 g_free(str);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
836
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
837 return valid;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
838 }
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
839
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
840 void
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
841 pidgin_set_accessible_label(GtkWidget *w, GtkLabel *l)
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
842 {
19547
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
843 AtkObject *acc;
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
844 const gchar *label_text;
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
845 const gchar *existing_name;
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
846
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
847 acc = gtk_widget_get_accessible (w);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
848
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
849 /* If this object has no name, set it's name with the label text */
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
850 existing_name = atk_object_get_name (acc);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
851 if (!existing_name) {
35720
863f87bfc06e Smiley manager: cleanup
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
852 label_text = gtk_label_get_text(l);
19547
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
853 if (label_text)
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
854 atk_object_set_name (acc, label_text);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
855 }
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
856
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
857 pidgin_set_accessible_relations(w, l);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
858 }
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
859
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
860 void
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
861 pidgin_set_accessible_relations (GtkWidget *w, GtkLabel *l)
19547
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
862 {
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
863 AtkObject *acc, *label;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
864 AtkObject *rel_obj[1];
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
865 AtkRelationSet *set;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
866 AtkRelation *relation;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
867
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
868 acc = gtk_widget_get_accessible (w);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
869 label = gtk_widget_get_accessible(GTK_WIDGET(l));
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
870
18351
b881759cda28 Call gtk_label_set_mnemonic_widget() in pidgin_make_accessible_label. Closes #589
Sean Egan <seanegan@pidgin.im>
parents: 18281
diff changeset
871 /* Make sure mnemonics work */
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
872 gtk_label_set_mnemonic_widget(l, w);
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
873
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
874 /* Create the labeled-by relation */
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
875 set = atk_object_ref_relation_set (acc);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
876 rel_obj[0] = label;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
877 relation = atk_relation_new (rel_obj, 1, ATK_RELATION_LABELLED_BY);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
878 atk_relation_set_add (set, relation);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
879 g_object_unref (relation);
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
880 g_object_unref(set);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
881
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
882 /* Create the label-for relation */
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
883 set = atk_object_ref_relation_set (label);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
884 rel_obj[0] = acc;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
885 relation = atk_relation_new (rel_obj, 1, ATK_RELATION_LABEL_FOR);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
886 atk_relation_set_add (set, relation);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
887 g_object_unref (relation);
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
888 g_object_unref(set);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
889 }
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
890
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18216
diff changeset
891 void
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18216
diff changeset
892 pidgin_menu_position_func_helper(GtkMenu *menu,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
893 gint *x,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
894 gint *y,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
895 gboolean *push_in,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
896 gpointer data)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
897 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
898 GtkWidget *widget;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
899 GtkRequisition requisition;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
900 GdkScreen *screen;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
901 GdkRectangle monitor;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
902 gint monitor_num;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
903 gint space_left, space_right, space_above, space_below;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
904 gboolean rtl;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
905
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
906 g_return_if_fail(GTK_IS_MENU(menu));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
907
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
908 widget = GTK_WIDGET(menu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
909 screen = gtk_widget_get_screen(widget);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
910 rtl = (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
911
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
912 /*
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
913 * We need the requisition to figure out the right place to
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
914 * popup the menu. In fact, we always need to ask here, since
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
915 * if a size_request was queued while we weren't popped up,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
916 * the requisition won't have been recomputed yet.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
917 */
33277
d6229108ce71 Remove deprecated gtk_widget_size_request calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33269
diff changeset
918 gtk_widget_get_preferred_size(widget, NULL, &requisition);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
919
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
920 monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
921
35986
5dc98ddc6a9a Backport more warning fixes for Pidgin and Finch from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35929
diff changeset
922 *push_in = FALSE;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
923
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
924 /*
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
925 * The placement of popup menus horizontally works like this (with
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
926 * RTL in parentheses)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
927 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
928 * - If there is enough room to the right (left) of the mouse cursor,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
929 * position the menu there.
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
930 *
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
931 * - Otherwise, if if there is enough room to the left (right) of the
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
932 * mouse cursor, position the menu there.
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
933 *
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
934 * - Otherwise if the menu is smaller than the monitor, position it
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
935 * on the side of the mouse cursor that has the most space available
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
936 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
937 * - Otherwise (if there is simply not enough room for the menu on the
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
938 * monitor), position it as far left (right) as possible.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
939 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
940 * Positioning in the vertical direction is similar: first try below
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
941 * mouse cursor, then above.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
942 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
943 gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
944
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
945 space_left = *x - monitor.x;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
946 space_right = monitor.x + monitor.width - *x - 1;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
947 space_above = *y - monitor.y;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
948 space_below = monitor.y + monitor.height - *y - 1;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
949
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
950 /* position horizontally */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
951
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
952 if (requisition.width <= space_left ||
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
953 requisition.width <= space_right)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
954 {
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
955 if ((rtl && requisition.width <= space_left) ||
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
956 (!rtl && requisition.width > space_right))
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
957 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
958 /* position left */
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
959 *x = *x - requisition.width + 1;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
960 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
961
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
962 /* x is clamped on-screen further down */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
963 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
964 else if (requisition.width <= monitor.width)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
965 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
966 /* the menu is too big to fit on either side of the mouse
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
967 * cursor, but smaller than the monitor. Position it on
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
968 * the side that has the most space
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
969 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
970 if (space_left > space_right)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
971 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
972 /* left justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
973 *x = monitor.x;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
974 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
975 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
976 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
977 /* right justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
978 *x = monitor.x + monitor.width - requisition.width;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
979 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
980 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
981 else /* menu is simply too big for the monitor */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
982 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
983 if (rtl)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
984 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
985 /* right justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
986 *x = monitor.x + monitor.width - requisition.width;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
987 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
988 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
989 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
990 /* left justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
991 *x = monitor.x;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
992 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
993 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
994
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
995 /* Position vertically. The algorithm is the same as above, but
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
996 * simpler because we don't have to take RTL into account.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
997 */
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
998
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
999 if (requisition.height <= space_above ||
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
1000 requisition.height <= space_below)
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1001 {
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
1002 if (requisition.height > space_below) {
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
1003 *y = *y - requisition.height + 1;
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
1004 }
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1005
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1006 *y = CLAMP (*y, monitor.y,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1007 monitor.y + monitor.height - requisition.height);
39913
ce96d4639dc7 Remove redundant conditions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1008 } else {
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1009 if (space_below >= space_above)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1010 *y = monitor.y + monitor.height - requisition.height;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1011 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1012 *y = monitor.y;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1013 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1014 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1015
8247
adc66f6bcaf4 [gaim-migrate @ 8970]
Nathan Walp <nwalp@pidgin.im>
parents: 8218
diff changeset
1016
38709
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1017 #if !GTK_CHECK_VERSION(3,22,0)
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1018 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1019 pidgin_treeview_popup_menu_position_func(GtkMenu *menu,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1020 gint *x,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1021 gint *y,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1022 gboolean *push_in,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1023 gpointer data)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1024 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1025 GtkWidget *widget = GTK_WIDGET(data);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1026 GtkTreeView *tv = GTK_TREE_VIEW(data);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1027 GtkTreePath *path;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1028 GtkTreeViewColumn *col;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1029 GdkRectangle rect;
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
1030
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1031 gdk_window_get_origin (gtk_widget_get_window(widget), x, y);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1032 gtk_tree_view_get_cursor (tv, &path, &col);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1033 gtk_tree_view_get_cell_area (tv, path, col, &rect);
8218
0ff223f56a67 [gaim-migrate @ 8941]
Christian Hammond <chipx86@chipx86.com>
parents: 8215
diff changeset
1034
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1035 *x += rect.x+rect.width;
38169
adcb9a4cc920 gtkutils: remove usage of deprecated xthickness and ythickness
Jakub Adam <jakub.adam@ktknet.cz>
parents: 38007
diff changeset
1036 *y += rect.y + rect.height;
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18216
diff changeset
1037 pidgin_menu_position_func_helper(menu, x, y, push_in, data);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1038 }
38709
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1039 #endif
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1040
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1041
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1042 void
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1043 pidgin_menu_popup_at_treeview_selection(GtkWidget *menu, GtkWidget *treeview)
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1044 {
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1045 #if GTK_CHECK_VERSION(3,22,0)
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1046 GtkTreePath *path;
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1047 GtkTreeViewColumn *column;
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1048 GdkWindow *bin_window;
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1049 GdkRectangle rect;
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1050
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1051 gtk_tree_view_get_cursor(GTK_TREE_VIEW(treeview), &path, &column);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1052 g_return_if_fail(path != NULL);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1053 if (column == NULL)
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1054 column = gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), 0);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1055 bin_window = gtk_tree_view_get_bin_window(GTK_TREE_VIEW(treeview));
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1056 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(treeview), path, column, &rect);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1057 gtk_menu_popup_at_rect(GTK_MENU(menu), bin_window, &rect,
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1058 GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST,
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1059 NULL);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1060
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1061 gtk_tree_path_free(path);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1062 #else
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1063 gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1064 pidgin_treeview_popup_menu_position_func, treeview,
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1065 0, GDK_CURRENT_TIME);
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1066 #endif
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1067 }
6c80734ca3b4 Add pidgin_menu_popup_at_treeview_selection.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38650
diff changeset
1068
10061
2833056ea11c [gaim-migrate @ 11033]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9910
diff changeset
1069
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10681
diff changeset
1070 static void dnd_image_ok_callback(_DndData *data, int choice)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1071 {
31372
743be8e50f23 When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <markdoliner@pidgin.im>
parents: 31217
diff changeset
1072 const gchar *shortname;
23287
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1073 gchar *filedata;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1074 size_t size;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
1075 GStatBuf st;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1076 GError *err = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1077 PurpleConversation *conv;
23287
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1078 PurpleBuddy *buddy;
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1079 PurpleContact *contact;
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
1080 PurpleImage *img;
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
1081
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1082 switch (choice) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1083 case DND_BUDDY_ICON:
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14781
diff changeset
1084 if (g_stat(data->filename, &st)) {
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1085 char *str;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1086
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14781
diff changeset
1087 str = g_strdup_printf(_("The following error has occurred loading %s: %s"),
21975
721ddc236ce5 Use g_sterror instead of strerror in two more places.
Mark Doliner <markdoliner@pidgin.im>
parents: 21890
diff changeset
1088 data->filename, g_strerror(errno));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1089 purple_notify_error(NULL, NULL,
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
1090 _("Failed to load image"), str, NULL);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1091 g_free(str);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1092
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1093 break;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1094 }
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1095
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
1096 buddy = purple_blist_find_buddy(data->account, data->who);
23287
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1097 if (!buddy) {
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1098 purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1099 break;
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1100 }
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1101 contact = purple_buddy_get_contact(buddy);
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1102 purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, data->filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1103 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1104 case DND_FILE_TRANSFER:
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35455
diff changeset
1105 purple_serv_send_file(purple_account_get_connection(data->account), data->who, data->filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1106 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1107 case DND_IM_IMAGE:
34662
f14347f38e3b Refactor the remaining pidgin to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
1108 conv = PURPLE_CONVERSATION(purple_im_conversation_new(data->account, data->who));
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1109
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1110 if (!g_file_get_contents(data->filename, &filedata, &size,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1111 &err)) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1112 char *str;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1113
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1114 str = g_strdup_printf(_("The following error has occurred loading %s: %s"), data->filename, err->message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1115 purple_notify_error(NULL, NULL,
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
1116 _("Failed to load image"), str, NULL);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1117
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1118 g_error_free(err);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1119 g_free(str);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1120
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1121 break;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1122 }
31372
743be8e50f23 When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <markdoliner@pidgin.im>
parents: 31217
diff changeset
1123 shortname = strrchr(data->filename, G_DIR_SEPARATOR);
743be8e50f23 When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <markdoliner@pidgin.im>
parents: 31217
diff changeset
1124 shortname = shortname ? shortname + 1 : data->filename;
39273
820a44d3d618 pidgin: Fix -Wpointer-sign warning expected 'const guint8 *' vs 'gchar *'
Mike Ruprecht <cmaiku@gmail.com>
parents: 39175
diff changeset
1125 img = purple_image_new_from_data((guint8 *)filedata, size);
35825
4c1e8623b7c7 Fix warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35815
diff changeset
1126 purple_image_set_friendly_filename(img, shortname);
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
1127
39688
2b1c2b6e9993 Additional cleanups for the entry webkit removal
Gary Kramlich <grim@reaperworld.com>
parents: 39665
diff changeset
1128 # warning fix this when talkatu has a way to programmatically insert an image
2b1c2b6e9993 Additional cleanups for the entry webkit removal
Gary Kramlich <grim@reaperworld.com>
parents: 39665
diff changeset
1129 // pidgin_webview_insert_image(PIDGIN_WEBVIEW(gtkconv->entry), img);
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
1130 g_object_unref(img);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1131
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1132 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1133 }
25152
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1134 g_free(data->filename);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1135 g_free(data->who);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1136 g_free(data);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1137 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1138
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10681
diff changeset
1139 static void dnd_image_cancel_callback(_DndData *data, int choice)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1140 {
25152
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1141 g_free(data->filename);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1142 g_free(data->who);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1143 g_free(data);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1144 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1145
11110
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1146 static void dnd_set_icon_ok_cb(_DndData *data)
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1147 {
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1148 dnd_image_ok_callback(data, DND_BUDDY_ICON);
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1149 }
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1150
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1151 static void dnd_set_icon_cancel_cb(_DndData *data)
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1152 {
25152
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1153 g_free(data->filename);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1154 g_free(data->who);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1155 g_free(data);
11110
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1156 }
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1157
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1158 static void
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1159 pidgin_dnd_file_send_image(PurpleAccount *account, const gchar *who,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1160 const gchar *filename)
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1161 {
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1162 PurpleConnection *gc = purple_account_get_connection(account);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1163 PurpleProtocol *protocol = NULL;
39922
113b93e2bd2a Replace malloc(sizeof(...)) with g_new0(..., 1).
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39919
diff changeset
1164 _DndData *data = g_new0(_DndData, 1);
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1165 gboolean ft = FALSE, im = FALSE;
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1166
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1167 data->who = g_strdup(who);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1168 data->filename = g_strdup(filename);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1169 data->account = account;
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1170
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1171 if (gc)
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1172 protocol = purple_connection_get_protocol(gc);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1173
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1174 if (!(purple_connection_get_flags(gc) & PURPLE_CONNECTION_FLAG_NO_IMAGES))
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1175 im = TRUE;
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1176
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
1177 if (protocol && PURPLE_IS_PROTOCOL_XFER(protocol)) {
39274
7acdb1d9797c pidgin: Fix various -Wincompatible-pointer-types warnings
Mike Ruprecht <cmaiku@gmail.com>
parents: 39273
diff changeset
1178 PurpleProtocolXferInterface *iface =
7acdb1d9797c pidgin: Fix various -Wincompatible-pointer-types warnings
Mike Ruprecht <cmaiku@gmail.com>
parents: 39273
diff changeset
1179 PURPLE_PROTOCOL_XFER_GET_IFACE(protocol);
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
1180
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
1181 if(iface->can_receive) {
39274
7acdb1d9797c pidgin: Fix various -Wincompatible-pointer-types warnings
Mike Ruprecht <cmaiku@gmail.com>
parents: 39273
diff changeset
1182 ft = purple_protocol_xfer_can_receive(
7acdb1d9797c pidgin: Fix various -Wincompatible-pointer-types warnings
Mike Ruprecht <cmaiku@gmail.com>
parents: 39273
diff changeset
1183 PURPLE_PROTOCOL_XFER(protocol),
7acdb1d9797c pidgin: Fix various -Wincompatible-pointer-types warnings
Mike Ruprecht <cmaiku@gmail.com>
parents: 39273
diff changeset
1184 gc, who);
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
1185 } else {
39005
6a56e1366809 xfer: Rename PurpleProtocolXferInterface.send() to send_file()
Mike Ruprecht <cmaiku@gmail.com>
parents: 38993
diff changeset
1186 ft = (iface->send_file) ? TRUE : FALSE;
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
1187 }
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
1188 }
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1189
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1190 if (im && ft) {
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1191 purple_request_choice(NULL, NULL,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1192 _("You have dragged an image"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1193 _("You can send this image as a file "
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1194 "transfer, embed it into this message, "
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1195 "or use it as the buddy icon for this user."),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1196 (gpointer)DND_FILE_TRANSFER, _("OK"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1197 (GCallback)dnd_image_ok_callback, _("Cancel"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1198 (GCallback)dnd_image_cancel_callback,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1199 purple_request_cpar_from_account(account), data,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1200 _("Set as buddy icon"), DND_BUDDY_ICON,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1201 _("Send image file"), DND_FILE_TRANSFER,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1202 _("Insert in message"), DND_IM_IMAGE,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1203 NULL);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1204 } else if (!(im || ft)) {
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1205 purple_request_yes_no(NULL, NULL, _("You have dragged an image"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1206 _("Would you like to set it as the buddy icon for this user?"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1207 PURPLE_DEFAULT_ACTION_NONE,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1208 purple_request_cpar_from_account(account),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1209 data, (GCallback)dnd_set_icon_ok_cb, (GCallback)dnd_set_icon_cancel_cb);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1210 } else {
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1211 purple_request_choice(NULL, NULL,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1212 _("You have dragged an image"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1213 (ft ? _("You can send this image as a file transfer, or use it as the buddy icon for this user.") :
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1214 _("You can insert this image into this message, or use it as the buddy icon for this user")),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1215 GINT_TO_POINTER(ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1216 _("OK"), (GCallback)dnd_image_ok_callback,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1217 _("Cancel"), (GCallback)dnd_image_cancel_callback,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1218 purple_request_cpar_from_account(account),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1219 data,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1220 _("Set as buddy icon"), DND_BUDDY_ICON,
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1221 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1222 NULL);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1223 }
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1224
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1225 }
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1226
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1227 #ifndef _WIN32
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1228 static void
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1229 pidgin_dnd_file_send_desktop(PurpleAccount *account, const gchar *who,
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1230 const gchar *filename)
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1231 {
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1232 gchar *name;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1233 gchar *type;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1234 gchar *url;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1235 GKeyFile *desktop_file;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1236 PurpleConversation *conv;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1237 PidginConversation *gtkconv;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1238 GError *error = NULL;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1239
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1240 desktop_file = g_key_file_new();
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1241
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1242 if (!g_key_file_load_from_file(desktop_file, filename, G_KEY_FILE_NONE, &error)) {
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1243 if (error) {
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1244 purple_debug_warning("D&D", "Failed to load %s: %s\n",
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1245 filename, error->message);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1246 g_error_free(error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1247 }
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1248 return;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1249 }
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1250
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1251 name = g_key_file_get_string(desktop_file, G_KEY_FILE_DESKTOP_GROUP,
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1252 G_KEY_FILE_DESKTOP_KEY_NAME, &error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1253 if (error) {
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1254 purple_debug_warning("D&D", "Failed to read the Name from a desktop file: %s\n",
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1255 error->message);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1256 g_error_free(error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1257
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1258 }
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1259
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1260 type = g_key_file_get_string(desktop_file, G_KEY_FILE_DESKTOP_GROUP,
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1261 G_KEY_FILE_DESKTOP_KEY_TYPE, &error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1262 if (error) {
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1263 purple_debug_warning("D&D", "Failed to read the Type from a desktop file: %s\n",
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1264 error->message);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1265 g_error_free(error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1266
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1267 }
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1268
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1269 url = g_key_file_get_string(desktop_file, G_KEY_FILE_DESKTOP_GROUP,
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1270 G_KEY_FILE_DESKTOP_KEY_URL, &error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1271 if (error) {
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1272 purple_debug_warning("D&D", "Failed to read the Type from a desktop file: %s\n",
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1273 error->message);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1274 g_error_free(error);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1275
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1276 }
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1277
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1278
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1279 /* If any of this is null, do nothing. */
39919
1d0ce288ca30 Fix possible use-of-NULL warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39913
diff changeset
1280 if (!name || !type || !url) {
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1281 g_free(type);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1282 g_free(name);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1283 g_free(url);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1284
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1285 return;
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1286 }
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1287
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1288 /* I don't know if we really want to do anything here. Most of
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1289 * the desktop item types are crap like "MIME Type" (I have no
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1290 * clue how that would be a desktop item) and "Comment"...
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1291 * nothing we can really send. The only logical one is
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1292 * "Application," but do we really want to send a binary and
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1293 * nothing else? Probably not. I'll just give an error and
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1294 * return. */
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1295 /* The original patch sent the icon used by the launcher. That's probably wrong */
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38299 38260
diff changeset
1296 if (purple_strequal(type, "Link")) {
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1297 purple_notify_error(NULL, NULL, _("Cannot send launcher"),
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1298 _("You dragged a desktop launcher. Most "
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1299 "likely you wanted to send the target "
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1300 "of this launcher instead of this "
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1301 "launcher itself."), NULL);
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1302
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1303 } else {
39690
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1304 GtkTextBuffer *buffer = NULL;
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1305 GtkTextMark *mark = NULL;
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1306 GtkTextIter iter;
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1307
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1308 conv = PURPLE_CONVERSATION(purple_im_conversation_new(account, who));
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1309 gtkconv = PIDGIN_CONVERSATION(conv);
39690
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1310
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1311 buffer = talkatu_editor_get_buffer(TALKATU_EDITOR(gtkconv->editor));
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1312 mark = gtk_text_buffer_get_insert(buffer);
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1313
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1314 gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1315
173fe0644961 Fix some issues found in review and default to an TalkatuHTMLBuffer
Gary Kramlich <grim@reaperworld.com>
parents: 39688
diff changeset
1316 talkatu_buffer_insert_link(TALKATU_BUFFER(buffer), &iter, name, url);
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1317 }
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1318
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1319 g_free(type);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1320 g_free(name);
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1321 g_free(url);
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1322 }
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1323 #endif /* _WIN32 */
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1324
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1325 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1326 pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char *who)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1327 {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1328 GdkPixbuf *pb;
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1329 GList *files = purple_uri_list_extract_filenames((const gchar *) gtk_selection_data_get_data(sd));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1330 PurpleConnection *gc = purple_account_get_connection(account);
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1331 gchar *filename = NULL;
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1332 gchar *basename = NULL;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1333
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1334 g_return_if_fail(account != NULL);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1335 g_return_if_fail(who != NULL);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1336
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1337 for ( ; files; files = g_list_delete_link(files, files)) {
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1338 g_free(filename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1339 g_free(basename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1340
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1341 filename = files->data;
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1342 basename = g_path_get_basename(filename);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1343
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1344 /* XXX - Make ft API support creating a transfer with more than one file */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1345 if (!g_file_test(filename, G_FILE_TEST_EXISTS)) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1346 continue;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1347 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1348
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1349 /* XXX - make ft api suupport sending a directory */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1350 /* Are we dealing with a directory? */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1351 if (g_file_test(filename, G_FILE_TEST_IS_DIR)) {
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1352 char *str, *str2;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1353
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1354 str = g_strdup_printf(_("Cannot send folder %s."), basename);
16977
c9cb49bea66d Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents: 16692
diff changeset
1355 str2 = g_strdup_printf(_("%s cannot transfer a folder. You will need to send the files within individually."), PIDGIN_NAME);
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1356
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
1357 purple_notify_error(NULL, NULL, str, str2,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
1358 purple_request_cpar_from_connection(gc));
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1359
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1360 g_free(str);
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1361 g_free(str2);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1362 continue;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1363 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1364
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1365 /* Are we dealing with an image? */
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
1366 pb = pidgin_pixbuf_new_from_file(filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1367 if (pb) {
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1368 pidgin_dnd_file_send_image(account, who, filename);
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1369
26820
76f90ca8f6f2 Use g_object_ref/unref instead of the deprecated versions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26753
diff changeset
1370 g_object_unref(G_OBJECT(pb));
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1371
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1372 continue;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1373 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1374
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1375 #ifndef _WIN32
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1376 /* Are we trying to send a .desktop file? */
37541
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1377 else if (purple_str_has_suffix(basename, ".desktop")) {
5b8d92fdcaa3 Use glib's Desktop file utilities instead of our own
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37540
diff changeset
1378 pidgin_dnd_file_send_desktop(account, who, filename);
37540
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1379
b59120d66fdd Refactor a painfully long Drag&Drop util function
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37422
diff changeset
1380 continue;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1381 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1382 #endif /* _WIN32 */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1383
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1384 /* Everything is fine, let's send */
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35455
diff changeset
1385 purple_serv_send_file(gc, who, filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1386 }
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1387
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1388 g_free(filename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1389 g_free(basename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1390 }
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1391
37406
98ec68212b1f Move PurpleIconScaleRules to BuddyIcon API
Jorge Villaseñor <salinasv@pidgin.im>
parents: 37200
diff changeset
1392 void pidgin_buddy_icon_get_scale_size(GdkPixbuf *buf, PurpleBuddyIconSpec *spec, PurpleBuddyIconScaleFlags rules, int *width, int *height)
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1393 {
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1394 *width = gdk_pixbuf_get_width(buf);
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1395 *height = gdk_pixbuf_get_height(buf);
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1396
15301
26153c5f156a [gaim-migrate @ 18029]
Mark Doliner <markdoliner@pidgin.im>
parents: 15289
diff changeset
1397 if ((spec == NULL) || !(spec->scale_rules & rules))
26153c5f156a [gaim-migrate @ 18029]
Mark Doliner <markdoliner@pidgin.im>
parents: 15289
diff changeset
1398 return;
26153c5f156a [gaim-migrate @ 18029]
Mark Doliner <markdoliner@pidgin.im>
parents: 15289
diff changeset
1399
36625
e6febbd8cbec Renamed purple_buddy_icon_get_scale_size to purple_buddy_icon_spec_get_scaled_size
Ankit Vani <a@nevitus.org>
parents: 36623
diff changeset
1400 purple_buddy_icon_spec_get_scaled_size(spec, width, height);
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1401
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1402 /* and now for some arbitrary sanity checks */
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1403 if(*width > 100)
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1404 *width = 100;
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1405 if(*height > 100)
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1406 *height = 100;
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1407 }
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1408
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1409 GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive prim, GtkWidget *w, const char *size)
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1410 {
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1411 GtkIconSize icon_size = gtk_icon_size_from_name(size);
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1412 GdkPixbuf *pixbuf = NULL;
26847
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1413 const char *stock = pidgin_stock_id_from_status_primitive(prim);
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1414
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1415 pixbuf = gtk_widget_render_icon (w, stock ? stock : PIDGIN_STOCK_STATUS_AVAILABLE,
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1416 icon_size, "GtkWidget");
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1417 return pixbuf;
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1418 }
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1419
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1420 static const char *
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1421 stock_id_from_status_primitive_idle(PurpleStatusPrimitive prim, gboolean idle)
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1422 {
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1423 const char *stock = NULL;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1424 switch (prim) {
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1425 case PURPLE_STATUS_UNSET:
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1426 stock = NULL;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1427 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1428 case PURPLE_STATUS_UNAVAILABLE:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1429 stock = idle ? PIDGIN_STOCK_STATUS_BUSY_I : PIDGIN_STOCK_STATUS_BUSY;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1430 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1431 case PURPLE_STATUS_AWAY:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1432 stock = idle ? PIDGIN_STOCK_STATUS_AWAY_I : PIDGIN_STOCK_STATUS_AWAY;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1433 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1434 case PURPLE_STATUS_EXTENDED_AWAY:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1435 stock = idle ? PIDGIN_STOCK_STATUS_XA_I : PIDGIN_STOCK_STATUS_XA;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1436 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1437 case PURPLE_STATUS_INVISIBLE:
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1438 stock = PIDGIN_STOCK_STATUS_INVISIBLE;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1439 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1440 case PURPLE_STATUS_OFFLINE:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1441 stock = idle ? PIDGIN_STOCK_STATUS_OFFLINE_I : PIDGIN_STOCK_STATUS_OFFLINE;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1442 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1443 default:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1444 stock = idle ? PIDGIN_STOCK_STATUS_AVAILABLE_I : PIDGIN_STOCK_STATUS_AVAILABLE;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1445 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1446 }
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1447 return stock;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1448 }
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1449
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1450 const char *
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1451 pidgin_stock_id_from_status_primitive(PurpleStatusPrimitive prim)
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1452 {
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1453 return stock_id_from_status_primitive_idle(prim, FALSE);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1454 }
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1455
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1456 const char *
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1457 pidgin_stock_id_from_presence(PurplePresence *presence)
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1458 {
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1459 PurpleStatus *status;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1460 PurpleStatusType *type;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1461 PurpleStatusPrimitive prim;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1462 gboolean idle;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1463
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1464 g_return_val_if_fail(presence, NULL);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1465
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1466 status = purple_presence_get_active_status(presence);
34855
9c289149eed4 Global replaces according to GObject status API
Ankit Vani <a@nevitus.org>
parents: 34769
diff changeset
1467 type = purple_status_get_status_type(status);
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1468 prim = purple_status_type_get_primitive(type);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1469
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1470 idle = purple_presence_is_idle(presence);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1471
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1472 return stock_id_from_status_primitive_idle(prim, idle);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1473 }
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1474
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1475 GdkPixbuf *
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36633
diff changeset
1476 pidgin_create_protocol_icon(PurpleAccount *account, PidginProtocolIconSize size)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1477 {
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
1478 PurpleProtocol *protocol;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1479
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1480 g_return_val_if_fail(account != NULL, NULL);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1481
36626
18fc361b3704 Renamed purple_find_protocol_info to purple_protocols_find
Ankit Vani <a@nevitus.org>
parents: 36625
diff changeset
1482 protocol = purple_protocols_find(purple_account_get_protocol_id(account));
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
1483 if (protocol == NULL)
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1484 return NULL;
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
1485 return pidgin_create_icon_from_protocol(protocol, size, account);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1486 }
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1487
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1488 static void
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1489 menu_action_cb(GtkMenuItem *item, gpointer object)
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1490 {
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1491 gpointer data;
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1492 void (*callback)(gpointer, gpointer);
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1493
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1494 callback = g_object_get_data(G_OBJECT(item), "purplecallback");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1495 data = g_object_get_data(G_OBJECT(item), "purplecallbackdata");
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1496
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1497 if (callback)
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1498 callback(object, data);
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1499 }
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1500
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1501 GtkWidget *
39481
4db28449567d Rename PurpleMenuAction to PurpleActionMenu
Gary Kramlich <grim@reaperworld.com>
parents: 39466
diff changeset
1502 pidgin_append_menu_action(GtkWidget *menu, PurpleActionMenu *act,
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1503 gpointer object)
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1504 {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1505 GtkWidget *menuitem;
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1506 GList *list;
17386
f68ba6199d79 merge of 'de0c8e6287f1090343edb9c43e0d8d681e58df07'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17368 17385
diff changeset
1507
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1508 if (act == NULL) {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1509 return pidgin_separator(menu);
17386
f68ba6199d79 merge of 'de0c8e6287f1090343edb9c43e0d8d681e58df07'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17368 17385
diff changeset
1510 }
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1511
39742
bed2cb40d222 Remove purple_action_menu_get_stock_icon.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39703
diff changeset
1512 menuitem = gtk_menu_item_new_with_mnemonic(
bed2cb40d222 Remove purple_action_menu_get_stock_icon.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39703
diff changeset
1513 purple_action_menu_get_label(act));
34485
2574bedf42f5 E2EE: make it possible to attach stock icon to PurpleMenuAction
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34451
diff changeset
1514
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
1515 list = purple_action_menu_get_children(act);
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1516
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1517 if (list == NULL) {
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1518 PurpleCallback callback;
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1519
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
1520 callback = purple_action_menu_get_callback(act);
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1521
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1522 if (callback != NULL) {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1523 g_object_set_data(G_OBJECT(menuitem),
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1524 "purplecallback",
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1525 callback);
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1526 g_object_set_data(G_OBJECT(menuitem),
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1527 "purplecallbackdata",
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
1528 purple_action_menu_get_data(act));
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1529 g_signal_connect(G_OBJECT(menuitem), "activate",
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1530 G_CALLBACK(menu_action_cb),
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1531 object);
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1532 } else {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1533 gtk_widget_set_sensitive(menuitem, FALSE);
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1534 }
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1535
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1536 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1537 } else {
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1538 GList *l = NULL;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1539 GtkWidget *submenu = NULL;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1540 GtkAccelGroup *group;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1541
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1542 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1543
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1544 submenu = gtk_menu_new();
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1545 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1546
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1547 group = gtk_menu_get_accel_group(GTK_MENU(menu));
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1548 if (group) {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1549 char *path = g_strdup_printf("%s/%s",
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32415
diff changeset
1550 gtk_menu_item_get_accel_path(GTK_MENU_ITEM(menuitem)),
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
1551 purple_action_menu_get_label(act));
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1552 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1553 g_free(path);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1554 gtk_menu_set_accel_group(GTK_MENU(submenu), group);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1555 }
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1556
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1557 for (l = list; l; l = l->next) {
39481
4db28449567d Rename PurpleMenuAction to PurpleActionMenu
Gary Kramlich <grim@reaperworld.com>
parents: 39466
diff changeset
1558 PurpleActionMenu *act = (PurpleActionMenu *)l->data;
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1559
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1560 pidgin_append_menu_action(submenu, act, object);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1561 }
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1562 g_list_free(list);
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
1563 purple_action_menu_set_children(act, NULL);
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1564 }
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
1565 purple_action_menu_free(act);
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1566 return menuitem;
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1567 }
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1568
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1569 static gboolean buddyname_completion_match_func(GtkEntryCompletion *completion,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1570 const gchar *key, GtkTreeIter *iter, gpointer user_data)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1571 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1572 GtkTreeModel *model;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1573 GValue val1;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1574 GValue val2;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1575 const char *tmp;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1576
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1577 model = gtk_entry_completion_get_model(completion);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1578
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1579 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
1580 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
1581 tmp = g_value_get_string(&val1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1582 if (tmp != NULL && purple_str_has_prefix(tmp, key))
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1583 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1584 g_value_unset(&val1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1585 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1586 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1587 g_value_unset(&val1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1588
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1589 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
1590 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
1591 tmp = g_value_get_string(&val2);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1592 if (tmp != NULL && purple_str_has_prefix(tmp, key))
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1593 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1594 g_value_unset(&val2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1595 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1596 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1597 g_value_unset(&val2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1598
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1599 return FALSE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1600 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1601
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1602 static gboolean buddyname_completion_match_selected_cb(GtkEntryCompletion *completion,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1603 GtkTreeModel *model, GtkTreeIter *iter, PidginCompletionData *data)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1604 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1605 GValue val;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1606 GtkWidget *optmenu = data->accountopt;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1607 PurpleAccount *account;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1608
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1609 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
1610 gtk_tree_model_get_value(model, iter, COMPLETION_BUDDY_COLUMN, &val);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1611 gtk_entry_set_text(GTK_ENTRY(data->entry), g_value_get_string(&val));
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1612 g_value_unset(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1613
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1614 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
1615 account = g_value_get_pointer(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1616 g_value_unset(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1617
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1618 if (account == NULL)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1619 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1620
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
1621 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
1622 aop_option_menu_select_by_data(optmenu, account);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1623
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1624 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1625 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1626
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1627 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
1628 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
1629 const PurpleAccount *account, const char *buddyname)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1630 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1631 GtkTreeIter iter;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1632 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
1633 gchar *normalized_buddyname;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1634 gchar *tmp;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1635
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1636 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
1637 normalized_buddyname = g_utf8_casefold(tmp, -1);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1638 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1639
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1640 /* 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
1641 when the name and buddy alias match. */
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
1642 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
1643 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
1644 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
1645
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1646 tmp = g_utf8_casefold(tmp2, -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1647 g_free(tmp2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1648
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1649 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1650 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
1651 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
1652 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
1653 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
1654 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
1655 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1656 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1657 g_free(completion_entry);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1658 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1659 completion_added = TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1660 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1661
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1662 /* 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
1663 when the name and contact alias match. */
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
1664 if (contact_alias && !purple_strequal(contact_alias, buddyname)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1665 /* 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
1666 if (!purple_strequal(contact_alias, buddy_alias)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1667 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
1668 buddyname, contact_alias);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1669 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
1670
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1671 tmp = g_utf8_casefold(tmp2, -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1672 g_free(tmp2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1673
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1674 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1675 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
1676 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
1677 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
1678 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
1679 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
1680 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1681 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1682 g_free(completion_entry);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1683 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1684 completion_added = TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1685 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1686 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1687
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1688 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
1689 /* Add the buddy's name. */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1690 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1691 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
1692 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
1693 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
1694 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
1695 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
1696 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1697 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1698 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1699
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1700 g_free(normalized_buddyname);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1701 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1702
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1703 static void get_log_set_name(PurpleLogSet *set, gpointer value, PidginCompletionData *data)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1704 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1705 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
1706 gpointer user_data = data->filter_func_user_data;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1707
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1708 /* 1. Don't show buddies because we will have gotten them already.
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1709 * 2. The boxes that use this autocomplete code handle only IMs. */
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1710 if (!set->buddy && set->type == PURPLE_LOG_IM) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1711 PidginBuddyCompletionEntry entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1712 entry.is_buddy = FALSE;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1713 entry.entry.logged_buddy = set;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1714
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1715 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
1716 add_buddyname_autocomplete_entry(data->store,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1717 NULL, NULL, set->account, set->name);
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1718 }
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1719 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1720 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1721
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1722 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1723 add_completion_list(PidginCompletionData *data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1724 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1725 PurpleBlistNode *gnode, *cnode, *bnode;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1726 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
1727 gpointer user_data = data->filter_func_user_data;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1728 GHashTable *sets;
34739
7d507b8b9f92 Refactored pidgin to use the GObject BList API
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
1729 gchar *alias;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1730
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1731 gtk_list_store_clear(data->store);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1732
39665
2172e3b8eeef Rename some buddy list accessor functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39568
diff changeset
1733 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
1734 gnode = gnode->next) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34662
diff changeset
1735 if (!PURPLE_IS_GROUP(gnode))
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1736 continue;
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1737
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1738 for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1739 {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34662
diff changeset
1740 if (!PURPLE_IS_CONTACT(cnode))
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1741 continue;
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1742
34769
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
1743 g_object_get(cnode, "alias", &alias, NULL);
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
1744
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1745 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1746 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1747 PidginBuddyCompletionEntry entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1748 entry.is_buddy = TRUE;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1749 entry.entry.buddy = (PurpleBuddy *) bnode;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1750
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1751 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
1752 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
1753 alias,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1754 purple_buddy_get_contact_alias(entry.entry.buddy),
32709
0edad3ff7243 Use the PurpleBuddy accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1755 purple_buddy_get_account(entry.entry.buddy),
0edad3ff7243 Use the PurpleBuddy accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1756 purple_buddy_get_name(entry.entry.buddy)
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1757 );
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1758 }
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1759 }
34769
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
1760
427725f8ed54 Free strings received from g_object_get
Ankit Vani <a@nevitus.org>
parents: 34739
diff changeset
1761 g_free(alias);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1762 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1763 }
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1764
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1765 sets = purple_log_get_log_sets();
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1766 g_hash_table_foreach(sets, (GHFunc)get_log_set_name, data);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1767 g_hash_table_destroy(sets);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1768
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1769 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1770
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1771 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
1772 buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1773 {
17707
b5f042209c68 Unleak a few bytes in the screenname completion code
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17605
diff changeset
1774 g_free(data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1775 purple_signals_disconnect_by_handle(widget);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1776 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1777
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1778 static void
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1779 repopulate_autocomplete(gpointer something, gpointer data)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1780 {
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1781 add_completion_list(data);
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1782 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1783
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1784 void
39796
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
1785 pidgin_setup_screenname_autocomplete(
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
1786 GtkWidget *entry, GtkWidget *chooser,
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
1787 PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1788 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1789 PidginCompletionData *data;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1790
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1791 /*
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1792 * 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
1793 * 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
1794 * 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
1795 */
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1796 GtkListStore *store;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1797
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1798 GtkEntryCompletion *completion;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1799
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1800 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
1801 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
1802 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
1803 G_TYPE_POINTER);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1804
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1805 data->entry = entry;
39796
b42070e4ea6e Rename optmenu -> chooser in other files.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39785
diff changeset
1806 data->accountopt = chooser;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1807 if (filter_func == NULL) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1808 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
1809 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
1810 } else {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1811 data->filter_func = filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1812 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
1813 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1814 data->store = store;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1815
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1816 add_completion_list(data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1817
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1818 /* Sort the completion list by buddy name */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1819 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
1820 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
1821 GTK_SORT_ASCENDING);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1822
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1823 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
1824 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
1825
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1826 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
1827 G_CALLBACK(buddyname_completion_match_selected_cb), data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1828
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1829 gtk_entry_set_completion(GTK_ENTRY(entry), completion);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1830 g_object_unref(completion);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1831
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1832 gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1833 g_object_unref(store);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1834
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1835 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
1836
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1837 purple_signal_connect(purple_connections_get_handle(), "signed-on", entry,
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1838 PURPLE_CALLBACK(repopulate_autocomplete), data);
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1839 purple_signal_connect(purple_connections_get_handle(), "signed-off", entry,
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1840 PURPLE_CALLBACK(repopulate_autocomplete), data);
13366
e01cf252b407 [gaim-migrate @ 15738]
Richard Laager <rlaager@pidgin.im>
parents: 13365
diff changeset
1841
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1842 purple_signal_connect(purple_accounts_get_handle(), "account-added", entry,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1843 PURPLE_CALLBACK(repopulate_autocomplete), data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1844 purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1845 PURPLE_CALLBACK(repopulate_autocomplete), data);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1846
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1847 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
1848 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1849
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1850 gboolean
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1851 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
1852 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
1853
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1854 if (completion_entry->is_buddy) {
32709
0edad3ff7243 Use the PurpleBuddy accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1855 return all || purple_account_is_connected(purple_buddy_get_account(completion_entry->entry.buddy));
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1856 } else {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1857 return all || (completion_entry->entry.logged_buddy->account != NULL && purple_account_is_connected(completion_entry->entry.logged_buddy->account));
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1858 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1859 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1860
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1861 void pidgin_set_cursor(GtkWidget *widget, GdkCursorType cursor_type)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1862 {
37997
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37996
diff changeset
1863 GdkDisplay *display;
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1864 GdkCursor *cursor;
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1865
13470
5550131ec50b [gaim-migrate @ 15845]
Richard Laager <rlaager@pidgin.im>
parents: 13435
diff changeset
1866 g_return_if_fail(widget != NULL);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1867 if (gtk_widget_get_window(widget) == NULL)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1868 return;
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1869
37997
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37996
diff changeset
1870 display = gtk_widget_get_display(widget);
7b62a2153898 Use gdk_cursor_new_for_display over gdk_cursor_new.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37996
diff changeset
1871 cursor = gdk_cursor_new_for_display(display, cursor_type);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1872 gdk_window_set_cursor(gtk_widget_get_window(widget), cursor);
35533
8ca83abbc248 Fix some crashes and bugs introduced by recent deprecation fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35532
diff changeset
1873
35532
2c802bb77720 Fix most of warnings for gtk 3.4
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35528
diff changeset
1874 g_object_unref(cursor);
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1875
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1876 gdk_display_flush(gdk_window_get_display(gtk_widget_get_window(widget)));
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1877 }
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1878
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1879 void pidgin_clear_cursor(GtkWidget *widget)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1880 {
13470
5550131ec50b [gaim-migrate @ 15845]
Richard Laager <rlaager@pidgin.im>
parents: 13435
diff changeset
1881 g_return_if_fail(widget != NULL);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1882 if (gtk_widget_get_window(widget) == NULL)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1883 return;
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1884
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1885 gdk_window_set_cursor(gtk_widget_get_window(widget), NULL);
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1886 }
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
1887
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1888 static void
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1889 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1890 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1891 char *filename, *current_folder;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1892
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1893 if (response != GTK_RESPONSE_ACCEPT) {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1894 if (dialog->callback)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1895 dialog->callback(NULL, dialog->data);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1896 g_free(dialog);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1897 return;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1898 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1899
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1900 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->icon_filesel));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1901 current_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1902 if (current_folder != NULL) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1903 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", current_folder);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1904 g_free(current_folder);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1905 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1906
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1907
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1908 if (dialog->callback)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1909 dialog->callback(filename, dialog->data);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1910 g_free(filename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1911 g_free(dialog);
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32415
diff changeset
1912 }
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1913
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1914
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1915 static void
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1916 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1917 {
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
1918 GdkPixbuf *pixbuf;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1919 int height, width;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1920 char *basename, *markup, *size;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
1921 GStatBuf st;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1922 char *filename;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1923
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1924 filename = gtk_file_chooser_get_preview_filename(
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1925 GTK_FILE_CHOOSER(dialog->icon_filesel));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1926
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
1927 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file_at_size(filename, 128, 128)))
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1928 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1929 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1930 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), "");
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1931 g_free(filename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1932 return;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1933 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1934
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
1935 gdk_pixbuf_get_file_info(filename, &width, &height);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1936 basename = g_path_get_basename(filename);
39824
aefdb7ab2475 Replace purple_str_size_to_units by g_format_size.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39814
diff changeset
1937 size = g_format_size(st.st_size);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1938 markup = g_strdup_printf(_("<b>File:</b> %s\n"
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1939 "<b>File size:</b> %s\n"
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1940 "<b>Image size:</b> %dx%d"),
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1941 basename, size, width, height);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1942
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
1943 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), pixbuf);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1944 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1945
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1946 g_object_unref(G_OBJECT(pixbuf));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1947 g_free(filename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1948 g_free(basename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1949 g_free(size);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1950 g_free(markup);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1951 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1952
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1953 GtkFileChooserNative *
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1954 pidgin_buddy_icon_chooser_new(GtkWindow *parent,
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1955 void (*callback)(const char *, gpointer),
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1956 gpointer data)
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1957 {
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1958 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1959
17046
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1960 GtkWidget *vbox;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1961 const char *current_folder;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1962
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1963 dialog->callback = callback;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1964 dialog->data = data;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1965
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
1966 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1967
39930
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1968 dialog->icon_filesel = gtk_file_chooser_native_new(
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1969 _("Buddy Icon"), parent, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Open"),
411f3df51bcd Convert to GtkFileChooserNative.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39858
diff changeset
1970 _("_Cancel"));
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1971 if ((current_folder != NULL) && (*current_folder != '\0'))
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1972 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel),
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1973 current_folder);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1974
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1975 dialog->icon_preview = gtk_image_new();
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1976 dialog->icon_text = gtk_label_new(NULL);
17046
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1977
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
1978 vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_BOX_SPACE);
17046
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1979 gtk_widget_set_size_request(GTK_WIDGET(vbox), -1, 50);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1980 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_preview), TRUE, FALSE, 0);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1981 gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_text), FALSE, FALSE, 0);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1982 gtk_widget_show_all(vbox);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1983
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1984 gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog->icon_filesel), vbox);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1985 gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->icon_filesel), TRUE);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1986 gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
1987
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1988 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview",
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1989 G_CALLBACK(icon_preview_change_cb), dialog);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1990 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response",
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1991 G_CALLBACK(icon_filesel_choose_cb), dialog);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1992 icon_preview_change_cb(NULL, dialog);
21729
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1993
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1994 return dialog->icon_filesel;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1995 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
1996
35455
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
1997 /*
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
1998 * str_array_match:
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
1999 *
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
2000 * Returns: %TRUE if any string from array @a exists in array @b.
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2001 */
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2002 static gboolean
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2003 str_array_match(char **a, char **b)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2004 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2005 int i, j;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2006
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2007 if (!a || !b)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2008 return FALSE;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2009 for (i = 0; a[i] != NULL; i++)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2010 for (j = 0; b[j] != NULL; j++)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2011 if (!g_ascii_strcasecmp(a[i], b[j]))
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2012 return TRUE;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2013 return FALSE;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2014 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2015
16446
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2016 gpointer
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36543
diff changeset
2017 pidgin_convert_buddy_icon(PurpleProtocol *protocol, const char *path, size_t *len)
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2018 {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2019 PurpleBuddyIconSpec *spec;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2020 int orig_width, orig_height, new_width, new_height;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2021 GdkPixbufFormat *format;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2022 char **pixbuf_formats;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2023 char **protocol_formats;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2024 GError *error = NULL;
15284
98e8f9912107 [gaim-migrate @ 18012]
Mark Doliner <markdoliner@pidgin.im>
parents: 15254
diff changeset
2025 gchar *contents;
98e8f9912107 [gaim-migrate @ 18012]
Mark Doliner <markdoliner@pidgin.im>
parents: 15254
diff changeset
2026 gsize length;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2027 GdkPixbuf *pixbuf, *original;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2028 float scale_factor;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2029 int i;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2030 gchar *tmp;
14203
f3a50c328ddc [gaim-migrate @ 16783]
Mark Doliner <markdoliner@pidgin.im>
parents: 14196
diff changeset
2031
36608
bb8dbeba5bed Changed icon spec member of a protocol to a pointer. Use purple_buddy_icon_spec_new() to create an icon spec instance
Ankit Vani <a@nevitus.org>
parents: 36607
diff changeset
2032 spec = purple_protocol_get_icon_spec(protocol);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2033 g_return_val_if_fail(spec->format != NULL, NULL);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2034
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2035 format = gdk_pixbuf_get_file_info(path, &orig_width, &orig_height);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2036 if (format == NULL) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2037 purple_debug_warning("buddyicon", "Could not get file info of %s\n", path);
14206
5a17eb1a2c3e [gaim-migrate @ 16786]
Mark Doliner <markdoliner@pidgin.im>
parents: 14203
diff changeset
2038 return NULL;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2039 }
15289
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2040
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2041 pixbuf_formats = gdk_pixbuf_format_get_extensions(format);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2042 protocol_formats = g_strsplit(spec->format, ",", 0);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2043
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2044 if (str_array_match(pixbuf_formats, protocol_formats) && /* This is an acceptable format AND */
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36633
diff changeset
2045 (!(spec->scale_rules & PURPLE_ICON_SCALE_SEND) || /* The protocol doesn't scale before it sends OR */
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2046 (spec->min_width <= orig_width && spec->max_width >= orig_width &&
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2047 spec->min_height <= orig_height && spec->max_height >= orig_height))) /* The icon is the correct size */
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2048 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2049 g_strfreev(pixbuf_formats);
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
2050
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2051 if (!g_file_get_contents(path, &contents, &length, &error)) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2052 purple_debug_warning("buddyicon", "Could not get file contents "
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2053 "of %s: %s\n", path, error->message);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2054 g_strfreev(protocol_formats);
15289
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2055 return NULL;
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2056 }
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2057
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2058 if (spec->max_filesize == 0 || length < spec->max_filesize) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2059 /* The supplied image fits the file size, dimensions and type
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2060 constraints. Great! Return it without making any changes. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2061 if (len)
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2062 *len = length;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2063 g_strfreev(protocol_formats);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2064 return contents;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2065 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2066
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2067 /* The image was too big. Fall-through and try scaling it down. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2068 g_free(contents);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2069 } else {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2070 g_strfreev(pixbuf_formats);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2071 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2072
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2073 /* The original image wasn't compatible. Scale it or convert file type. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2074 pixbuf = gdk_pixbuf_new_from_file(path, &error);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2075 if (error) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2076 purple_debug_warning("buddyicon", "Could not open icon '%s' for "
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2077 "conversion: %s\n", path, error->message);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2078 g_error_free(error);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2079 g_strfreev(protocol_formats);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2080 return NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2081 }
39274
7acdb1d9797c pidgin: Fix various -Wincompatible-pointer-types warnings
Mike Ruprecht <cmaiku@gmail.com>
parents: 39273
diff changeset
2082 original = g_object_ref(pixbuf);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2083
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2084 new_width = orig_width;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2085 new_height = orig_height;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2086
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2087 /* Make sure the image is the correct dimensions */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2088 if (spec->scale_rules & PURPLE_ICON_SCALE_SEND &&
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2089 (orig_width < spec->min_width || orig_width > spec->max_width ||
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2090 orig_height < spec->min_height || orig_height > spec->max_height))
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2091 {
36625
e6febbd8cbec Renamed purple_buddy_icon_get_scale_size to purple_buddy_icon_spec_get_scaled_size
Ankit Vani <a@nevitus.org>
parents: 36623
diff changeset
2092 purple_buddy_icon_spec_get_scaled_size(spec, &new_width, &new_height);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2093
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2094 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2095 pixbuf = gdk_pixbuf_scale_simple(original, new_width, new_height, GDK_INTERP_HYPER);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2096 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2097
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2098 scale_factor = 1;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2099 do {
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2100 for (i = 0; protocol_formats[i]; i++) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2101 int quality = 100;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2102 do {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2103 const char *key = NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2104 const char *value = NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2105 gchar tmp_buf[4];
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2106
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2107 purple_debug_info("buddyicon", "Converting buddy icon to %s\n", protocol_formats[i]);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2108
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38299 38260
diff changeset
2109 if (purple_strequal(protocol_formats[i], "png")) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2110 key = "compression";
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2111 value = "9";
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38299 38260
diff changeset
2112 } else if (purple_strequal(protocol_formats[i], "jpeg")) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2113 sprintf(tmp_buf, "%u", quality);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2114 key = "quality";
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2115 value = tmp_buf;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2116 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2117
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2118 if (!gdk_pixbuf_save_to_buffer(pixbuf, &contents, &length,
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2119 protocol_formats[i], &error, key, value, NULL))
29927
80855a5471ed Use gdk_pixbuf_save_to_buffer() instead of gdk_pixbuf_save() to avoid saving
Mark Doliner <markdoliner@pidgin.im>
parents: 29898
diff changeset
2120 {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2121 /* The NULL checking of error is necessary due to this bug:
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2122 * http://bugzilla.gnome.org/show_bug.cgi?id=405539 */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2123 purple_debug_warning("buddyicon",
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2124 "Could not convert to %s: %s\n", protocol_formats[i],
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2125 (error && error->message) ? error->message : "Unknown error");
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2126 g_error_free(error);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2127 error = NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2128
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2129 /* We couldn't convert to this image type. Try the next
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2130 image type. */
15645
db8c01fc8637 Work around gdk-pixbuf brokenness when dealing with unrecognized parameters. Also, improve the error handling so we don't get a confusing error message.
Daniel Atallah <datallah@pidgin.im>
parents: 15635
diff changeset
2131 break;
db8c01fc8637 Work around gdk-pixbuf brokenness when dealing with unrecognized parameters. Also, improve the error handling so we don't get a confusing error message.
Daniel Atallah <datallah@pidgin.im>
parents: 15635
diff changeset
2132 }
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2133
30054
82871fde0aac Allow icons to be exactly the max file size
Mark Doliner <markdoliner@pidgin.im>
parents: 30053
diff changeset
2134 if (spec->max_filesize == 0 || length <= spec->max_filesize) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2135 /* We were able to save the image as this image type and
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2136 have it be within the size constraints. Great! Return
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2137 the image. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2138 purple_debug_info("buddyicon", "Converted image from "
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2139 "%dx%d to %dx%d, format=%s, quality=%u, "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2140 "filesize=%" G_GSIZE_FORMAT "\n",
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2141 orig_width, orig_height, new_width, new_height,
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2142 protocol_formats[i], quality, length);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2143 if (len)
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2144 *len = length;
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2145 g_strfreev(protocol_formats);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2146 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2147 g_object_unref(G_OBJECT(original));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2148 return contents;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2149 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2150
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2151 g_free(contents);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2152
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 38299 38260
diff changeset
2153 if (!purple_strequal(protocol_formats[i], "jpeg")) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2154 /* File size was too big and we can't lower the quality,
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2155 so skip to the next image type. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2156 break;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2157 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2158
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2159 /* File size was too big, but we're dealing with jpeg so try
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2160 lowering the quality. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2161 quality -= 5;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2162 } while (quality >= 70);
16446
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2163 }
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2164
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2165 /* We couldn't save the image in any format that was below the max
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2166 file size. Maybe we can reduce the image dimensions? */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2167 scale_factor *= 0.8;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2168 new_width = orig_width * scale_factor;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2169 new_height = orig_height * scale_factor;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2170 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2171 pixbuf = gdk_pixbuf_scale_simple(original, new_width, new_height, GDK_INTERP_HYPER);
30053
223f898b44b2 Oh! When setting a buddy icon, when we reduce the dimension in order to
Mark Doliner <markdoliner@pidgin.im>
parents: 30002
diff changeset
2172 } while ((new_width > 10 || new_height > 10) && new_width > spec->min_width && new_height > spec->min_height);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
2173 g_strfreev(protocol_formats);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2174 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2175 g_object_unref(G_OBJECT(original));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2176
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2177 tmp = g_strdup_printf(_("The file '%s' is too large for %s. Please try a smaller image.\n"),
36607
7ad7681dcfd8 Use purple_protocol_get_* API instead of protocol->member
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
2178 path, purple_protocol_get_name(protocol));
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
2179 purple_notify_error(NULL, _("Icon Error"), _("Could not set icon"), tmp, NULL);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2180 g_free(tmp);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2181
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2182 return NULL;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2183 }
14290
f20819ff8d86 [gaim-migrate @ 16910]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14253
diff changeset
2184
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2185 void pidgin_set_urgent(GtkWindow *window, gboolean urgent)
15403
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2186 {
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
2187 #if defined _WIN32
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15568
diff changeset
2188 winpidgin_window_flash(window, urgent);
20288
5ca925a094e2 applied changes from 03b709ec2a153e7e82719df0ba4635108bb1d3c6
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20241
diff changeset
2189 #else
29497
4502da3fe427 I screwed up the logic here and didn't realize it earlier.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29496
diff changeset
2190 gtk_window_set_urgency_hint(window, urgent);
15403
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2191 #endif
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2192 }
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2193
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2194 static void *
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 22013
diff changeset
2195 pidgin_utils_get_handle(void)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2196 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2197 static int handle;
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2198
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2199 return &handle;
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2200 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2201
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2202 static void connection_signed_off_cb(PurpleConnection *gc)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2203 {
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2204 GSList *list, *l_next;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2205 for (list = minidialogs; list; list = l_next) {
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2206 l_next = list->next;
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2207 if (g_object_get_data(G_OBJECT(list->data), "gc") == gc) {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2208 gtk_widget_destroy(GTK_WIDGET(list->data));
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2209 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2210 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2211 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2212
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2213 static void alert_killed_cb(GtkWidget *widget)
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2214 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2215 minidialogs = g_slist_remove(minidialogs, widget);
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2216 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2217
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2218 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2219 old_mini_dialog_button_clicked_cb(PidginMiniDialog *mini_dialog,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2220 GtkButton *button,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2221 gpointer user_data)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2222 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2223 struct _old_button_clicked_cb_data *data = user_data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2224 data->cb(data->data, button);
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2225 }
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2226
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2227 static void
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2228 old_mini_dialog_destroy_cb(GtkWidget *dialog,
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2229 GList *cb_datas)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2230 {
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2231 while (cb_datas != NULL)
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2232 {
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2233 g_free(cb_datas->data);
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2234 cb_datas = g_list_delete_link(cb_datas, cb_datas);
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2235 }
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2236 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2237
30635
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2238 static void
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2239 mini_dialog_init(PidginMiniDialog *mini_dialog, PurpleConnection *gc, void *user_data, va_list args)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2240 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2241 const char *button_text;
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2242 GList *cb_datas = NULL;
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2243 static gboolean first_call = TRUE;
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2244
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2245 if (first_call) {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2246 first_call = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2247 purple_signal_connect(purple_connections_get_handle(), "signed-off",
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2248 pidgin_utils_get_handle(),
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2249 PURPLE_CALLBACK(connection_signed_off_cb), NULL);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2250 }
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15405
diff changeset
2251
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2252 g_object_set_data(G_OBJECT(mini_dialog), "gc" ,gc);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2253 g_signal_connect(G_OBJECT(mini_dialog), "destroy",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2254 G_CALLBACK(alert_killed_cb), NULL);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15405
diff changeset
2255
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2256 while ((button_text = va_arg(args, char*))) {
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2257 struct _old_button_clicked_cb_data *data = NULL;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2258 PidginMiniDialogCallback wrapper_cb = NULL;
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2259 PidginUtilMiniDialogCallback callback =
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2260 va_arg(args, PidginUtilMiniDialogCallback);
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2261
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2262 if (callback != NULL) {
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2263 data = g_new0(struct _old_button_clicked_cb_data, 1);
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2264 data->cb = callback;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2265 data->data = user_data;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2266 wrapper_cb = old_mini_dialog_button_clicked_cb;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2267 }
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2268 pidgin_mini_dialog_add_button(mini_dialog, button_text,
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2269 wrapper_cb, data);
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2270 cb_datas = g_list_append(cb_datas, data);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2271 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2272
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2273 g_signal_connect(G_OBJECT(mini_dialog), "destroy",
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2274 G_CALLBACK(old_mini_dialog_destroy_cb), cb_datas);
30635
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2275 }
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2276
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2277 #define INIT_AND_RETURN_MINI_DIALOG(mini_dialog) \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2278 va_list args; \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2279 va_start(args, user_data); \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2280 mini_dialog_init(mini_dialog, gc, user_data, args); \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2281 va_end(args); \
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2282 return GTK_WIDGET(mini_dialog);
30635
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2283
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2284 GtkWidget *
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2285 pidgin_make_mini_dialog(PurpleConnection *gc,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2286 const char *icon_name,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2287 const char *primary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2288 const char *secondary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2289 void *user_data,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2290 ...)
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2291 {
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2292 PidginMiniDialog *mini_dialog = pidgin_mini_dialog_new(primary, secondary, icon_name);
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2293 INIT_AND_RETURN_MINI_DIALOG(mini_dialog);
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2294 }
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2295
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2296 GtkWidget *
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2297 pidgin_make_mini_dialog_with_custom_icon(PurpleConnection *gc,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2298 GdkPixbuf *custom_icon,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2299 const char *primary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2300 const char *secondary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2301 void *user_data,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2302 ...)
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2303 {
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2304 PidginMiniDialog *mini_dialog = pidgin_mini_dialog_new_with_custom_icon(primary, secondary, custom_icon);
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2305 INIT_AND_RETURN_MINI_DIALOG(mini_dialog);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2306 }
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2307
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2308 /*
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2309 * "This is so dead sexy."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2310 * "Two thumbs up."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2311 * "Best movie of the year."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2312 *
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2313 * 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
2314 * 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
2315 * entered string.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2316 *
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2317 * 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
2318 * "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
2319 * 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
2320 * 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
2321 * used rarely, so it shouldn't matter TOO much.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2322 */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2323 gboolean pidgin_tree_view_search_equal_func(GtkTreeModel *model, gint column,
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2324 const gchar *key, GtkTreeIter *iter, gpointer data)
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2325 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2326 gchar *enteredstring;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2327 gchar *tmp;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2328 gchar *withmarkup;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2329 gchar *nomarkup;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2330 gchar *normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2331 gboolean result;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2332 size_t i;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2333 size_t len;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2334 PangoLogAttr *log_attrs;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2335 gchar *word;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2336
17155
143ff2796376 Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents: 17116
diff changeset
2337 if (g_ascii_strcasecmp(key, "Global Thermonuclear War") == 0)
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2338 {
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34447
diff changeset
2339 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
2340 "game of chess?", NULL, NULL);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2341 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2342 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2343
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2344 gtk_tree_model_get(model, iter, column, &withmarkup, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2345 if (withmarkup == NULL) /* This is probably a separator */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2346 return TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2347
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2348 tmp = g_utf8_normalize(key, -1, G_NORMALIZE_DEFAULT);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2349 enteredstring = g_utf8_casefold(tmp, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2350 g_free(tmp);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2351
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2352 nomarkup = purple_markup_strip_html(withmarkup);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2353 tmp = g_utf8_normalize(nomarkup, -1, G_NORMALIZE_DEFAULT);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2354 g_free(nomarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2355 normalized = g_utf8_casefold(tmp, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2356 g_free(tmp);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2357
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2358 if (purple_str_has_prefix(normalized, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2359 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2360 g_free(withmarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2361 g_free(enteredstring);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2362 g_free(normalized);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2363 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2364 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2365
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2366
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2367 /* Use Pango to separate by words. */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2368 len = g_utf8_strlen(normalized, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2369 log_attrs = g_new(PangoLogAttr, len + 1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2370
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2371 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
2372
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2373 word = normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2374 result = TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2375 for (i = 0; i < (len - 1) ; i++)
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2376 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2377 if (log_attrs[i].is_word_start &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2378 purple_str_has_prefix(word, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2379 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2380 result = FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2381 break;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2382 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2383 word = g_utf8_next_char(word);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2384 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2385 g_free(log_attrs);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2386
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2387 /* The non-Pango version. */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2388 #if 0
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2389 word = normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2390 result = TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2391 while (word[0] != '\0')
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2392 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2393 gunichar c = g_utf8_get_char(word);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2394 if (!g_unichar_isalnum(c))
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2395 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2396 word = g_utf8_find_next_char(word, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2397 if (purple_str_has_prefix(word, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2398 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2399 result = FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2400 break;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2401 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2402 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2403 else
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2404 word = g_utf8_find_next_char(word, NULL);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2405 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2406 #endif
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2407
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2408 g_free(withmarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2409 g_free(enteredstring);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2410 g_free(normalized);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2411
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2412 return result;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2413 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2414
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2415 const char *pidgin_get_dim_grey_string(GtkWidget *widget) {
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2416 static char dim_grey_string[8] = "";
37996
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2417 GtkStyleContext *context;
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2418 GdkRGBA fg, bg;
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2419
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2420 if (!widget)
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2421 return "dim grey";
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2422
37996
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2423 context = gtk_widget_get_style_context(widget);
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2424 if (!context)
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2425 return "dim grey";
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 25173
diff changeset
2426
37996
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2427 gtk_style_context_get_color(context, gtk_style_context_get_state(context),
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2428 &fg);
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2429 gtk_style_context_get_background_color(context,
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2430 gtk_style_context_get_state(context),
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2431 &bg);
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2432 snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
37996
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2433 (unsigned int)((fg.red + bg.red) * 0.5 * 255),
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2434 (unsigned int)((fg.green + bg.green) * 0.5 * 255),
6c9cb1e8b2d9 Replace GtkStyle with GtkStyleContext.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37990
diff changeset
2435 (unsigned int)((fg.blue + bg.blue) * 0.5 * 255));
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2436 return dim_grey_string;
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2437 }
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2438
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2439 static void
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2440 combo_box_changed_cb(GtkComboBoxText *combo_box, GtkEntry *entry)
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2441 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2442 char *text = gtk_combo_box_text_get_active_text(combo_box);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2443 gtk_entry_set_text(entry, text ? text : "");
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2444 g_free(text);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2445 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2446
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2447 static gboolean
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2448 entry_key_pressed_cb(GtkWidget *entry, GdkEventKey *key, GtkComboBoxText *combo)
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2449 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2450 if (key->keyval == GDK_KEY_Down || key->keyval == GDK_KEY_Up) {
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2451 gtk_combo_box_popup(GTK_COMBO_BOX(combo));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2452 return TRUE;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2453 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2454 return FALSE;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2455 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2456
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2457 GtkWidget *
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2458 pidgin_text_combo_box_entry_new(const char *default_item, GList *items)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2459 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2460 GtkComboBoxText *ret = NULL;
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2461 GtkWidget *the_entry = NULL;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2462
32415
59d345017c9b propagate from branch 'im.pidgin.pidgin' (head 8a277be95a4940cd20c64326a70624c4e0449cb7)
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32414 31398
diff changeset
2463 ret = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new_with_entry());
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
2464 the_entry = gtk_bin_get_child(GTK_BIN(ret));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2465
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2466 if (default_item)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2467 gtk_entry_set_text(GTK_ENTRY(the_entry), default_item);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2468
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2469 for (; items != NULL ; items = items->next) {
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2470 char *text = items->data;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2471 if (text && *text)
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2472 gtk_combo_box_text_append_text(ret, text);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2473 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2474
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2475 g_signal_connect(G_OBJECT(ret), "changed", (GCallback)combo_box_changed_cb, the_entry);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2476 g_signal_connect_after(G_OBJECT(the_entry), "key-press-event", G_CALLBACK(entry_key_pressed_cb), ret);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2477
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2478 return GTK_WIDGET(ret);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2479 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2480
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2481 const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2482 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2483 return gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((widget)))));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2484 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2485
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2486 void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2487 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2488 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((widget)))), (text));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2489 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2490
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2491 GtkWidget *
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2492 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
2493 {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2494 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
2495 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
2496
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2497 if (widget_label) {
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35506
diff changeset
2498 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2499 gtk_widget_show(hbox);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2500 gtk_box_pack_start(vbox, hbox, FALSE, FALSE, 0);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2501
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2502 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
2503 gtk_widget_show(label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2504 if (sg) {
38007
3b971d2ecae1 Simplify gtk_label_set_[xy]align calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37997
diff changeset
2505 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
2506 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
2507 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2508 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2509 } else {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2510 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
2511 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2512
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2513 gtk_widget_show(widget);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2514 gtk_box_pack_start(GTK_BOX(hbox), widget, expand, TRUE, 0);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2515 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
2516 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
35721
abae078d0525 Fix some warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35720
diff changeset
2517 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
2518 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2519
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2520 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
2521 (*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
2522 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
2523 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2524
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
2525 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
2526 {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2527 #if 0
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2528 /* This looks at the most recent window that received focus, and makes
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2529 * 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
2530 #ifndef _WIN32
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2531 static GdkAtom _WindowTime = GDK_NONE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2532 static GdkAtom _Cardinal = GDK_NONE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2533 GList *windows = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2534 GtkWidget *parent = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2535 time_t window_time = 0;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2536
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2537 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
2538
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2539 if (_WindowTime == GDK_NONE) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2540 _WindowTime = gdk_x11_xatom_to_atom(gdk_x11_get_xatom_by_name("_NET_WM_USER_TIME"));
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2541 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2542 if (_Cardinal == GDK_NONE) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2543 _Cardinal = gdk_atom_intern("CARDINAL", 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
2544 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2545
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2546 while (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
2547 GtkWidget *window = windows->data;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2548 guchar *data = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2549 int al = 0;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2550 time_t value;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2551
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2552 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
2553
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2554 if (window == widget ||
32913
af2c726febce Fix all deprecated GTK_WIDGET_* macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32900
diff changeset
2555 !gtk_widget_get_visible(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
2556 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
2557
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2558 if (!gdk_property_get(window->window, _WindowTime, _Cardinal, 0, sizeof(time_t), 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
2559 NULL, NULL, &al, &data))
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2560 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
2561 value = *(time_t *)data;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2562 if (window_time < value) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2563 window_time = value;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2564 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
2565 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2566 g_free(data);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2567 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2568 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
2569 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
2570 if (parent) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2571 if (!gtk_get_current_event() && gtk_window_has_toplevel_focus(GTK_WINDOW(parent))) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2572 /* The window is in focus, and the new window was not triggered by a keypress/click
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2573 * event. So do not set it transient, to avoid focus stealing and all that.
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2574 */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2575 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
2576 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2577 gtk_window_set_transient_for(GTK_WINDOW(widget), GTK_WINDOW(parent));
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2578 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
2579 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2580 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
2581 #endif
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2582 #else
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2583 /* 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
2584 GList *windows = NULL;
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2585 GtkWindow *parent = NULL;
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
2586 GdkEvent *event = gtk_get_current_event();
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2587 GdkWindow *menu = 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
2588 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
2589 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
2590
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
2591 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
2592 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
2593
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
2594 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
2595 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
2596 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
2597 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
2598 }
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
2599 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
2600 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
2601 {
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
2602 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
2603 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
2604 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
2605 }
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
2606
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2607 if (event == NULL)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2608 /* The window was not triggered by a user action. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2609 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
2610
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2611 /* We need to special case events from a popup menu. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2612 if (event->type == GDK_BUTTON_RELEASE) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2613 /* XXX: Neither of the following works:
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2614 menu = event->button.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
2615 menu = gdk_window_get_parent(event->button.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
2616 menu = gdk_window_get_toplevel(event->button.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
2617 */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2618 } else if (event->type == GDK_KEY_PRESS)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2619 menu = event->key.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
2620
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2621 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
2622 while (windows) {
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2623 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
2624 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
2625
34447
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
2626 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
2627 "pidgin-window-is-closing")))
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
2628 {
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
2629 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
2630 break;
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
2631 }
be84e0a7e68d GTK Request: don't loose focus when switching request dialogs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34345
diff changeset
2632
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2633 if (GTK_WIDGET(window) == widget ||
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2634 !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
2635 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
2636 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2637
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2638 if (gtk_window_has_toplevel_focus(window) ||
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2639 (menu && menu == gtk_widget_get_window(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
2640 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
2641 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
2642 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2643 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2644 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
2645 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
2646 if (parent) {
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2647 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
2648 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
2649 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2650 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
2651 #endif
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2652 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2653
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2654 static GObject *pidgin_pixbuf_from_data_helper(const guchar *buf, gsize count, gboolean animated)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2655 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2656 GObject *pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2657 GdkPixbufLoader *loader;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2658 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2659
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2660 loader = gdk_pixbuf_loader_new();
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2661
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2662 if (!gdk_pixbuf_loader_write(loader, buf, count, &error) || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2663 purple_debug_warning("gtkutils", "gdk_pixbuf_loader_write() "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2664 "failed with size=%" G_GSIZE_FORMAT ": %s\n", count,
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2665 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2666 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2667 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2668 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2669 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2670 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2671
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2672 if (!gdk_pixbuf_loader_close(loader, &error) || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2673 purple_debug_warning("gtkutils", "gdk_pixbuf_loader_close() "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2674 "failed for image of size %" G_GSIZE_FORMAT ": %s\n", count,
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2675 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2676 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2677 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2678 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2679 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2680 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2681
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2682 if (animated)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2683 pixbuf = G_OBJECT(gdk_pixbuf_loader_get_animation(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2684 else
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2685 pixbuf = G_OBJECT(gdk_pixbuf_loader_get_pixbuf(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2686 if (!pixbuf) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2687 purple_debug_warning("gtkutils", "%s() returned NULL for image "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2688 "of size %" G_GSIZE_FORMAT "\n",
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2689 animated ? "gdk_pixbuf_loader_get_animation"
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2690 : "gdk_pixbuf_loader_get_pixbuf", count);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2691 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2692 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2693 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2694
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2695 g_object_ref(pixbuf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2696 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2697
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2698 return pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2699 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2700
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2701 GdkPixbuf *pidgin_pixbuf_from_data(const guchar *buf, gsize count)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2702 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2703 return GDK_PIXBUF(pidgin_pixbuf_from_data_helper(buf, count, FALSE));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2704 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2705
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2706 GdkPixbufAnimation *pidgin_pixbuf_anim_from_data(const guchar *buf, gsize count)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2707 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2708 return GDK_PIXBUF_ANIMATION(pidgin_pixbuf_from_data_helper(buf, count, TRUE));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2709 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2710
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
2711 GdkPixbuf *
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
2712 pidgin_pixbuf_from_image(PurpleImage *image)
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2713 {
35812
48c6ee645ca1 Imgstore vs PurpleImage: rip and fix
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35742
diff changeset
2714 return pidgin_pixbuf_from_data(purple_image_get_data(image),
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 38007
diff changeset
2715 purple_image_get_data_size(image));
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2716 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2717
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2718 GdkPixbuf *pidgin_pixbuf_new_from_file(const gchar *filename)
22897
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
2719 {
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
2720 GdkPixbuf *pixbuf;
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2721 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2722
36035
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2723 g_return_val_if_fail(filename != NULL, NULL);
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2724 g_return_val_if_fail(filename[0] != '\0', NULL);
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2725
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2726 pixbuf = gdk_pixbuf_new_from_file(filename, &error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2727 if (!pixbuf || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2728 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2729 "returned %s for file %s: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2730 pixbuf ? "something" : "nothing",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2731 filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2732 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2733 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2734 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2735 if (pixbuf)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2736 g_object_unref(G_OBJECT(pixbuf));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2737 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2738 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2739
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2740 return pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2741 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2742
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2743 GdkPixbuf *pidgin_pixbuf_new_from_file_at_size(const char *filename, int width, int height)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2744 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2745 GdkPixbuf *pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2746 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2747
36035
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2748 g_return_val_if_fail(filename != NULL, NULL);
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2749 g_return_val_if_fail(filename[0] != '\0', NULL);
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2750
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2751 pixbuf = gdk_pixbuf_new_from_file_at_size(filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2752 width, height, &error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2753 if (!pixbuf || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2754 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file_at_size() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2755 "returned %s for file %s: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2756 pixbuf ? "something" : "nothing",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2757 filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2758 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2759 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2760 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2761 if (pixbuf)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2762 g_object_unref(G_OBJECT(pixbuf));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2763 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2764 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2765
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2766 return pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2767 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2768
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2769 GdkPixbuf *pidgin_pixbuf_new_from_file_at_scale(const char *filename, int width, int height, gboolean preserve_aspect_ratio)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2770 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2771 GdkPixbuf *pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2772 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2773
36035
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2774 g_return_val_if_fail(filename != NULL, NULL);
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2775 g_return_val_if_fail(filename[0] != '\0', NULL);
75cbabcd0a4d Check parameters for pidgin_pixbuf_new_from_file* functions
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35989
diff changeset
2776
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2777 pixbuf = gdk_pixbuf_new_from_file_at_scale(filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2778 width, height, preserve_aspect_ratio, &error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2779 if (!pixbuf || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2780 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file_at_scale() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2781 "returned %s for file %s: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2782 pixbuf ? "something" : "nothing",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2783 filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2784 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2785 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2786 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2787 if (pixbuf)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2788 g_object_unref(G_OBJECT(pixbuf));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2789 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2790 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2791
22897
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
2792 return pixbuf;
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
2793 }
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
2794
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2795 GdkPixbuf *
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2796 pidgin_pixbuf_scale_down(GdkPixbuf *src, guint max_width, guint max_height,
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2797 GdkInterpType interp_type, gboolean preserve_ratio)
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2798 {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2799 guint cur_w, cur_h;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2800 GdkPixbuf *dst;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2801
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2802 g_return_val_if_fail(src != NULL, NULL);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2803
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2804 if (max_width == 0 || max_height == 0) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2805 g_object_unref(src);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2806 g_return_val_if_reached(NULL);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2807 }
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2808
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2809 cur_w = gdk_pixbuf_get_width(src);
35742
3585fead43a8 Smiley toolbar: cache thumbnails
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35735
diff changeset
2810 cur_h = gdk_pixbuf_get_height(src);
35735
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2811
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2812 if (cur_w <= max_width && cur_h <= max_height)
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2813 return src;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2814
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2815 /* cur_ratio = cur_w / cur_h
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2816 * max_ratio = max_w / max_h
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2817 */
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2818
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2819 if (!preserve_ratio) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2820 cur_w = MIN(cur_w, max_width);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2821 cur_h = MIN(cur_h, max_height);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2822 } else if ((guint64)cur_w * max_height > (guint64)max_width * cur_h) {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2823 /* cur_w / cur_h > max_width / max_height */
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2824 cur_h = (guint64)max_width * cur_h / cur_w;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2825 cur_w = max_width;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2826 } else {
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2827 cur_w = (guint64)max_height * cur_w / cur_h;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2828 cur_h = max_height;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2829 }
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2830
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2831 if (cur_w <= 0)
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2832 cur_w = 1;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2833 if (cur_h <= 0)
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2834 cur_h = 1;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2835
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2836 dst = gdk_pixbuf_scale_simple(src, cur_w, cur_h, interp_type);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2837 g_object_unref(src);
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2838
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2839 return dst;
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2840 }
39ba84113a68 Smiley manager: fill TODOs, do some polishing
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35721
diff changeset
2841
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2842 GtkWidget *
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2843 pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height)
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2844 {
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2845 GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2846
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2847 if (G_LIKELY(sw)) {
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2848 gtk_widget_show(sw);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2849 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), hscrollbar_policy, vscrollbar_policy);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2850 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), shadow_type);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2851 if (width != -1 || height != -1)
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2852 gtk_widget_set_size_request(sw, width, height);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2853 if (child) {
35541
12bd3807140b Fix some GTK 3.8 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35533
diff changeset
2854 gtk_container_add(GTK_CONTAINER(sw), child);
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2855 }
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2856 return sw;
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2857 }
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2858
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2859 return child;
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2860 }
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 31217
diff changeset
2861

mercurial