pidgin/pidgininvitedialog.c

Thu, 23 Mar 2023 23:11:59 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 23 Mar 2023 23:11:59 -0500
changeset 42184
4e1bf25f5575
parent 41724
ad9cf22b657b
child 42575
580339aa47cc
permissions
-rw-r--r--

Fix several leaks in tests

All of these are specific to tests, not the library code.

For the moment, `protocol_xfer` still leaks connections (and anything they hold on to) because it is very difficult to disentangle them from the connection manager in the partially implemented state they are in.

This fixes leaks of options in the account option test (these two leaks occur for every test since they all leak the option):
```
61 (48 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 133 of 276
at 0x4848464: calloc (vg_replace_malloc.c:1340)
by 0x49F75F0: g_malloc0 (gmem.c:163)
by 0x48C3B2E: purple_account_option_new (purpleaccountoption.c:78)
by 0x4014AF: test_purple_account_option_copy_int (test_account_option.c:67)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401721: main (test_account_option.c:157)

61 (48 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 134 of 276
at 0x4848464: calloc (vg_replace_malloc.c:1340)
by 0x49F75F0: g_malloc0 (gmem.c:163)
by 0x48C3BC7: purple_account_option_copy (purpleaccountoption.c:93)
by 0x4014BF: test_purple_account_option_copy_int (test_account_option.c:68)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401721: main (test_account_option.c:157)
```
leaks in the credential manager test (times 3 for read/write/cancel tests):
```
69 (16 direct, 53 indirect) bytes in 1 blocks are definitely lost in loss record 2,427 of 3,503
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x4A58168: g_malloc (gmem.c:130)
by 0x4A6FAB5: g_slice_alloc (gslice.c:1074)
by 0x4A700EC: g_slice_alloc0 (gslice.c:1100)
by 0x4A3BECB: g_error_allocate (gerror.c:710)
by 0x4A3C93F: UnknownInlinedFun (gerror.c:724)
by 0x4A3C93F: g_error_new_valist (gerror.c:766)
by 0x4BEE558: g_task_return_new_error (gtask.c:1941)
by 0x48D82C0: purple_credential_manager_read_password_async (purplecredentialmanager.c:492)
by 0x403634: test_purple_credential_manager_no_provider_read_password_idle (test_credential_manager.c:329)
by 0x4A4ECB1: g_idle_dispatch (gmain.c:6124)
by 0x4A4FCBE: UnknownInlinedFun (gmain.c:3444)
by 0x4A4FCBE: g_main_context_dispatch (gmain.c:4162)
by 0x4AA5597: g_main_context_iterate.constprop.0 (gmain.c:4238)
by 0x4A4F28E: g_main_loop_run (gmain.c:4438)
by 0x40369F: test_purple_credential_manager_no_provider_read_password_async (test_credential_manager.c:345)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x4048F6: main (test_credential_manager.c:695)
```
a leak in the image test:
```
161 bytes in 1 blocks are definitely lost in loss record 260 of 274
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x4A55363: g_try_malloc (gmem.c:286)
by 0x4A3D630: UnknownInlinedFun (gfileutils.c:819)
by 0x4A3D630: UnknownInlinedFun (gfileutils.c:924)
by 0x4A3D630: g_file_get_contents (gfileutils.c:1027)
by 0x401890: test_image_new_from_file (test_image.c:144)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x40195D: main (test_image.c:172)
```
a leak in queued output stream test:
```
72 (40 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record 219 of 396
at 0x49D51EF: g_type_create_instance (gtype.c:1909)
by 0x49BAC1F: g_object_new_internal (gobject.c:2228)
by 0x49BC247: g_object_new_with_properties (gobject.c:2391)
by 0x49BCFF0: g_object_new (gobject.c:2037)
by 0x402003: test_queued_output_stream_push_bytes_async_error (test_queued_output_stream.c:219)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x402429: main (test_queued_output_stream.c:280)
```
and protocol xfer tests (times 3 for each test that creates a test protocol object):
```
112 (48 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 3,430 of 3,698
at 0x49D51EF: g_type_create_instance (gtype.c:1909)
by 0x49BAC1F: g_object_new_internal (gobject.c:2228)
by 0x49BC247: g_object_new_with_properties (gobject.c:2391)
by 0x49BCFF0: g_object_new (gobject.c:2037)
by 0x40291C: test_purple_protocol_xfer_send_file_func (test_protocol_xfer.c:146)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x402B64: main (test_protocol_xfer.c:195)
```
and util tests (times 3 for each call to `purple_text_strip_mnemonic` in the test):
```
5 bytes in 1 blocks are definitely lost in loss record 5 of 247
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x49F7168: g_malloc (gmem.c:130)
by 0x491975B: purple_text_strip_mnemonic (util.c:895)
by 0x4015B0: test_util_text_strip_mnemonic (test_util.c:49)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401901: main (test_util.c:224)
```
and these leaks in any test that initializes the test UI:
```
4,104 bytes in 1 blocks are possibly lost in loss record 3,451 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5249A8B: UnknownInlinedFun (sqlite3.c:53675)
by 0x5249A8B: allocateTempSpace (sqlite3.c:70848)
by 0x52625A6: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:93857)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x529B324: sqlite3_exec (sqlite3.c:131002)
by 0x48FD558: purple_sqlite3_run_migration (purplesqlite3.c:37)
by 0x48FDBB4: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:195)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)

4,368 bytes in 1 blocks are possibly lost in loss record 3,453 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5240077: UnknownInlinedFun (sqlite3.c:53634)
by 0x5240077: pcache1FetchStage2 (sqlite3.c:54104)
by 0x5243E9C: UnknownInlinedFun (sqlite3.c:52671)
by 0x5243E9C: getPageNormal.lto_priv.0 (sqlite3.c:60628)
by 0x524A510: UnknownInlinedFun (sqlite3.c:60805)
by 0x524A510: btreeGetPage.lto_priv.0 (sqlite3.c:70289)
by 0x524C2F6: UnknownInlinedFun (sqlite3.c:71257)
by 0x524C2F6: sqlite3BtreeBeginTrans.lto_priv.0 (sqlite3.c:71647)
by 0x5266B3A: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:93532)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x48FD715: purple_sqlite3_get_schema_version (purplesqlite3.c:79)
by 0x48FD9DD: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:146)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)

4,368 bytes in 1 blocks are possibly lost in loss record 3,454 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5240077: UnknownInlinedFun (sqlite3.c:53634)
by 0x5240077: pcache1FetchStage2 (sqlite3.c:54104)
by 0x5243E9C: UnknownInlinedFun (sqlite3.c:52671)
by 0x5243E9C: getPageNormal.lto_priv.0 (sqlite3.c:60628)
by 0x52499BC: UnknownInlinedFun (sqlite3.c:60805)
by 0x52499BC: UnknownInlinedFun (sqlite3.c:70289)
by 0x52499BC: btreeGetUnusedPage (sqlite3.c:70432)
by 0x524F504: allocateBtreePage.lto_priv.0 (sqlite3.c:74604)
by 0x5256209: btreeCreateTable.lto_priv.0 (sqlite3.c:77830)
by 0x5265EB2: UnknownInlinedFun (sqlite3.c:77849)
by 0x5265EB2: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:96382)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x529B324: sqlite3_exec (sqlite3.c:131002)
by 0x48FD558: purple_sqlite3_run_migration (purplesqlite3.c:37)
by 0x48FDBB4: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:195)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)
```

Testing Done:
Ran tests in valgrind, and all above leaks were gone except for noted `protocol_xfer` issues, and a bunch of leaks of the `PurpleBuddy`-`PurpleContact` compatibility bindings, which will go away in their entirety eventually.

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

39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /* Purple is the legal property of its developers, whose names are too numerous
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * to list here. Please refer to the COPYRIGHT file distributed with this
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * source distribution.
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or modify
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * it under the terms of the GNU General Public License as published by
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * the Free Software Foundation; either version 2 of the License, or
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * (at your option) any later version.
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * GNU General Public License for more details.
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * along with this program; if not, write to the Free Software
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 */
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 #include "pidgininvitedialog.h"
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 struct _PidginInviteDialog {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 GtkDialog parent;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
25 GtkWidget *contact;
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
26 GtkWidget *message;
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
27
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
28 PurpleChatConversation *conversation;
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
29 };
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 enum {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 PROP_ZERO,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 PROP_CONTACT,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 PROP_MESSAGE,
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
35 PROP_CONVERSATION,
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 N_PROPERTIES,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 };
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38
39585
8a19d82a81f8 Unref the conversation we were created with and fix and initalizer
Gary Kramlich <grim@reaperworld.com>
parents: 39579
diff changeset
39 static GParamSpec *properties[N_PROPERTIES] = {0, };
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
41 G_DEFINE_TYPE(PidginInviteDialog, pidgin_invite_dialog, GTK_TYPE_DIALOG);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 /******************************************************************************
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
44 * Helpers
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
45 *****************************************************************************/
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
46 static void
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
47 pidgin_invite_dialog_set_conversation(PidginInviteDialog *dialog,
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
48 PurpleChatConversation *conversation)
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
49 {
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
50 g_return_if_fail(PIDGIN_IS_INVITE_DIALOG(dialog));
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
51
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
52 dialog->conversation = g_object_ref(conversation);
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
53
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
54 g_object_notify_by_pspec(G_OBJECT(dialog), properties[PROP_CONVERSATION]);
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
55 }
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
56
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
57 /******************************************************************************
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 * GObject Stuff
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 *****************************************************************************/
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 static void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 pidgin_invite_dialog_get_property(GObject *obj,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 guint param_id,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 GValue *value,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 GParamSpec *pspec)
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 PidginInviteDialog *dialog = PIDGIN_INVITE_DIALOG(obj);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 switch(param_id) {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 case PROP_CONTACT:
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 g_value_set_string(value,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 pidgin_invite_dialog_get_contact(dialog));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 break;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 case PROP_MESSAGE:
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 g_value_set_string(value,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 pidgin_invite_dialog_get_message(dialog));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 break;
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
77 case PROP_CONVERSATION:
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
78 g_value_set_object(value,
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
79 pidgin_invite_dialog_get_conversation(dialog));
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
80 break;
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 default:
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 break;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 static void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 pidgin_invite_dialog_set_property(GObject *obj,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 guint param_id,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 const GValue *value,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 GParamSpec *pspec)
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 PidginInviteDialog *dialog = PIDGIN_INVITE_DIALOG(obj);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 switch(param_id) {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 case PROP_CONTACT:
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 pidgin_invite_dialog_set_contact(dialog,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 g_value_get_string(value));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 break;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 case PROP_MESSAGE:
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 pidgin_invite_dialog_set_message(dialog,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 g_value_get_string(value));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 break;
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
104 case PROP_CONVERSATION:
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
105 pidgin_invite_dialog_set_conversation(dialog,
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
106 g_value_get_object(value));
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
107 break;
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 default:
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 break;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 static void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 pidgin_invite_dialog_finalize(GObject *obj) {
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
116 PidginInviteDialog *dialog = PIDGIN_INVITE_DIALOG(obj);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
118 g_clear_pointer(&dialog->contact, g_free);
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
119 g_clear_pointer(&dialog->message, g_free);
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
120 g_clear_object(&dialog->conversation);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 G_OBJECT_CLASS(pidgin_invite_dialog_parent_class)->finalize(obj);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 static void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 pidgin_invite_dialog_init(PidginInviteDialog *dialog) {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 gtk_widget_init_template(GTK_WIDGET(dialog));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 static void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 pidgin_invite_dialog_class_init(PidginInviteDialogClass *klass) {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 obj_class->get_property = pidgin_invite_dialog_get_property;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 obj_class->set_property = pidgin_invite_dialog_set_property;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 obj_class->finalize = pidgin_invite_dialog_finalize;
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 gtk_widget_class_set_template_from_resource(
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 widget_class,
41030
ec8b76f3bf0a Fix the resource path so we can use the automatic stuff that GtkApplication supports
Gary Kramlich <grim@reaperworld.com>
parents: 39585
diff changeset
141 "/im/pidgin/Pidgin3/Conversations/invite_dialog.ui"
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 );
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
144 gtk_widget_class_bind_template_child(widget_class, PidginInviteDialog,
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
145 contact);
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
146 gtk_widget_class_bind_template_child(widget_class, PidginInviteDialog,
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
147 message);
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
148
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 properties[PROP_CONTACT] = g_param_spec_string(
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 "contact",
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 "contact",
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 "The person that is being invited",
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 NULL,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 properties[PROP_MESSAGE] = g_param_spec_string(
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 "message",
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 "message",
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 "The invite message to send",
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 NULL,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
163 properties[PROP_CONVERSATION] = g_param_spec_object(
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
164 "conversation",
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
165 "conversation",
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
166 "The conversation that someone is being invited to",
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
167 PURPLE_TYPE_CHAT_CONVERSATION,
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
168 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
169
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 /******************************************************************************
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 * Public API
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 *****************************************************************************/
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
176 GtkWidget *
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
177 pidgin_invite_dialog_new(PurpleChatConversation *conversation) {
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
178 return GTK_WIDGET(g_object_new(
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
179 PIDGIN_TYPE_INVITE_DIALOG,
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
180 "conversation", conversation,
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
181 NULL));
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
182 }
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
183
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 const gchar *
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 pidgin_invite_dialog_get_contact(PidginInviteDialog *dialog) {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 g_return_val_if_fail(PIDGIN_IS_INVITE_DIALOG(dialog), NULL);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
188 return gtk_editable_get_text(GTK_EDITABLE(dialog->contact));
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 pidgin_invite_dialog_set_contact(PidginInviteDialog *dialog,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 const gchar *contact)
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 g_return_if_fail(PIDGIN_IS_INVITE_DIALOG(dialog));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
197 if(contact != NULL) {
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
198 gtk_editable_set_text(GTK_EDITABLE(dialog->contact), contact);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
200 g_object_notify_by_pspec(G_OBJECT(dialog), properties[PROP_CONTACT]);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 const gchar *
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 pidgin_invite_dialog_get_message(PidginInviteDialog *dialog) {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 g_return_val_if_fail(PIDGIN_IS_INVITE_DIALOG(dialog), NULL);
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
208 return gtk_editable_get_text(GTK_EDITABLE(dialog->message));
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 void
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 pidgin_invite_dialog_set_message(PidginInviteDialog *dialog,
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 const gchar *message)
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 {
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 g_return_if_fail(PIDGIN_IS_INVITE_DIALOG(dialog));
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
217 if(message != NULL) {
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
218 gtk_editable_set_text(GTK_EDITABLE(dialog->message), message);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219
39577
0dd1d673bbef Invite dialog fully functional, with dnd removed
Gary Kramlich <grim@reaperworld.com>
parents: 39576
diff changeset
220 g_object_notify_by_pspec(G_OBJECT(dialog), properties[PROP_MESSAGE]);
39576
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 }
9da340b66f6d Start of the new invite widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
224 PurpleChatConversation *
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
225 pidgin_invite_dialog_get_conversation(PidginInviteDialog *dialog) {
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
226 g_return_val_if_fail(PIDGIN_IS_INVITE_DIALOG(dialog), NULL);
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
227
41724
ad9cf22b657b De-privatize PidginInviteDialog
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41531
diff changeset
228 return dialog->conversation;
39579
34e0b0e7df81 Finish up the invite dialog with contact completion and documentation for all.
Gary Kramlich <grim@reaperworld.com>
parents: 39577
diff changeset
229 }

mercurial