[recipes] Make the ingredients list api safe for segment overlap



commit 91e18438d2c242f56fc555d6743ad8f5470a5afe
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Dec 22 19:59:40 2016 -0500

    Make the ingredients list api safe for segment overlap
    
    We need to pass the segment name to scale_unit, so we can disambiguate
    if the same ingredient is present in multiple segments.
    
    Update all callers.

 src/gr-details-page.c     |    2 +-
 src/gr-edit-page.c        |    2 +-
 src/gr-ingredients-list.c |    4 +++-
 src/gr-ingredients-list.h |    3 ++-
 4 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/src/gr-details-page.c b/src/gr-details-page.c
index 1ada851..65cc2f0 100644
--- a/src/gr-details-page.c
+++ b/src/gr-details-page.c
@@ -692,7 +692,7 @@ populate_ingredients (GrDetailsPage *page,
                         box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
                         gtk_widget_show (box);
 
-                        s = gr_ingredients_list_scale_unit (page->ingredients, ings[i], num, denom);
+                        s = gr_ingredients_list_scale_unit (page->ingredients, segments[j], ings[i], num, 
denom);
                         label = gtk_label_new (s);
                         g_object_set (label,
                                       "visible", TRUE,
diff --git a/src/gr-edit-page.c b/src/gr-edit-page.c
index 786dd13..ca073d6 100644
--- a/src/gr-edit-page.c
+++ b/src/gr-edit-page.c
@@ -798,7 +798,7 @@ populate_ingredients (GrEditPage *page,
                         const char *unit;
                         GtkWidget *row;
 
-                        s = gr_ingredients_list_scale_unit (ingredients, ings[i], 1, 1);
+                        s = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1, 1);
                         strv = g_strsplit (s, " ", 2);
                         amount = strv[0];
                         unit = strv[1] ? strv[1] : "";
diff --git a/src/gr-ingredients-list.c b/src/gr-ingredients-list.c
index 51ff26f..f5d9d0b 100644
--- a/src/gr-ingredients-list.c
+++ b/src/gr-ingredients-list.c
@@ -500,6 +500,7 @@ gr_ingredients_list_get_ingredients (GrIngredientsList *ingredients,
 
 char *
 gr_ingredients_list_scale_unit (GrIngredientsList *ingredients,
+                                const char        *segment,
                                 const char        *name,
                                 int                num,
                                 int                denom)
@@ -509,7 +510,8 @@ gr_ingredients_list_scale_unit (GrIngredientsList *ingredients,
         for (l = ingredients->ingredients; l; l = l->next) {
                 Ingredient *ing = (Ingredient *)l->data;
 
-                if (g_strcmp0 (name, ing->name) == 0) {
+                if (g_strcmp0 (segment, ing->segment) == 0 &&
+                    g_strcmp0 (name, ing->name) == 0) {
                         GString *s;
 
                         s = g_string_new ("");
diff --git a/src/gr-ingredients-list.h b/src/gr-ingredients-list.h
index 086c647..b5c83ab 100644
--- a/src/gr-ingredients-list.h
+++ b/src/gr-ingredients-list.h
@@ -36,7 +36,8 @@ char              *gr_ingredients_list_scale           (GrIngredientsList  *ingr
                                                         int                 num,
                                                         int                 denom);
 char              *gr_ingredients_list_scale_unit      (GrIngredientsList  *ingredients,
-                                                        const char         *name,
+                                                        const char         *segment,
+                                                        const char         *ingredient,
                                                         int                 num,
                                                         int                 denom);
 char             **gr_ingredients_list_get_segments    (GrIngredientsList  *ingredients);


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