diff options
author | Matthias Clasen <mclasen@redhat.com> | 2017-11-28 22:36:17 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2017-11-28 22:36:17 -0500 |
commit | 2287e936f38155aef7a40453c300a0a7fd94a8af (patch) | |
tree | d86a802006acfca9e45574a179b09b2d3a2f329e | |
parent | 0dfe12fab0dabb977754d21f4740ae476a54e6eb (diff) | |
download | gtk+-2287e936f38155aef7a40453c300a0a7fd94a8af.tar.gz |
gdk: Add ::enter/leave-monitor signals
These are useful to keep track of what monitors a window is on.
-rw-r--r-- | gdk/gdkinternals.h | 5 | ||||
-rw-r--r-- | gdk/gdkwindow.c | 40 |
2 files changed, 45 insertions, 0 deletions
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 15913d88ba..dff0b1ac4c 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -385,6 +385,11 @@ cairo_region_t *gdk_window_get_current_paint_region (GdkWindow *window); void _gdk_window_process_updates_recurse (GdkWindow *window, cairo_region_t *expose_region); +void gdk_window_enter_monitor (GdkWindow *window, + GdkMonitor *monitor); +void gdk_window_leave_monitor (GdkWindow *window, + GdkMonitor *monitor); + /***************************************** * Interfaces provided by windowing code * *****************************************/ diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 31ff1e4ea0..d661deeadb 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -93,6 +93,8 @@ enum { MOVED_TO_RECT, + ENTER_MONITOR, + LEAVE_MONITOR, LAST_SIGNAL }; @@ -316,6 +318,30 @@ gdk_window_class_init (GdkWindowClass *klass) G_TYPE_POINTER, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); + + signals[ENTER_MONITOR] = + g_signal_new (g_intern_static_string ("enter-monitor"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + NULL, + G_TYPE_NONE, + 1, + GDK_TYPE_MONITOR); + + signals[LEAVE_MONITOR] = + g_signal_new (g_intern_static_string ("leave-monitor"), + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + NULL, + G_TYPE_NONE, + 1, + GDK_TYPE_MONITOR); } static void @@ -7446,3 +7472,17 @@ gdk_window_supports_edge_constraints (GdkWindow *window) else return FALSE; } + +void +gdk_window_enter_monitor (GdkWindow *window, + GdkMonitor *monitor) +{ + g_signal_emit (window, signals[ENTER_MONITOR], 0, monitor); +} + +void +gdk_window_leave_monitor (GdkWindow *window, + GdkMonitor *monitor) +{ + g_signal_emit (window, signals[LEAVE_MONITOR], 0, monitor); +} |