soylent r116 - trunk/src



Author: treitter
Date: Wed Apr  2 07:25:48 2008
New Revision: 116
URL: http://svn.gnome.org/viewvc/soylent?rev=116&view=rev

Log:
fix an off-by-one error when editing IM names; don't also display Work IM names under Home

Modified:
   trunk/src/eds-utils.c
   trunk/src/soylent-browser-person-view.c

Modified: trunk/src/eds-utils.c
==============================================================================
--- trunk/src/eds-utils.c	(original)
+++ trunk/src/eds-utils.c	Wed Apr  2 07:25:48 2008
@@ -159,6 +159,7 @@
 {
   gboolean retval = FALSE;
   GList *attr_list = NULL;
+  GList *attr_list_prev = NULL;
   GList *attr_list_head = NULL;
   EVCardAttribute *attr = NULL;
   GList *type_existing = NULL;
@@ -188,9 +189,11 @@
             {
               abs_num--;
             }
+
+          attr_list_prev = attr_list;
         }
 
-      if (attr && abs_num > 0)
+      if (attr && abs_num >= 0)
         {
           if (value && !g_str_equal (value, ""))
             {
@@ -199,7 +202,8 @@
             }
           else
             {
-              attr_list_head = g_list_delete_link (attr_list_head, attr_list);
+              attr_list_head = g_list_delete_link (attr_list_head,
+                                                   attr_list_prev);
             }
 
           e_contact_set_attributes (e_contact, field_id, attr_list_head);

Modified: trunk/src/soylent-browser-person-view.c
==============================================================================
--- trunk/src/soylent-browser-person-view.c	(original)
+++ trunk/src/soylent-browser-person-view.c	Wed Apr  2 07:25:48 2008
@@ -2481,17 +2481,21 @@
                    l && entry_pos[context] < IM_FIELDS_PER_CONTEXT;
                    l = g_list_next(l))
                 {
+                  gboolean param_type_is_work = FALSE;
                   GList *param_type = NULL;
 
                   attr = l->data;
                   im_name = e_vcard_attribute_get_value (attr);
                   param_type = e_vcard_attribute_get_param (attr, EVC_TYPE);
 
+                  param_type_is_work = (param_type
+                                        && !g_ascii_strcasecmp
+                                              (param_type->data,
+                                                CONTEXT_STRS[CONTEXT_WORK]));
+
                   /* "HOME" is the catch-all, since that's how Evo does it */
-                  if ((context == CONTEXT_HOME)
-                      || (param_type
-                          && (g_ascii_strcasecmp (param_type->data,
-                                                  CONTEXT_STRS[context]) == 0)))
+                  if (((context == CONTEXT_WORK) && param_type_is_work)
+                      || ((context == CONTEXT_HOME) && !param_type_is_work))
                     {
                       GtkHBox *hbox_im = NULL;
                       GtkLabel *label_im = NULL;
@@ -2499,22 +2503,22 @@
                       gchar *widget_name = NULL;
 
                       widget_name = g_strdup_printf ("hbox_person_im_%s_%c",
-                                                    CONTEXT_STRS[context],
-                                                    '1' + entry_pos[context]);
+                                                     CONTEXT_STRS[context],
+                                                     '1' + entry_pos[context]);
                       hbox_im = GTK_HBOX (glade_xml_get_widget (wtree,
                                                                 widget_name));
                       g_free (widget_name);
 
                       widget_name = g_strdup_printf ("entry_person_im_%s_%c",
-                                                    CONTEXT_STRS[context],
-                                                    '1' + entry_pos[context]);
+                                                     CONTEXT_STRS[context],
+                                                     '1' + entry_pos[context]);
                       entry_im = GTK_ENTRY (glade_xml_get_widget (wtree,
                                                                   widget_name));
                       g_free (widget_name);
 
                       widget_name = g_strdup_printf ("label_person_im_%s_%c",
-                                                    CONTEXT_STRS[context],
-                                                    '1' + entry_pos[context]);
+                                                     CONTEXT_STRS[context],
+                                                     '1' + entry_pos[context]);
                       label_im = GTK_LABEL (glade_xml_get_widget (wtree,
                                                                   widget_name));
                       g_free (widget_name);
@@ -2529,7 +2533,7 @@
                                        e_vcard_attribute_get_name (attr) + 2);
                           entry_set_text_block_handler
                             (entry_im, im_name,
-                             soylent_browser_person_entry_changed_e_contact_cb);
+                            soylent_browser_person_entry_changed_e_contact_cb);
 
                           gtk_widget_show (GTK_WIDGET (hbox_im));
                         }
@@ -2599,8 +2603,8 @@
             GtkHBox *hbox_im = NULL;
 
             widget_name = g_strdup_printf ("hbox_person_im_%s_%c",
-                                          CONTEXT_STRS[context],
-                                          '1' + entry_pos[context]);
+                                           CONTEXT_STRS[context],
+                                           '1' + entry_pos[context]);
             hbox_im = GTK_HBOX (glade_xml_get_widget (wtree, widget_name));
 
             gtk_widget_hide (GTK_WIDGET (hbox_im));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]