[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