pidgin/gtkconv.c

branch
gtk4
changeset 41609
40c35d54cc66
parent 41608
a0a447f4e151
child 41611
518ed33dc53a
equal deleted inserted replaced
41608:a0a447f4e151 41609:40c35d54cc66
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);

mercurial