| 551 G_ACTION_GROUP(group)); |
551 G_ACTION_GROUP(group)); |
| 552 |
552 |
| 553 return menu; |
553 return menu; |
| 554 } |
554 } |
| 555 |
555 |
| 556 |
|
| 557 static gint |
|
| 558 gtkconv_chat_popup_menu_cb(GtkWidget *widget, PidginConversation *gtkconv) |
|
| 559 { |
|
| 560 PurpleConversation *conv = gtkconv->active_conv; |
|
| 561 PurpleConnection *gc; |
|
| 562 PurpleAccount *account; |
|
| 563 GtkTreeSelection *sel; |
|
| 564 GtkTreeIter iter; |
|
| 565 GtkTreeModel *model; |
|
| 566 GtkWidget *popover_menu = NULL; |
|
| 567 GMenu *menu = NULL; |
|
| 568 gchar *who; |
|
| 569 |
|
| 570 gtkconv = PIDGIN_CONVERSATION(conv); |
|
| 571 account = purple_conversation_get_account(conv); |
|
| 572 gc = purple_account_get_connection(account); |
|
| 573 |
|
| 574 model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkconv->list)); |
|
| 575 |
|
| 576 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkconv->list)); |
|
| 577 if(!gtk_tree_selection_get_selected(sel, NULL, &iter)) |
|
| 578 return FALSE; |
|
| 579 |
|
| 580 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, CHAT_USERS_NAME_COLUMN, &who, -1); |
|
| 581 menu = create_chat_menu(PURPLE_CHAT_CONVERSATION(conv), who, gc, gtkconv); |
|
| 582 |
|
| 583 popover_menu = gtk_popover_menu_new_from_model(G_MENU_MODEL(menu)); |
|
| 584 gtk_widget_set_parent(popover_menu, gtkconv->list); |
|
| 585 |
|
| 586 gtk_popover_popup(GTK_POPOVER(popover_menu)); |
|
| 587 |
|
| 588 g_free(who); |
|
| 589 |
|
| 590 return TRUE; |
|
| 591 } |
|
| 592 |
|
| 593 |
|
| 594 static gint |
556 static gint |
| 595 right_click_chat_cb(GtkGestureClick *click, gint n_press, gdouble x, gdouble y, |
557 right_click_chat_cb(GtkGestureClick *click, gint n_press, gdouble x, gdouble y, |
| 596 gpointer data) |
558 gpointer data) |
| 597 { |
559 { |
| 598 PidginConversation *gtkconv = data; |
560 PidginConversation *gtkconv = data; |
| 1506 "icon-name", CHAT_USERS_ICON_NAME_COLUMN, NULL); |
1468 "icon-name", CHAT_USERS_ICON_NAME_COLUMN, NULL); |
| 1507 gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); |
1469 gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); |
| 1508 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); |
1470 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); |
| 1509 |
1471 |
| 1510 click = gtk_gesture_click_new(); |
1472 click = gtk_gesture_click_new(); |
| |
1473 gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(click), 0); |
| 1511 g_signal_connect(click, "pressed", G_CALLBACK(right_click_chat_cb), gtkconv); |
1474 g_signal_connect(click, "pressed", G_CALLBACK(right_click_chat_cb), gtkconv); |
| 1512 gtk_widget_add_controller(list, GTK_EVENT_CONTROLLER(click)); |
1475 gtk_widget_add_controller(list, GTK_EVENT_CONTROLLER(click)); |
| 1513 |
1476 |
| 1514 g_signal_connect(G_OBJECT(list), "row-activated", |
1477 g_signal_connect(G_OBJECT(list), "row-activated", |
| 1515 G_CALLBACK(activate_list_cb), gtkconv); |
1478 G_CALLBACK(activate_list_cb), gtkconv); |
| 1516 g_signal_connect(G_OBJECT(list), "popup-menu", |
|
| 1517 G_CALLBACK(gtkconv_chat_popup_menu_cb), gtkconv); |
|
| 1518 |
1479 |
| 1519 gtk_widget_set_has_tooltip(list, TRUE); |
1480 gtk_widget_set_has_tooltip(list, TRUE); |
| 1520 g_signal_connect(list, "query-tooltip", |
1481 g_signal_connect(list, "query-tooltip", |
| 1521 G_CALLBACK(pidgin_conv_userlist_query_tooltip), |
1482 G_CALLBACK(pidgin_conv_userlist_query_tooltip), |
| 1522 gtkconv); |
1483 gtkconv); |