diff --git a/demos/widget-factory/widget-factory.c b/demos/widget-factory/widget-factory.c
index 2541ccda19..9f93a29025 100644
--- a/demos/widget-factory/widget-factory.c
+++ b/demos/widget-factory/widget-factory.c
@@ -1217,6 +1217,15 @@ populate_popup (GtkTextView *tv,
add_item (tv, popup, "Underline", "underline", all_underline);
}
+static void
+open_popover_text_changed (GtkEntry *entry, GParamSpec *pspec, GtkWidget *button)
+{
+ const gchar *text;
+
+ text = gtk_entry_get_text (entry);
+ gtk_widget_set_sensitive (button, strlen (text) > 0);
+}
+
static void
activate (GApplication *app)
{
@@ -1424,6 +1433,13 @@ activate (GApplication *app)
g_signal_connect (widget, "populate-popup",
G_CALLBACK (populate_popup), NULL);
+ widget = (GtkWidget *)gtk_builder_get_object (builder, "open_popover");
+ widget2 = (GtkWidget *)gtk_builder_get_object (builder, "open_popover_entry");
+ widget3 = (GtkWidget *)gtk_builder_get_object (builder, "open_popover_button");
+ gtk_popover_set_default_widget (GTK_POPOVER (widget), widget3);
+ g_signal_connect (widget2, "notify::text", G_CALLBACK (open_popover_text_changed), widget3);
+ g_signal_connect_swapped (widget3, "clicked", G_CALLBACK (gtk_widget_hide), widget);
+
gtk_widget_show_all (GTK_WIDGET (window));
g_object_unref (builder);
diff --git a/demos/widget-factory/widget-factory.ui b/demos/widget-factory/widget-factory.ui
index c9f6b440ae..31a110b42c 100644
--- a/demos/widget-factory/widget-factory.ui
+++ b/demos/widget-factory/widget-factory.ui
@@ -2893,9 +2893,10 @@ microphone-sensitivity-medium-symbolic
start
6
-
+
+
+