EmpathyContactListFeatureFlags list_features;
EmpathyContactFeatureFlags contact_features;
GtkWidget *tooltip_widget;
+ GtkTargetList *file_targets;
} EmpathyContactListViewPriv;
typedef struct {
{
EmpathyContactListViewPriv *priv;
GtkTreeModel *model;
- static GtkTargetList *file_targets = NULL;
GdkAtom target;
GtkTreeIter iter;
static DragMotionData *dm = NULL;
priv = GET_PRIV (EMPATHY_CONTACT_LIST_VIEW (widget));
model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
- if (file_targets == NULL) {
- file_targets = gtk_target_list_new (drag_types_dest_file,
- G_N_ELEMENTS (drag_types_dest_file));
- }
-
is_row = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
x,
y,
gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), NULL, 0);
return FALSE;
}
- target = gtk_drag_dest_find_target (widget, context, file_targets);
+ target = gtk_drag_dest_find_target (widget, context, priv->file_targets);
gtk_tree_model_get_iter (model, &iter, path);
if (target == GDK_NONE) {
if (priv->tooltip_widget) {
gtk_widget_destroy (priv->tooltip_widget);
}
+ if (priv->file_targets) {
+ gtk_target_list_unref (priv->file_targets);
+ }
G_OBJECT_CLASS (empathy_contact_list_view_parent_class)->finalize (object);
}
empathy_contact_list_store_row_separator_func,
NULL, NULL);
+ /* Set up drag target lists. */
+ priv->file_targets = gtk_target_list_new (drag_types_dest_file,
+ G_N_ELEMENTS (drag_types_dest_file));
+
/* Connect to tree view signals rather than override. */
g_signal_connect (view, "button-press-event",
G_CALLBACK (contact_list_view_button_press_event_cb),
NotifyNotification *notification;
NotificationData *notification_data;
+ GtkTargetList *move_targets;
+
/* Menu items. */
GtkUIManager *ui_manager;
GtkAction *menu_conv_insert_smiley;
guint time,
EmpathyChatWindow *window)
{
- static GtkTargetList *list = NULL;
GdkAtom target;
+ EmpathyChatWindowPriv *priv;
- if (list == NULL) {
- list = gtk_target_list_new (drag_types_dest_move,
- G_N_ELEMENTS (drag_types_dest_move));
- }
+ priv = GET_PRIV (window);
- target = gtk_drag_dest_find_target (widget, context, list);
+ target = gtk_drag_dest_find_target (widget, context, priv->move_targets);
/* If target != GDK_NONE, this target type is a type we should move
instead of copy. That's a notebook tab. Other drag types, such
as files or contacts, use copy.
}
}
+ if (priv->move_targets) {
+ gtk_target_list_unref (priv->move_targets);
+ }
+
chat_windows = g_list_remove (chat_windows, window);
gtk_widget_destroy (priv->dialog);
g_object_unref (accel_group);
+ /* Set up drag target lists */
+ priv->move_targets = gtk_target_list_new (drag_types_dest_move,
+ G_N_ELEMENTS (drag_types_dest_move));
+
/* Set up smiley menu */
smiley_manager = empathy_smiley_manager_dup_singleton ();
submenu = empathy_smiley_menu_new (smiley_manager,