SIG_INDIVIDUAL_ACTIVATED,
SIG_POPUP_INDIVIDUAL_MENU,
SIG_EVENT_ACTIVATED,
+ SIG_INDIVIDUAL_TOOLTIP,
LAST_SIGNAL
};
gboolean empty;
EmpathyLiveSearch *search;
-
- EmpathyRosterViewIndividualTooltipCb individual_tooltip_cb;
- gpointer individual_tooltip_data;
};
typedef struct
FolksIndividual *individual;
gboolean result;
- if (self->priv->individual_tooltip_cb == NULL)
- return FALSE;
-
child = egg_list_box_get_child_at_y (EGG_LIST_BOX (self), y);
if (!EMPATHY_IS_ROSTER_CONTACT (child))
return FALSE;
contact = EMPATHY_ROSTER_CONTACT (child);
individual = empathy_roster_contact_get_individual (contact);
- result = self->priv->individual_tooltip_cb (self, individual, keyboard_mode,
- tooltip, self->priv->individual_tooltip_data);
+ g_signal_emit (self, signals[SIG_INDIVIDUAL_TOOLTIP], 0,
+ individual, keyboard_mode, tooltip, &result);
if (result)
{
return result;
}
-void
-empathy_roster_view_set_individual_tooltip_cb (EmpathyRosterView *self,
- EmpathyRosterViewIndividualTooltipCb callback,
- gpointer user_data)
-{
- self->priv->individual_tooltip_cb = callback;
- self->priv->individual_tooltip_data = user_data;
-
- gtk_widget_set_has_tooltip (GTK_WIDGET (self), callback != NULL);
-}
-
static void
empathy_roster_view_remove (GtkContainer *container,
GtkWidget *widget)
G_TYPE_NONE,
2, FOLKS_TYPE_INDIVIDUAL, G_TYPE_POINTER);
+ signals[SIG_INDIVIDUAL_TOOLTIP] = g_signal_new ("individual-tooltip",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, g_signal_accumulator_true_handled, NULL, NULL,
+ G_TYPE_BOOLEAN,
+ 3, FOLKS_TYPE_INDIVIDUAL, G_TYPE_BOOLEAN, GTK_TYPE_TOOLTIP);
+
g_type_class_add_private (klass, sizeof (EmpathyRosterViewPriv));
}
void empathy_roster_view_set_live_search (EmpathyRosterView *self,
EmpathyLiveSearch *search);
-typedef gboolean (* EmpathyRosterViewIndividualTooltipCb) (
- EmpathyRosterView *self,
- FolksIndividual *individual,
- gboolean keyboard_mode,
- GtkTooltip *tooltip,
- gpointer user_data);
-
-void empathy_roster_view_set_individual_tooltip_cb (EmpathyRosterView *self,
- EmpathyRosterViewIndividualTooltipCb callback,
- gpointer user_data);
-
gboolean empathy_roster_view_is_empty (EmpathyRosterView *self);
gboolean empathy_roster_view_is_searching (EmpathyRosterView *self);
FolksIndividual *individual,
gboolean keyboard_mode,
GtkTooltip *tooltip,
- gpointer user_data)
+ EmpathyRosterWindow *self)
{
- EmpathyRosterWindow *self = user_data;
-
if (self->priv->tooltip_widget == NULL)
{
self->priv->tooltip_widget = empathy_individual_widget_new (individual,
G_CALLBACK (popup_individual_menu_cb), self);
g_signal_connect (self->priv->view, "notify::empty",
G_CALLBACK (view_empty_cb), self);
+ g_signal_connect (self->priv->view, "individual-tooltip",
+ G_CALLBACK (individual_tooltip_cb), self);
- empathy_roster_view_set_individual_tooltip_cb (self->priv->view,
- individual_tooltip_cb, self);
+ gtk_widget_set_has_tooltip (GTK_WIDGET (self->priv->view), TRUE);
/* Set up search bar */
self->priv->search_bar = empathy_live_search_new (
G_CALLBACK (popup_individual_menu_cb), NULL);
g_signal_connect (view, "notify::empty",
G_CALLBACK (empty_cb), NULL);
+ g_signal_connect (view, "individual-tooltip",
+ G_CALLBACK (individual_tooltip_cb), NULL);
+
+ gtk_widget_set_has_tooltip (view, TRUE);
empathy_roster_view_show_offline (EMPATHY_ROSTER_VIEW (view), show_offline);
empathy_roster_view_show_groups (EMPATHY_ROSTER_VIEW (view), show_groups);
- empathy_roster_view_set_individual_tooltip_cb (EMPATHY_ROSTER_VIEW (view),
- individual_tooltip_cb, NULL);
-
g_object_unref (mgr);
search = empathy_live_search_new (view);