[recipes] cuisine page: Show the cuisine description
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes] cuisine page: Show the cuisine description
- Date: Sat, 6 May 2017 21:35:36 +0000 (UTC)
commit 1cb0d1f28be9d76ded33164d02c3f6a17406d9e8
Author: Matthias Clasen <mclasen redhat com>
Date: Sat May 6 17:34:00 2017 -0400
cuisine page: Show the cuisine description
The description is ellipsized on the cuisines page, so show
it here, unabridged. Some care is needed to prevent our idle
scrolling from interfering with making the description visible
initially.
https://bugzilla.gnome.org/show_bug.cgi?id=780538
src/gr-cuisine-page.c | 39 ++++++++++++++++++++++++---------------
src/gr-cuisine-page.ui | 10 ++++++++++
2 files changed, 34 insertions(+), 15 deletions(-)
---
diff --git a/src/gr-cuisine-page.c b/src/gr-cuisine-page.c
index 721abf5..034a5cd 100644
--- a/src/gr-cuisine-page.c
+++ b/src/gr-cuisine-page.c
@@ -53,6 +53,7 @@ struct _GrCuisinePage
GtkWidget *category_box;
GtkWidget *stack;
GtkWidget *scroll_to_row;
+ GtkWidget *cuisine_label;
int n_categories;
Category *categories;
@@ -98,8 +99,10 @@ static void
row_selected (GrCuisinePage *page,
GtkListBoxRow *row)
{
- page->scroll_to_row = GTK_WIDGET (row);
- g_idle_add (scroll_in_idle, page);
+ if (page->scroll_to_row != GTK_WIDGET (row)) {
+ page->scroll_to_row = GTK_WIDGET (row);
+ g_idle_add (scroll_in_idle, page);
+ }
}
static void
@@ -205,6 +208,7 @@ gr_cuisine_page_class_init (GrCuisinePageClass *klass)
gtk_widget_class_bind_template_child (widget_class, GrCuisinePage, scrolled_window);
gtk_widget_class_bind_template_child (widget_class, GrCuisinePage, category_box);
gtk_widget_class_bind_template_child (widget_class, GrCuisinePage, stack);
+ gtk_widget_class_bind_template_child (widget_class, GrCuisinePage, cuisine_label);
gtk_widget_class_bind_template_callback (widget_class, row_selected);
}
@@ -219,17 +223,6 @@ gr_cuisine_page_new (void)
return GTK_WIDGET (page);
}
-#if 0
-static gboolean
-unselect (gpointer data)
-{
- GrCuisinePage *self = data;
-
- gtk_list_box_unselect_all (GTK_LIST_BOX (self->sidebar));
-
- return G_SOURCE_REMOVE;
-}
-#endif
void
gr_cuisine_page_set_cuisine (GrCuisinePage *self,
const char *cuisine)
@@ -239,12 +232,18 @@ gr_cuisine_page_set_cuisine (GrCuisinePage *self,
guint length;
int i, j;
gboolean has_recipe = FALSE;
+ const char *description;
+ GtkAdjustment *adj;
if (self->cuisine != cuisine) {
g_free (self->cuisine);
self->cuisine = g_strdup (cuisine);
}
+ gr_cuisine_get_data (cuisine, NULL, NULL, &description);
+ gtk_label_set_label (GTK_LABEL (self->cuisine_label), description);
+ gtk_widget_set_visible (self->cuisine_label, description != NULL);
+
for (i = 0; i < self->n_categories; i++) {
container_remove_all (GTK_CONTAINER (self->categories[i].box));
gtk_widget_hide (self->categories[i].label);
@@ -291,8 +290,18 @@ gr_cuisine_page_set_cuisine (GrCuisinePage *self,
gtk_stack_set_visible_child_name (GTK_STACK (self->stack), has_recipe ? "cuisine" : "empty");
gtk_list_box_invalidate_filter (GTK_LIST_BOX (self->sidebar));
- gtk_list_box_unselect_all (GTK_LIST_BOX (self->sidebar));
- //g_idle_add (unselect, self);
+
+ /* scroll to top */
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scrolled_window));
+ gtk_adjustment_set_value (adj, gtk_adjustment_get_lower (adj));
+
+ /* prevent the row_selected handler from scrolling back to the first category */
+ for (i = 0; i < self->n_categories; i++) {
+ if (self->categories[i].filled) {
+ self->scroll_to_row = gtk_widget_get_ancestor (self->categories[i].item,
GTK_TYPE_LIST_BOX_ROW);
+ break;
+ }
+ }
}
static void
diff --git a/src/gr-cuisine-page.ui b/src/gr-cuisine-page.ui
index 4e1ad65..c7433da 100644
--- a/src/gr-cuisine-page.ui
+++ b/src/gr-cuisine-page.ui
@@ -35,6 +35,16 @@
<property name="margin-start">60</property>
<property name="margin-end">60</property>
<property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="cuisine_label">
+ <property name="visible">1</property>
+ <property name="halign">start</property>
+ <property name="wrap">1</property>
+ <property name="width-chars">85</property>
+ <property name="max-width-chars">85</property>
+ <property name="margin-top">20</property>
+ </object>
+ </child>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]