[gtk/present-toplevel-2: 5/79] toplevel: add state property



commit 6256e94650b40c288a4cc322103280a463be018f
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Feb 29 20:31:31 2020 -0500

    toplevel: add state property

 gdk/gdktoplevel.c        | 39 +++++++++++++++++++++++++++++++++++++++
 gdk/gdktoplevel.h        |  3 +++
 gdk/gdktoplevelprivate.h |  8 ++++++++
 3 files changed, 50 insertions(+)
---
diff --git a/gdk/gdktoplevel.c b/gdk/gdktoplevel.c
index c4155e860f..d284994028 100644
--- a/gdk/gdktoplevel.c
+++ b/gdk/gdktoplevel.c
@@ -19,6 +19,8 @@
 
 #include "config.h"
 
+#include "gdkintl.h"
+#include "gdk-private.h"
 #include "gdktoplevelprivate.h"
 
 /**
@@ -48,6 +50,22 @@ static void
 gdk_toplevel_default_init (GdkToplevelInterface *iface)
 {
   iface->present = gdk_toplevel_default_present;
+
+  g_object_interface_install_property (iface,
+      g_param_spec_flags ("state",
+                          P_("State"),
+                          P_("State"),
+                          GDK_TYPE_SURFACE_STATE, GDK_SURFACE_STATE_WITHDRAWN,
+                          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+}
+
+guint
+gdk_toplevel_install_properties (GObjectClass *object_class,
+                                 guint         first_prop)
+{
+  g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_STATE, "state");
+
+  return GDK_TOPLEVEL_NUM_PROPERTIES;
 }
 
 /**
@@ -78,3 +96,24 @@ gdk_toplevel_present (GdkToplevel       *toplevel,
 
   return GDK_TOPLEVEL_GET_IFACE (toplevel)->present (toplevel, width, height, layout);
 }
+
+/**
+ * gdk_toplevel_get_state:
+ * @toplevel: a #GdkToplevel
+ *
+ * Gets the bitwise OR of the currently active surface state flags,
+ * from the #GdkSurfaceState enumeration.
+ *
+ * Returns: surface state bitfield
+ */
+GdkSurfaceState
+gdk_toplevel_get_state (GdkToplevel *toplevel)
+{
+  GdkSurfaceState state;
+
+  g_return_val_if_fail (GDK_IS_TOPLEVEL (toplevel), 0);
+
+  g_object_get (toplevel, "state", &state, NULL);
+
+  return state;
+}
diff --git a/gdk/gdktoplevel.h b/gdk/gdktoplevel.h
index eeb01582aa..6a10c4af22 100644
--- a/gdk/gdktoplevel.h
+++ b/gdk/gdktoplevel.h
@@ -40,6 +40,9 @@ gboolean        gdk_toplevel_present            (GdkToplevel       *toplevel,
                                                  int                height,
                                                  GdkToplevelLayout *layout);
 
+GDK_AVAILABLE_IN_ALL
+GdkSurfaceState gdk_toplevel_get_state          (GdkToplevel       *toplevel);
+
 G_END_DECLS
 
 #endif /* __GDK_TOPLEVEL_H__ */
diff --git a/gdk/gdktoplevelprivate.h b/gdk/gdktoplevelprivate.h
index bfa81c4282..fbf751e3fa 100644
--- a/gdk/gdktoplevelprivate.h
+++ b/gdk/gdktoplevelprivate.h
@@ -16,6 +16,14 @@ struct _GdkToplevelInterface
                                          GdkToplevelLayout *layout);
 };
 
+typedef enum {
+  GDK_TOPLEVEL_PROP_STATE,
+  GDK_TOPLEVEL_NUM_PROPERTIES
+} GdkToplevelProperties;
+
+guint gdk_toplevel_install_properties (GObjectClass *object_class,
+                                       guint         first_prop);
+
 G_END_DECLS
 
 #endif /* __GDK_TOPLEVEL_PRIVATE_H__ */


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