pidgin/pidginmessage.c

Fri, 28 Mar 2025 00:32:48 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 28 Mar 2025 00:32:48 -0500
changeset 43208
b81c104ccbe0
parent 43197
5b7b4ef9b53f
child 43210
ecd09bf0c746
permissions
-rw-r--r--

Fix an alignment issue with the conversation 3 vertical dots menu

If a conversation had notifications and you selected or hovered over it, the
notifications would hide, but the 3 vertical dots menu would be positioned
like the notifications were still visible.

Testing Done:
Joined a bunch of channels and waited for notifications to popup and then verified that the 3 vertical dots menu was in the correct place.

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

43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "pidginmessage.h"
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 struct _PidginMessage {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 GtkBox parent;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 PurpleMessage *message;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 };
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 enum {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 PROP_0,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 PROP_MESSAGE,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 N_PROPERTIES,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 };
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 /******************************************************************************
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 * Helpers
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 *****************************************************************************/
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 /**
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 * pidgin_message_set_tooltip_for_timestamp: (skip)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 * @tooltip: The tooltip to update.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 * @timestamp: The timestamp to set.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 * Updates @tooltip to display @timestamp. This is meant to be called from
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 * a GtkWidget::query-tooltip signal and its return value should be returned
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 * from that handler.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 * Returns: %TRUE if a tooltip was set, otherwise %FALSE.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 * Since: 3.0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 static gboolean
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 pidgin_message_set_tooltip_for_timestamp(GtkTooltip *tooltip,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 GDateTime *timestamp)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 GDateTime *local = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 char *text = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 if(timestamp == NULL) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 return FALSE;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 local = g_date_time_to_local(timestamp);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 text = g_date_time_format(local, "%c");
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 g_clear_pointer(&local, g_date_time_unref);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 gtk_tooltip_set_text(tooltip, text);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 g_clear_pointer(&text, g_free);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 return TRUE;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 /******************************************************************************
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 * Callbacks
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 *****************************************************************************/
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 static PangoAttrList *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 pidgin_message_get_message_attributes(G_GNUC_UNUSED GObject *self,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 PurpleMessage *message,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 G_GNUC_UNUSED gpointer data)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 PangoAttrList *attrs = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 if(!PURPLE_IS_MESSAGE(message)) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 return NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 attrs = pango_attr_list_new();
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 if(purple_message_get_action(message)) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 PangoAttribute *attr = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 attr = pango_attr_style_new(PANGO_STYLE_ITALIC);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 pango_attr_list_insert(attrs, attr);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99
43197
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
100 if(purple_message_get_event(message)) {
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
101 PangoAttribute *attr = NULL;
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
102
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
103 attr = pango_attr_style_new(PANGO_STYLE_ITALIC);
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
104 pango_attr_list_insert(attrs, attr);
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
105
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
106 attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
107 pango_attr_list_insert(attrs, attr);
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
108 }
5b7b4ef9b53f Make the contents of event messages bold and italic
Gary Kramlich <grim@reaperworld.com>
parents: 43163
diff changeset
109
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 return attrs;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 static char *
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
114 pidgin_message_get_timestamp_string(G_GNUC_UNUSED GObject *self,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
115 PurpleMessage *message,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
116 G_GNUC_UNUSED gpointer data)
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
117 {
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
118 GDateTime *timestamp = NULL;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
119
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
120 if(!PURPLE_IS_MESSAGE(message)) {
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
121 return NULL;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
122 }
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
123
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
124 timestamp = purple_message_get_timestamp(message);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
125 if(timestamp != NULL) {
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
126 GDateTime *local = NULL;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
127 char *ret = NULL;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
128
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
129 local = g_date_time_to_local(timestamp);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
130 ret = g_date_time_format(local, "%I:%M %p");
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
131 g_date_time_unref(local);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
132
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
133 return ret;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
134 }
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
135
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
136 return NULL;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
137 }
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
138
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
139 static char *
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 pidgin_message_process_message_contents_cb(G_GNUC_UNUSED GObject *self,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 const char *contents,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 G_GNUC_UNUSED gpointer data)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 char *escaped = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 char *linkified = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 escaped = g_markup_escape_text(contents, -1);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 linkified = purple_markup_linkify(escaped);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 g_free(escaped);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 return linkified;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 static gboolean
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
155 pidgin_message_query_tooltip_contents_cb(GtkWidget *self,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
156 G_GNUC_UNUSED gint x,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
157 G_GNUC_UNUSED gint y,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
158 G_GNUC_UNUSED gboolean keyboard_mode,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
159 GtkTooltip *tooltip,
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
160 G_GNUC_UNUSED gpointer data)
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
161 {
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
162 const char *uri = NULL;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
163
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
164 uri = gtk_label_get_current_uri(GTK_LABEL(self));
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
165 if(purple_strempty(uri)) {
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
166 return FALSE;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
167 }
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
168
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
169 gtk_tooltip_set_text(tooltip, uri);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
170
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
171 return TRUE;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
172 }
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
173
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
174 static gboolean
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 pidgin_message_query_tooltip_edited_cb(G_GNUC_UNUSED GtkWidget *self,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 G_GNUC_UNUSED gint x,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 G_GNUC_UNUSED gint y,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 G_GNUC_UNUSED gboolean keyboard_mode,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 GtkTooltip *tooltip,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 gpointer data)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 {
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
182 PidginMessage *pidgin_message = data;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
183 PurpleMessage *purple_message = NULL;
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 GDateTime *timestamp = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
186 if(!PIDGIN_IS_MESSAGE(pidgin_message)) {
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 return FALSE;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
190 purple_message = pidgin_message_get_message(pidgin_message);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
191 if(!PURPLE_IS_MESSAGE(purple_message)) {
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
192 return FALSE;
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
193 }
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
194
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
195 timestamp = purple_message_get_edited_at(purple_message);
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 return pidgin_message_set_tooltip_for_timestamp(tooltip, timestamp);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 static gboolean
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 pidgin_message_query_tooltip_timestamp_cb(G_GNUC_UNUSED GtkWidget *self,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 G_GNUC_UNUSED gint x,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 G_GNUC_UNUSED gint y,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 G_GNUC_UNUSED gboolean keyboard_mode,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 GtkTooltip *tooltip,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 gpointer data)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 PidginMessage *message = data;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 GDateTime *timestamp = NULL;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 if(!PURPLE_IS_MESSAGE(message->message)) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 return FALSE;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 timestamp = purple_message_get_timestamp(message->message);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 return pidgin_message_set_tooltip_for_timestamp(tooltip, timestamp);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 /******************************************************************************
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 * GObject Implementation
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 *****************************************************************************/
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 G_DEFINE_FINAL_TYPE(PidginMessage, pidgin_message, GTK_TYPE_BOX)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 static void
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 pidgin_message_finalize(GObject *obj) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 PidginMessage *message = PIDGIN_MESSAGE(obj);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 g_clear_object(&message->message);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 G_OBJECT_CLASS(pidgin_message_parent_class)->finalize(obj);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 static void
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 pidgin_message_get_property(GObject *obj, guint param_id, GValue *value,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 GParamSpec *pspec)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 PidginMessage *message = PIDGIN_MESSAGE(obj);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 switch(param_id) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 case PROP_MESSAGE:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 g_value_set_object(value, pidgin_message_get_message(message));
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 break;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 default:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247 break;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 static void
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 pidgin_message_set_property(GObject *obj, guint param_id, const GValue *value,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 GParamSpec *pspec)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 PidginMessage *message = PIDGIN_MESSAGE(obj);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 switch(param_id) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 case PROP_MESSAGE:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 pidgin_message_set_message(message, g_value_get_object(value));
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 break;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 default:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 break;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 static void
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 pidgin_message_init(PidginMessage *message) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 gtk_widget_init_template(GTK_WIDGET(message));
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 static void
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 pidgin_message_class_init(PidginMessageClass *klass) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 obj_class->finalize = pidgin_message_finalize;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 obj_class->get_property = pidgin_message_get_property;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 obj_class->set_property = pidgin_message_set_property;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 /**
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 * PidginMessage:message:
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 * The [class@Purple.Message] to be displayed.
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 * Since: 3.0
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 */
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 properties[PROP_MESSAGE] = g_param_spec_object(
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 "message", NULL, NULL,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 PURPLE_TYPE_MESSAGE,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 gtk_widget_class_set_template_from_resource(
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 widget_class,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297 "/im/pidgin/Pidgin3/Conversations/message.ui"
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298 );
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300 gtk_widget_class_bind_template_callback(widget_class,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 pidgin_message_get_message_attributes);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302 gtk_widget_class_bind_template_callback(widget_class,
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
303 pidgin_message_get_timestamp_string);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
304 gtk_widget_class_bind_template_callback(widget_class,
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305 pidgin_message_process_message_contents_cb);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 gtk_widget_class_bind_template_callback(widget_class,
43094
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
307 pidgin_message_query_tooltip_contents_cb);
4ff60371673f A few updates for Pidgin.Message
Gary Kramlich <grim@reaperworld.com>
parents: 43093
diff changeset
308 gtk_widget_class_bind_template_callback(widget_class,
43093
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 pidgin_message_query_tooltip_edited_cb);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 gtk_widget_class_bind_template_callback(widget_class,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 pidgin_message_query_tooltip_timestamp_cb);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 /******************************************************************************
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 * Public API
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 *****************************************************************************/
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 GtkWidget *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 pidgin_message_new(PurpleMessage *message) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 return g_object_new(
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320 PIDGIN_TYPE_MESSAGE,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
321 "message", message,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
322 NULL);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 PurpleMessage *
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 pidgin_message_get_message(PidginMessage *message) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 g_return_val_if_fail(PIDGIN_IS_MESSAGE(message), NULL);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329 return message->message;
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332 void
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
333 pidgin_message_set_message(PidginMessage *pidgin_message,
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
334 PurpleMessage *purple_message)
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335 {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 g_return_if_fail(PIDGIN_IS_MESSAGE(pidgin_message));
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338 if(g_set_object(&pidgin_message->message, purple_message)) {
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 g_object_notify_by_pspec(G_OBJECT(pidgin_message),
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340 properties[PROP_MESSAGE]);
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341 }
27f816a512af Add a PidginMessage widget
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342 }

mercurial