libpurple/protocols/silc/wb.c

changeset 21453
a90cf329cd48
parent 21233
e75de8db4f2b
parent 20289
5c844288fbec
child 21630
591a79c1b295
equal deleted inserted replaced
21273:2f91b326b3f0 21453:a90cf329cd48
252 silc_free(req); 252 silc_free(req);
253 } 253 }
254 254
255 static void 255 static void
256 silcpurple_wb_request(SilcClient client, const unsigned char *message, 256 silcpurple_wb_request(SilcClient client, const unsigned char *message,
257 SilcUInt32 message_len, SilcClientEntry sender, 257 SilcUInt32 message_len, SilcClientEntry sender,
258 SilcChannelEntry channel) 258 SilcChannelEntry channel)
259 { 259 {
260 char tmp[128]; 260 char tmp[256];
261 SilcPurpleWbRequest req; 261 SilcPurpleWbRequest req;
262 PurpleConnection *gc; 262 PurpleConnection *gc;
263 SilcPurple sg; 263 SilcPurple sg;
264 264
265 gc = client->application; 265 gc = client->application;
272 if (!channel) 272 if (!channel)
273 wb = silcpurple_wb_init(sg, sender); 273 wb = silcpurple_wb_init(sg, sender);
274 else 274 else
275 wb = silcpurple_wb_init_ch(sg, channel); 275 wb = silcpurple_wb_init_ch(sg, channel);
276 276
277 silcpurple_wb_parse(wb->proto_data, wb, (unsigned char *)message, 277 silcpurple_wb_parse(wb->proto_data, wb,
278 message_len); 278 (unsigned char *)message,
279 return; 279 message_len);
280 } 280 return;
281 }
282
283 /* Close any previous unaccepted requests */
284 purple_request_close_with_handle(sender);
281 285
282 if (!channel) { 286 if (!channel) {
283 g_snprintf(tmp, sizeof(tmp), 287 g_snprintf(tmp, sizeof(tmp),
284 _("%s sent message to whiteboard. Would you like " 288 _("%s sent message to whiteboard. Would you like "
285 "to open the whiteboard?"), sender->nickname); 289 "to open the whiteboard?"), sender->nickname);
286 } else { 290 } else {
287 g_snprintf(tmp, sizeof(tmp), 291 g_snprintf(tmp, sizeof(tmp),
288 _("%s sent message to whiteboard on %s channel. " 292 _("%s sent message to whiteboard on %s channel. "
289 "Would you like to open the whiteboard?"), 293 "Would you like to open the whiteboard?"),
290 sender->nickname, channel->channel_name); 294 sender->nickname, channel->channel_name);
291 } 295 }
292 296
293 req = silc_calloc(1, sizeof(*req)); 297 req = silc_calloc(1, sizeof(*req));
294 if (!req) 298 if (!req)
295 return; 299 return;
297 req->message_len = message_len; 301 req->message_len = message_len;
298 req->sender = sender; 302 req->sender = sender;
299 req->channel = channel; 303 req->channel = channel;
300 req->sg = sg; 304 req->sg = sg;
301 305
302 purple_request_action_with_hint(gc, _("Whiteboard"), tmp, NULL, 1, 306 purple_request_action_with_hint(sender, _("Whiteboard"), tmp, NULL, 1,
303 sg->account, sender->nickname, NULL, PURPLE_REQUEST_UI_HINT_BLIST, req, 2, 307 sg->account, sender->nickname, NULL, PURPLE_REQUEST_UI_HINT_BLIST, req, 2,
304 _("Yes"), G_CALLBACK(silcpurple_wb_request_cb), 308 _("Yes"), G_CALLBACK(silcpurple_wb_request_cb),
305 _("No"), G_CALLBACK(silcpurple_wb_request_cb)); 309 _("No"), G_CALLBACK(silcpurple_wb_request_cb));
306 } 310 }
307 311

mercurial