[recipes] Fix temporary image switches



commit a5969ca4ba75a80adcf483469db28eb193057645
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Feb 4 23:54:41 2017 +0000

    Fix temporary image switches
    
    https://bugzilla.gnome.org/show_bug.cgi?id=778029

 src/gr-cooking-page.c |    2 +-
 src/gr-cooking-view.c |    5 +++--
 src/gr-cooking-view.h |    4 +++-
 src/gr-details-page.c |    9 ++++++---
 src/gr-edit-page.c    |    6 +++---
 src/gr-image-viewer.c |   15 ++++++++++++---
 src/gr-image-viewer.h |    4 +++-
 7 files changed, 31 insertions(+), 14 deletions(-)
---
diff --git a/src/gr-cooking-page.c b/src/gr-cooking-page.c
index 7a55464..afcf82e 100644
--- a/src/gr-cooking-page.c
+++ b/src/gr-cooking-page.c
@@ -389,7 +389,7 @@ gr_cooking_page_set_recipe (GrCookingPage *page,
                 g_object_get (recipe, "images", &images, NULL);
                 instructions = gr_recipe_get_translated_instructions (recipe);
 
-                gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images);
+                gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images, 0);
                 gr_cooking_view_set_instructions (GR_COOKING_VIEW (page->cooking_view), instructions);
         }
 }
diff --git a/src/gr-cooking-view.c b/src/gr-cooking-view.c
index e33ab82..77cb2ce 100644
--- a/src/gr-cooking-view.c
+++ b/src/gr-cooking-view.c
@@ -324,12 +324,13 @@ setup_steps (GrCookingView *view)
 
 void
 gr_cooking_view_set_images (GrCookingView *view,
-                            GArray        *images)
+                            GArray        *images,
+                            int            index)
 {
         view->images = g_array_ref (images);
 
         setup_steps (view);
-        set_step (view, 0);
+        set_step (view, index);
 }
 
 void
diff --git a/src/gr-cooking-view.h b/src/gr-cooking-view.h
index 617baa8..00b2a6c 100644
--- a/src/gr-cooking-view.h
+++ b/src/gr-cooking-view.h
@@ -34,7 +34,9 @@ GrCookingView *gr_cooking_view_new           (void);
 void           gr_cooking_view_set_instructions (GrCookingView *view,
                                                  const char    *instructions);
 void           gr_cooking_view_set_images       (GrCookingView *view,
-                                                 GArray        *images);
+                                                 GArray        *images,
+                                                 int            imaeg
+);
 int            gr_cooking_view_get_n_steps   (GrCookingView *view);
 int            gr_cooking_view_get_step      (GrCookingView *view);
 void           gr_cooking_view_set_step      (GrCookingView *view,
diff --git a/src/gr-details-page.c b/src/gr-details-page.c
index 09af52a..16df194 100644
--- a/src/gr-details-page.c
+++ b/src/gr-details-page.c
@@ -616,11 +616,14 @@ gr_details_page_set_recipe (GrDetailsPage *page,
         notes = gr_recipe_get_notes (recipe);
         instructions = gr_recipe_get_translated_instructions (recipe);
         description = gr_recipe_get_translated_description (recipe);
-        index = gr_recipe_get_default_image (recipe);
+        if (same_recipe)
+                g_object_get (page->recipe_image, "index", &index, NULL);
+        else
+                index = gr_recipe_get_default_image (recipe);
 
         g_object_get (recipe, "images", &images, NULL);
-        gr_image_viewer_set_images (GR_IMAGE_VIEWER (page->recipe_image), images);
-        gr_image_viewer_show_image (GR_IMAGE_VIEWER (page->recipe_image), index);
+        gr_image_viewer_set_images (GR_IMAGE_VIEWER (page->recipe_image), images, index);
+        //gr_image_viewer_show_image (GR_IMAGE_VIEWER (page->recipe_image), index);
 
         ing = gr_ingredients_list_new (ingredients);
         g_set_object (&page->ingredients, ing);
diff --git a/src/gr-edit-page.c b/src/gr-edit-page.c
index f480e2c..715ca33 100644
--- a/src/gr-edit-page.c
+++ b/src/gr-edit-page.c
@@ -1252,6 +1252,7 @@ preview_visible_changed (GrEditPage *page)
         else {
                 g_autoptr(GArray) images = NULL;
                 g_autofree char *instructions = NULL;
+                int index = 0;
 
                 gtk_widget_set_sensitive (page->add_step_button, FALSE);
                 gtk_widget_set_sensitive (page->link_image_button, FALSE);
@@ -1262,7 +1263,7 @@ preview_visible_changed (GrEditPage *page)
                 g_object_get (page->images, "images", &images, NULL);
                 instructions = get_instructions (GTK_TEXT_VIEW (page->instructions_field));
 
-                gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images);
+                gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images, index);
                 gr_cooking_view_set_instructions (GR_COOKING_VIEW (page->cooking_view), instructions);
 
                 update_steppers (page);
@@ -1889,8 +1890,7 @@ gr_edit_page_edit (GrEditPage *page,
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (page->vegetarian_check), (diets & 
GR_DIET_VEGETARIAN) != 0);
         gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (page->milk_free_check), (diets & GR_DIET_MILK_FREE) 
!= 0);
 
-        gr_image_viewer_set_images (GR_IMAGE_VIEWER (page->images), images);
-        gr_image_viewer_show_image (GR_IMAGE_VIEWER (page->images), index);
+        gr_image_viewer_set_images (GR_IMAGE_VIEWER (page->images), images, index);
 
         update_author_label (page, chef);
 
diff --git a/src/gr-image-viewer.c b/src/gr-image-viewer.c
index 490dd96..539eb0c 100644
--- a/src/gr-image-viewer.c
+++ b/src/gr-image-viewer.c
@@ -450,7 +450,9 @@ gr_image_viewer_set_property (GObject      *object,
         switch (prop_id)
           {
           case PROP_IMAGES:
-                  gr_image_viewer_set_images (self, (GArray *) g_value_get_boxed (value));
+                  gr_image_viewer_set_images (self,
+                                              (GArray *) g_value_get_boxed (value),
+                                              gr_image_viewer_get_index (self));
                   break;
 
           case PROP_INDEX:
@@ -508,7 +510,8 @@ gr_image_viewer_class_init (GrImageViewerClass *klass)
 
 void
 gr_image_viewer_set_images (GrImageViewer *viewer,
-                            GArray        *images)
+                            GArray        *images,
+                            int            index)
 {
         int i;
 
@@ -523,7 +526,7 @@ gr_image_viewer_set_images (GrImageViewer *viewer,
         }
 
         populate_preview (viewer);
-        viewer->index = 0;
+        viewer->index = index;
         set_current_image (viewer);
         hide_controls (viewer);
 
@@ -653,3 +656,9 @@ gr_image_viewer_show_image (GrImageViewer *viewer,
                 set_current_image (viewer);
         }
 }
+
+int
+gr_image_viewer_get_index (GrImageViewer *viewer)
+{
+        return viewer->images->len;
+}
diff --git a/src/gr-image-viewer.h b/src/gr-image-viewer.h
index e20dbe7..b5045f8 100644
--- a/src/gr-image-viewer.h
+++ b/src/gr-image-viewer.h
@@ -30,7 +30,8 @@ G_DECLARE_FINAL_TYPE (GrImageViewer, gr_image_viewer, GR, IMAGE_VIEWER, GtkBox)
 
 GrImageViewer *gr_image_viewer_new          (void);
 void           gr_image_viewer_set_images   (GrImageViewer *viewer,
-                                             GArray        *images);
+                                             GArray        *images,
+                                             int            index);
 
 void           gr_image_viewer_add_image    (GrImageViewer *viewer);
 void           gr_image_viewer_remove_image (GrImageViewer *viewer);
@@ -39,6 +40,7 @@ void           gr_image_viewer_rotate_image (GrImageViewer *viewer,
 
 void           gr_image_viewer_show_image (GrImageViewer *viewer,
                                            int            idx);
+int            gr_image_viewer_get_index (GrImageViewer *viewer);
 
 G_END_DECLS
 


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