[recipes] Simplify cooking view API



commit d6060a7c71ad4138797b55ae5fcdbd985afabaad
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Feb 23 19:21:36 2017 -0500

    Simplify cooking view API
    
    Just have a single set_data function instead of separate
    set_instructions and set_images, which leave us with an
    awkward intermediate state.
    
    This avoids a crash in the edit page when switching between
    edit and preview.

 src/gr-cooking-page.c |    3 +--
 src/gr-cooking-view.c |   19 +++++--------------
 src/gr-cooking-view.h |    7 +++----
 src/gr-edit-page.c    |    5 +++--
 4 files changed, 12 insertions(+), 22 deletions(-)
---
diff --git a/src/gr-cooking-page.c b/src/gr-cooking-page.c
index e79e63a..26c20d2 100644
--- a/src/gr-cooking-page.c
+++ b/src/gr-cooking-page.c
@@ -469,6 +469,5 @@ gr_cooking_page_set_recipe (GrCookingPage *page,
 
         container_remove_all (GTK_CONTAINER (page->mini_timer_box));
 
-        gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images);
-        gr_cooking_view_set_instructions (GR_COOKING_VIEW (page->cooking_view), instructions);
+        gr_cooking_view_set_data (GR_COOKING_VIEW (page->cooking_view), instructions, images);
 }
diff --git a/src/gr-cooking-view.c b/src/gr-cooking-view.c
index d81288e..a1d84ed 100644
--- a/src/gr-cooking-view.c
+++ b/src/gr-cooking-view.c
@@ -490,25 +490,16 @@ setup_steps (GrCookingView *view)
 }
 
 void
-gr_cooking_view_set_images (GrCookingView *view,
-                            GArray        *images)
-{
-        g_clear_pointer (&view->images, g_array_unref);
-        view->images = g_array_ref (images);
-
-        setup_steps (view);
-        set_step (view, 0);
-}
-
-void
-gr_cooking_view_set_instructions (GrCookingView *view,
-                                  const char    *instructions)
+gr_cooking_view_set_data (GrCookingView *view,
+                          const char    *instructions,
+                          GArray        *images)
 {
         g_free (view->instructions);
         view->instructions = g_strdup (instructions);
+        g_clear_pointer (&view->images, g_array_unref);
+        view->images = g_array_ref (images);
 
         setup_steps (view);
-        set_step (view, 0);
 }
 
 int
diff --git a/src/gr-cooking-view.h b/src/gr-cooking-view.h
index 85685ab..e37d0fe 100644
--- a/src/gr-cooking-view.h
+++ b/src/gr-cooking-view.h
@@ -31,10 +31,9 @@ G_BEGIN_DECLS
 G_DECLARE_FINAL_TYPE (GrCookingView, gr_cooking_view, GR, COOKING_VIEW, GtkBox)
 
 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);
+void           gr_cooking_view_set_data      (GrCookingView *view,
+                                              const char    *instructions,
+                                              GArray        *images);
 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-edit-page.c b/src/gr-edit-page.c
index 11321fd..4865e89 100644
--- a/src/gr-edit-page.c
+++ b/src/gr-edit-page.c
@@ -1363,6 +1363,7 @@ preview_visible_changed (GrEditPage *page)
                 gtk_widget_set_sensitive (page->temperature_button, TRUE);
                 gtk_widget_set_visible (page->prev_step_button, FALSE);
                 gtk_widget_set_visible (page->next_step_button, FALSE);
+                gr_cooking_view_stop (GR_COOKING_VIEW (page->cooking_view));
         }
         else {
                 g_autoptr(GArray) images = NULL;
@@ -1378,8 +1379,8 @@ preview_visible_changed (GrEditPage *page)
                 g_object_get (page->images, "images", &images, NULL);
                 instructions = get_text_view_text (GTK_TEXT_VIEW (page->instructions_field));
 
-                gr_cooking_view_set_images (GR_COOKING_VIEW (page->cooking_view), images);
-                gr_cooking_view_set_instructions (GR_COOKING_VIEW (page->cooking_view), instructions);
+                gr_cooking_view_set_data (GR_COOKING_VIEW (page->cooking_view), instructions, images);
+                gr_cooking_view_start (GR_COOKING_VIEW (page->cooking_view));
 
                 update_steppers (page);
         }


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