const gchar * empathy_roster_view_get_group_at_y (EmpathyRosterView *self, gint y) { GtkListBoxRow *row; row = gtk_list_box_get_row_at_y (GTK_LIST_BOX (self), y); if (EMPATHY_IS_ROSTER_CONTACT (row)) return empathy_roster_contact_get_group (EMPATHY_ROSTER_CONTACT (row)); else if (EMPATHY_IS_ROSTER_GROUP (row)) return empathy_roster_group_get_name (EMPATHY_ROSTER_GROUP (row)); return NULL; }
/** * @out_row: (out) (allow-none) */ FolksIndividual * empathy_roster_view_get_individual_at_y (EmpathyRosterView *self, gint y, GtkListBoxRow **out_row) { GtkListBoxRow *row; row = gtk_list_box_get_row_at_y (GTK_LIST_BOX (self), y); if (out_row != NULL) *out_row = row; if (!EMPATHY_IS_ROSTER_CONTACT (row)) return NULL; return empathy_roster_contact_get_individual (EMPATHY_ROSTER_CONTACT (row)); }
static gboolean list_button_release_event (GtkListBox *box, GdkEvent *event, GtkWidget *chooser) { gdouble x, y; GtkListBoxRow *row; gdk_event_get_coords (event, &x, &y); row = gtk_list_box_get_row_at_y (box, y); if (row && g_object_get_data (G_OBJECT (row), "back")) { g_signal_emit_by_name (row, "activate", NULL); return TRUE; } return FALSE; }
static gboolean empathy_roster_view_button_press_event (GtkWidget *widget, GdkEventButton *event) { EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (widget); gboolean (*chain_up) (GtkWidget *, GdkEventButton *) = ((GtkWidgetClass *) empathy_roster_view_parent_class)->button_press_event; if (event->button == 3) { GtkListBoxRow *row; row = gtk_list_box_get_row_at_y (GTK_LIST_BOX (self), event->y); if (row != NULL) { gtk_list_box_select_row (GTK_LIST_BOX (self), row); fire_popup_individual_menu (self, row, event->button, event->time); } } return chain_up (widget, event); }