[libhandy/wip/exalm/leaflet-transltions: 8/10] deck: Add child-visible-changed signal
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libhandy/wip/exalm/leaflet-transltions: 8/10] deck: Add child-visible-changed signal
- Date: Tue, 16 Jun 2020 12:50:00 +0000 (UTC)
commit 5825718144cf34c127463b2a81d9e487097ab223
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Fri May 29 01:02:30 2020 +0500
deck: Add child-visible-changed signal
Expose the new HdyStackableBox signal.
Signed-off-by: Alexander Mikhaylenko <alexm gnome org>
src/hdy-deck.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
---
diff --git a/src/hdy-deck.c b/src/hdy-deck.c
index 8fcdd48f..2d8bd555 100644
--- a/src/hdy-deck.c
+++ b/src/hdy-deck.c
@@ -67,6 +67,11 @@ enum {
LAST_CHILD_PROP,
};
+enum {
+ SIGNAL_CHILD_VISIBLE_CHANGED,
+ SIGNAL_LAST_SIGNAL,
+};
+
typedef struct
{
HdyStackableBox *box;
@@ -74,6 +79,7 @@ typedef struct
static GParamSpec *props[LAST_PROP];
static GParamSpec *child_props[LAST_CHILD_PROP];
+static guint signals[SIGNAL_LAST_SIGNAL];
static void hdy_deck_swipeable_init (HdySwipeableInterface *iface);
@@ -1027,6 +1033,27 @@ hdy_deck_class_init (HdyDeckClass *klass)
gtk_container_class_install_child_properties (container_class, LAST_CHILD_PROP, child_props);
+ /**
+ * HdyDeck::child-visible-changed:
+ * @self: The #HdyDeck instance
+ * @child: The child
+ * @visible: The new value
+ *
+ * This signal is emitted after a child has been shown or hidden.
+ *
+ * Since: 1.0
+ */
+ signals[SIGNAL_CHILD_VISIBLE_CHANGED] =
+ g_signal_new ("child-visible-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 2,
+ GTK_TYPE_WIDGET,
+ G_TYPE_BOOLEAN);
+
gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_PANEL);
gtk_widget_class_set_css_name (widget_class, "deck");
}
@@ -1060,6 +1087,18 @@ notify_orientation_cb (HdyDeck *self)
g_object_notify (G_OBJECT (self), "orientation");
}
+static void
+child_visible_changed_cb (HdyDeck *self,
+ GtkWidget *child,
+ gboolean visible)
+{
+ g_signal_emit (G_OBJECT (self),
+ signals[SIGNAL_CHILD_VISIBLE_CHANGED],
+ 0,
+ child,
+ visible);
+}
+
static void
hdy_deck_init (HdyDeck *self)
{
@@ -1080,6 +1119,7 @@ hdy_deck_init (HdyDeck *self)
g_signal_connect_object (priv->box, "notify::can-swipe-back", G_CALLBACK (notify_can_swipe_back_cb), self,
G_CONNECT_SWAPPED);
g_signal_connect_object (priv->box, "notify::can-swipe-forward", G_CALLBACK (notify_can_swipe_forward_cb),
self, G_CONNECT_SWAPPED);
g_signal_connect_object (priv->box, "notify::orientation", G_CALLBACK (notify_orientation_cb), self,
G_CONNECT_SWAPPED);
+ g_signal_connect_object (priv->box, "child-visible-changed", G_CALLBACK (child_visible_changed_cb), self,
G_CONNECT_SWAPPED);
/*
* HACK: GTK3 has no other way to get events on capture phase.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]