pidgin/gtkblist.c

changeset 16357
c23b4d440efd
parent 16284
61997f73d9fd
child 16437
7ff7c3405ea2
child 16490
68c22924d66b
child 20490
fe7c40b04dac
equal deleted inserted replaced
16354:80b59a58eb47 16357:c23b4d440efd
310 static void gtk_blist_menu_join_cb(GtkWidget *w, PurpleChat *chat) 310 static void gtk_blist_menu_join_cb(GtkWidget *w, PurpleChat *chat)
311 { 311 {
312 gtk_blist_join_chat(chat); 312 gtk_blist_join_chat(chat);
313 } 313 }
314 314
315 static void gtk_blist_renderer_editing_started_cb(GtkCellRenderer *renderer,
316 GtkCellEditable *editable,
317 gchar *path_str,
318 gpointer user_data)
319 {
320 GtkTreeIter iter;
321 GtkTreePath *path = NULL;
322 GValue val;
323 PurpleBlistNode *node;
324 const char *text = NULL;
325 char *esc;
326
327 path = gtk_tree_path_new_from_string (path_str);
328 gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
329 gtk_tree_path_free (path);
330 val.g_type = 0;
331 gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
332 node = g_value_get_pointer(&val);
333
334 switch (node->type) {
335 case PURPLE_BLIST_CONTACT_NODE:
336 text = purple_contact_get_alias((PurpleContact *)node);
337 break;
338 case PURPLE_BLIST_BUDDY_NODE:
339 text = purple_buddy_get_alias((PurpleBuddy *)node);
340 break;
341 case PURPLE_BLIST_GROUP_NODE:
342 text = ((PurpleGroup *)node)->name;
343 break;
344 default:
345 g_return_if_reached();
346 }
347
348 esc = g_markup_escape_text(text, -1);
349 if (GTK_IS_ENTRY (editable)) {
350 GtkEntry *entry = GTK_ENTRY (editable);
351 gtk_entry_set_text(entry, esc);
352 }
353 g_free(esc);
354 }
355
315 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1, 356 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1,
316 char *arg2, gpointer nada) 357 char *arg2, gpointer nada)
317 { 358 {
318 GtkTreeIter iter; 359 GtkTreeIter iter;
319 GtkTreePath *path; 360 GtkTreePath *path;
369 410
370 static void gtk_blist_menu_alias_cb(GtkWidget *w, PurpleBlistNode *node) 411 static void gtk_blist_menu_alias_cb(GtkWidget *w, PurpleBlistNode *node)
371 { 412 {
372 GtkTreeIter iter; 413 GtkTreeIter iter;
373 GtkTreePath *path; 414 GtkTreePath *path;
374 const char *text = NULL;
375 char *esc;
376 415
377 if (!(get_iter_from_node(node, &iter))) { 416 if (!(get_iter_from_node(node, &iter))) {
378 /* This is either a bug, or the buddy is in a collapsed contact */ 417 /* This is either a bug, or the buddy is in a collapsed contact */
379 node = node->parent; 418 node = node->parent;
380 if (!get_iter_from_node(node, &iter)) 419 if (!get_iter_from_node(node, &iter))
381 /* Now it's definitely a bug */ 420 /* Now it's definitely a bug */
382 return; 421 return;
383 } 422 }
384
385 switch (node->type) {
386 case PURPLE_BLIST_BUDDY_NODE:
387 text = purple_buddy_get_alias((PurpleBuddy *)node);
388 break;
389 case PURPLE_BLIST_CONTACT_NODE:
390 text = purple_contact_get_alias((PurpleContact *)node);
391 break;
392 case PURPLE_BLIST_GROUP_NODE:
393 text = ((PurpleGroup *)node)->name;
394 break;
395 case PURPLE_BLIST_CHAT_NODE:
396 text = purple_chat_get_name((PurpleChat *)node);
397 break;
398 default:
399 g_return_if_reached();
400 }
401
402 esc = g_markup_escape_text(text, -1);
403 gtk_tree_store_set(gtkblist->treemodel, &iter, NAME_COLUMN, esc, -1);
404 g_free(esc);
405 423
406 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter); 424 path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
407 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL); 425 g_object_set(G_OBJECT(gtkblist->text_rend), "editable", TRUE, NULL);
408 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE); 426 gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), FALSE);
409 gtk_widget_grab_focus(gtkblist->treeview); 427 gtk_widget_grab_focus(gtkblist->treeview);
4400 #if GTK_CHECK_VERSION(2,6,0) 4418 #if GTK_CHECK_VERSION(2,6,0)
4401 "cell-background-gdk", BGCOLOR_COLUMN, 4419 "cell-background-gdk", BGCOLOR_COLUMN,
4402 #endif 4420 #endif
4403 "markup", NAME_COLUMN, 4421 "markup", NAME_COLUMN,
4404 NULL); 4422 NULL);
4423 g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
4405 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL); 4424 g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), NULL);
4406 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); 4425 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
4407 #if GTK_CHECK_VERSION(2,6,0) 4426 #if GTK_CHECK_VERSION(2,6,0)
4408 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); 4427 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
4409 #endif 4428 #endif

mercurial