[Xfce4-commits] [apps/xfdashboard] 01/02: Add utility function to check if a position is a specific monitor

noreply at xfce.org noreply at xfce.org
Wed Jul 20 08:33:05 CEST 2016


This is an automated email from the git hooks/post-receive script.

nomad pushed a commit to branch master
in repository apps/xfdashboard.

commit b189c943ac11c25ce61cc9f6e1759dccd1159806
Author: Stephan Haller <nomad at froevel.de>
Date:   Wed Jul 20 08:18:16 2016 +0200

    Add utility function to check if a position is a specific monitor
---
 libxfdashboard/window-tracker-monitor.c | 26 ++++++++++++++++++++++++
 libxfdashboard/window-tracker-monitor.h |  4 ++++
 libxfdashboard/window-tracker.c         | 35 +++++++++++++++++++++++++++++++++
 libxfdashboard/window-tracker.h         |  3 +++
 4 files changed, 68 insertions(+)

diff --git a/libxfdashboard/window-tracker-monitor.c b/libxfdashboard/window-tracker-monitor.c
index bc4d796..1cde792 100644
--- a/libxfdashboard/window-tracker-monitor.c
+++ b/libxfdashboard/window-tracker-monitor.c
@@ -432,3 +432,29 @@ void xfdashboard_window_tracker_monitor_get_geometry(XfdashboardWindowTrackerMon
 	if(outWidth) *outWidth=priv->geometry.width;
 	if(outHeight) *outHeight=priv->geometry.height;
 }
+
+/* Check if requested position is inside monitor's geometry */
+gboolean xfdashboard_window_tracker_monitor_contains(XfdashboardWindowTrackerMonitor *self,
+														gint inX,
+														gint inY)
+{
+	XfdashboardWindowTrackerMonitorPrivate		*priv;
+
+	g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_MONITOR(self), FALSE);
+
+	priv=self->priv;
+
+	/* Check if requested position is inside monitor's geometry */
+	if(inX>=priv->geometry.x &&
+		inX<(priv->geometry.x+priv->geometry.width) &&
+		inY>=priv->geometry.y &&
+		inY<(priv->geometry.y+priv->geometry.height))
+	{
+		return(TRUE);
+	}
+
+	/* If we get here the requested position is not inside this monitor's geometry,
+	 * so return FALSE.
+	 */
+	return(FALSE);
+}
diff --git a/libxfdashboard/window-tracker-monitor.h b/libxfdashboard/window-tracker-monitor.h
index 10b9452..5bcf26d 100644
--- a/libxfdashboard/window-tracker-monitor.h
+++ b/libxfdashboard/window-tracker-monitor.h
@@ -88,6 +88,10 @@ void xfdashboard_window_tracker_monitor_get_geometry(XfdashboardWindowTrackerMon
 														gint *outWidth,
 														gint *outHeight);
 
+gboolean xfdashboard_window_tracker_monitor_contains(XfdashboardWindowTrackerMonitor *self,
+														gint inX,
+														gint inY);
+
 G_END_DECLS
 
 #endif	/* __LIBXFDASHBOARD_WINDOW_TRACKER_MONITOR__ */
diff --git a/libxfdashboard/window-tracker.c b/libxfdashboard/window-tracker.c
index 7275db5..c54cfdc 100644
--- a/libxfdashboard/window-tracker.c
+++ b/libxfdashboard/window-tracker.c
@@ -1487,6 +1487,41 @@ XfdashboardWindowTrackerMonitor* xfdashboard_window_tracker_get_primary_monitor(
 	return(self->priv->primaryMonitor);
 }
 
+/* Get monitor at requested position */
+XfdashboardWindowTrackerMonitor* xfdashboard_window_tracker_get_monitor_by_position(XfdashboardWindowTracker *self,
+																					gint inX,
+																					gint inY)
+{
+	XfdashboardWindowTrackerPrivate		*priv;
+	GList								*iter;
+	XfdashboardWindowTrackerMonitor		*monitor;
+
+	g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(self), NULL);
+
+	priv=self->priv;
+
+	/* Iterate through monitors and return the one containing the requested position */
+	for(iter=priv->monitors; iter; iter=g_list_next(iter))
+	{
+		/* Get monitor at iterator */
+		monitor=XFDASHBOARD_WINDOW_TRACKER_MONITOR(iter->data);
+		if(!monitor) continue;
+
+		/* Check if this monitor contains the requested position. If it does
+		 * then return it.
+		 */
+		if(xfdashboard_window_tracker_monitor_contains(monitor, inX, inY))
+		{
+			return(monitor);
+		}
+	}
+
+	/* If we get here none of the monitors contains the requested position,
+	 * so return NULL here.
+	 */
+	return(NULL);
+}
+
 /* Get width of screen */
 gint xfdashboard_window_tracker_get_screen_width(XfdashboardWindowTracker *self)
 {
diff --git a/libxfdashboard/window-tracker.h b/libxfdashboard/window-tracker.h
index 966cacc..d3d1122 100644
--- a/libxfdashboard/window-tracker.h
+++ b/libxfdashboard/window-tracker.h
@@ -130,6 +130,9 @@ GList* xfdashboard_window_tracker_get_monitors(XfdashboardWindowTracker *self);
 XfdashboardWindowTrackerMonitor* xfdashboard_window_tracker_get_monitor_by_number(XfdashboardWindowTracker *self,
 																					gint inNumber);
 XfdashboardWindowTrackerMonitor* xfdashboard_window_tracker_get_primary_monitor(XfdashboardWindowTracker *self);
+XfdashboardWindowTrackerMonitor* xfdashboard_window_tracker_get_monitor_by_position(XfdashboardWindowTracker *self,
+																					gint inX,
+																					gint inY);
 
 gint xfdashboard_window_tracker_get_screen_width(XfdashboardWindowTracker *self);
 gint xfdashboard_window_tracker_get_screen_height(XfdashboardWindowTracker *self);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list