[recipes/mini-timer: 3/6] Make the cooking overlay not block input



commit 3f6495d34da2af86eae95191afce4ef4695c8970
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Feb 22 22:33:38 2017 -0500

    Make the cooking overlay not block input
    
    The help overlay in cooking mode was blocking input, even
    when it was fully faded out. Avoid that by hiding the
    widget after fadeout.

 src/gr-cooking-page.c  |    9 +++++++++
 src/gr-cooking-page.ui |    2 +-
 2 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/src/gr-cooking-page.c b/src/gr-cooking-page.c
index 8c8d5c1..edf6eec 100644
--- a/src/gr-cooking-page.c
+++ b/src/gr-cooking-page.c
@@ -147,6 +147,13 @@ update_steppers (GrCookingPage *page)
 }
 
 static void
+on_child_revealed (GrCookingPage *page)
+{
+        if (!gtk_revealer_get_reveal_child (GTK_REVEALER (page->overlay_revealer)))
+                    gtk_widget_hide (page->overlay_revealer);
+}
+
+static void
 hide_overlay (gpointer data,
               gboolean fade)
 {
@@ -164,6 +171,7 @@ show_overlay (gpointer data)
 {
         GrCookingPage *page = data;
 
+        gtk_widget_show (page->overlay_revealer);
         gtk_revealer_set_reveal_child (GTK_REVEALER (page->overlay_revealer), TRUE);
 
         return G_SOURCE_REMOVE;
@@ -451,6 +459,7 @@ gr_cooking_page_class_init (GrCookingPageClass *klass)
         gtk_widget_class_bind_template_callback (widget_class, stop_cooking);
         gtk_widget_class_bind_template_callback (widget_class, motion_notify);
         gtk_widget_class_bind_template_callback (widget_class, close_notification);
+        gtk_widget_class_bind_template_callback (widget_class, on_child_revealed);
 }
 
 void
diff --git a/src/gr-cooking-page.ui b/src/gr-cooking-page.ui
index 5255789..31bb491 100644
--- a/src/gr-cooking-page.ui
+++ b/src/gr-cooking-page.ui
@@ -148,11 +148,11 @@
         </child>
         <child type="overlay">
           <object class="GtkRevealer" id="overlay_revealer">
-            <property name="visible">1</property>
             <property name="halign">center</property>
             <property name="valign">center</property>
             <property name="transition-type">crossfade</property>
             <property name="transition-duration">1000</property>
+            <signal name="notify::child-revealed" handler="on_child_revealed" swapped="yes"/>
             <child>
               <object class="GtkGrid" id="cooking_overlay">
                 <property name="visible">1</property>


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