static bool WindowsShareViewport(Wnck.Window first, Wnck.Window second) { if (first == null || second == null) { return(false); } Wnck.Workspace wksp = first.Workspace ?? second.Workspace; if (wksp == null) { return(false); } Gdk.Rectangle firstGeo, secondGeo; first.GetGeometry(out firstGeo.X, out firstGeo.Y, out firstGeo.Width, out firstGeo.Height); second.GetGeometry(out secondGeo.X, out secondGeo.Y, out secondGeo.Width, out secondGeo.Height); firstGeo.X += wksp.ViewportX; firstGeo.Y += wksp.ViewportY; secondGeo.X += wksp.ViewportX; secondGeo.Y += wksp.ViewportY; int viewportWidth, viewportHeight; viewportWidth = first.Screen.Width; viewportHeight = first.Screen.Height; int firstViewportX = ((firstGeo.X + firstGeo.Width / 2) / viewportWidth) * viewportWidth; int firstViewportY = ((firstGeo.Y + firstGeo.Height / 2) / viewportHeight) * viewportHeight; Gdk.Rectangle viewpRect = new Gdk.Rectangle(firstViewportX, firstViewportY, viewportWidth, viewportHeight); return(viewpRect.IntersectsWith(secondGeo)); }
public static Gdk.Rectangle EasyGeometry(this Wnck.Window self) { Gdk.Rectangle geo; self.GetGeometry(out geo.X, out geo.Y, out geo.Width, out geo.Height); return(geo); }