[gtk+] gdk: Add a GdkWindow::state property
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gdk: Add a GdkWindow::state property
- Date: Fri, 15 Dec 2017 03:55:45 +0000 (UTC)
commit e5b18671185178103ca0c0cbb4ec45ed32bd94e5
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Dec 14 18:51:38 2017 -0500
gdk: Add a GdkWindow::state property
This will eventually replace the window state event.
gdk/gdkevents.c | 1 +
gdk/gdkwindow.c | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index db702b2..32da413 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -2013,6 +2013,7 @@ _gdk_set_window_state (GdkWindow *window,
case GDK_WINDOW_TOPLEVEL:
case GDK_WINDOW_TEMP: /* ? */
gdk_display_put_event (display, temp_event);
+ g_object_notify (G_OBJECT (window), "state");
break;
case GDK_WINDOW_FOREIGN:
case GDK_WINDOW_ROOT:
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index e6f9fa3..931079d 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -100,6 +100,7 @@ enum {
PROP_0,
PROP_CURSOR,
PROP_DISPLAY,
+ PROP_STATE,
LAST_PROP
};
@@ -275,6 +276,13 @@ gdk_window_class_init (GdkWindowClass *klass)
GDK_TYPE_DISPLAY,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+ properties[PROP_STATE] =
+ g_param_spec_flags ("state",
+ P_("State"),
+ P_("State"),
+ GDK_TYPE_WINDOW_STATE, GDK_WINDOW_STATE_WITHDRAWN,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, LAST_PROP, properties);
/**
@@ -435,6 +443,10 @@ gdk_window_get_property (GObject *object,
g_value_set_object (value, window->display);
break;
+ case PROP_STATE:
+ g_value_set_flags (value, window->state);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1345,6 +1357,8 @@ _gdk_window_destroy_hierarchy (GdkWindow *window,
cairo_region_destroy (window->clip_region);
window->clip_region = NULL;
}
+
+ g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_STATE]);
}
break;
}
@@ -3343,6 +3357,7 @@ gdk_window_show_internal (GdkWindow *window, gboolean raise)
else
{
window->state = 0;
+ g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_STATE]);
}
did_show = _gdk_window_update_viewable (window);
@@ -3622,7 +3637,10 @@ gdk_window_hide (GdkWindow *window)
GDK_WINDOW_STATE_WITHDRAWN);
}
else if (was_mapped)
- window->state = GDK_WINDOW_STATE_WITHDRAWN;
+ {
+ window->state = GDK_WINDOW_STATE_WITHDRAWN;
+ g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_STATE]);
+ }
if (was_mapped)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]