#include "empathy-individual-edit-dialog.h"
#include "empathy-individual-dialogs.h"
#include "empathy-images.h"
-#include "empathy-linking-dialog.h"
#include "empathy-cell-renderer-expander.h"
#include "empathy-cell-renderer-text.h"
#include "empathy-cell-renderer-activatable.h"
EMPATHY_INDIVIDUAL_WIDGET_SHOW_CLIENT_TYPES);
gtk_container_set_border_width (GTK_CONTAINER (priv->tooltip_widget), 8);
g_object_ref (priv->tooltip_widget);
- g_signal_connect (priv->tooltip_widget, "destroy",
- G_CALLBACK (individual_view_tooltip_destroy_cb), view);
+
+ tp_g_signal_connect_object (priv->tooltip_widget, "destroy",
+ G_CALLBACK (individual_view_tooltip_destroy_cb), view, 0);
+
gtk_widget_show (priv->tooltip_widget);
}
else
gtk_tree_row_reference_free (priv->drag_row);
priv->drag_row = NULL;
}
+
+ if (priv->auto_scroll_timeout_id != 0)
+ {
+ g_source_remove (priv->auto_scroll_timeout_id);
+ priv->auto_scroll_timeout_id = 0;
+ }
}
static gboolean
shell = GTK_MENU_SHELL (menu);
/* audio */
- item = empathy_individual_audio_call_menu_item_new (individual, NULL);
+ item = empathy_individual_audio_call_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
/* video */
- item = empathy_individual_video_call_menu_item_new (individual, NULL);
+ item = empathy_individual_video_call_menu_item_new (individual);
gtk_menu_shell_append (shell, item);
gtk_widget_show (item);
g_free (name);
}
-/* FIXME: This is a workaround for bgo#621076 */
-static void
-individual_view_verify_group_visibility (EmpathyIndividualView *view,
- GtkTreePath *path)
-{
- EmpathyIndividualViewPriv *priv = GET_PRIV (view);
- GtkTreeModel *model;
- GtkTreePath *parent_path;
- GtkTreeIter parent_iter;
-
- if (gtk_tree_path_get_depth (path) < 2)
- return;
-
- /* A group row is visible if and only if at least one if its child is visible.
- * So when a row is inserted/deleted/changed in the base model, that could
- * modify the visibility of its parent in the filter model.
- */
-
- model = GTK_TREE_MODEL (priv->store);
- parent_path = gtk_tree_path_copy (path);
- gtk_tree_path_up (parent_path);
- if (gtk_tree_model_get_iter (model, &parent_iter, parent_path))
- {
- /* This tells the filter to verify the visibility of that row, and
- * show/hide it if necessary */
- gtk_tree_model_row_changed (GTK_TREE_MODEL (priv->store),
- parent_path, &parent_iter);
- }
- gtk_tree_path_free (parent_path);
-}
-
-static void
-individual_view_store_row_changed_cb (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- EmpathyIndividualView *view)
-{
- individual_view_verify_group_visibility (view, path);
-}
-
-static void
-individual_view_store_row_deleted_cb (GtkTreeModel *model,
- GtkTreePath *path,
- EmpathyIndividualView *view)
-{
- individual_view_verify_group_visibility (view, path);
-}
-
static gboolean
individual_view_is_visible_individual (EmpathyIndividualView *self,
FolksIndividual *individual,
g_object_unref (individual);
g_free (group);
- /* FIXME: Work around bgo#626552/bgo#621076 */
- if (visible)
- {
- GtkTreePath *path = gtk_tree_model_get_path (model, iter);
- individual_view_verify_group_visibility (self, path);
- gtk_tree_path_free (path);
- }
-
return visible;
}
}
}
-static void
-individual_menu_link_contacts_activated_cb (EmpathyIndividualMenu *menu,
- EmpathyLinkingDialog *linking_dialog,
- EmpathyIndividualView *self)
-{
- EmpathyIndividualViewPriv *priv = GET_PRIV (self);
- EmpathyIndividualLinker *linker;
-
- linker = empathy_linking_dialog_get_individual_linker (linking_dialog);
- empathy_individual_linker_set_search_text (linker,
- empathy_live_search_get_text (EMPATHY_LIVE_SEARCH (priv->search_widget)));
-}
-
GtkWidget *
empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
{
G_CALLBACK (individual_view_remove_activate_cb), view);
}
- /* Connect to EmpathyIndividualMenu::link-contacts-activated so that we can
- * set the live search text on the new linking dialogue to be the same as
- * our own. */
- g_signal_connect (menu, "link-contacts-activated",
- (GCallback) individual_menu_link_contacts_activated_cb, view);
-
out:
g_object_unref (individual);
/* Destroy the old filter and remove the old store */
if (priv->store != NULL)
{
- g_signal_handlers_disconnect_by_func (priv->store,
- individual_view_store_row_changed_cb, self);
- g_signal_handlers_disconnect_by_func (priv->store,
- individual_view_store_row_deleted_cb, self);
-
g_signal_handlers_disconnect_by_func (priv->filter,
individual_view_row_has_child_toggled_cb, self);
G_CALLBACK (individual_view_row_has_child_toggled_cb), self);
gtk_tree_view_set_model (GTK_TREE_VIEW (self),
GTK_TREE_MODEL (priv->filter));
-
- tp_g_signal_connect_object (priv->store, "row-changed",
- G_CALLBACK (individual_view_store_row_changed_cb), self, 0);
- tp_g_signal_connect_object (priv->store, "row-inserted",
- G_CALLBACK (individual_view_store_row_changed_cb), self, 0);
- tp_g_signal_connect_object (priv->store, "row-deleted",
- G_CALLBACK (individual_view_store_row_deleted_cb), self, 0);
}
}