using System;
using System.Drawing;
// The 'windowHandle' parameter will contain the window handle for the:
// - Active window when run by hotkey
// - Window Location target when run by a Window Location rule
// - TitleBar Button owner when run by a TitleBar Button
// - Jump List owner when run from a Taskbar Jump List
// - Currently focused window if none of these match
public static class DisplayFusionFunction
{
public static void Run(IntPtr windowHandle)
{
// If we failed to get the focused window, exit the function
if (windowHandle == IntPtr.Zero)
return;
// Get the bounds for the window, and the monitor it's in
Rectangle windowRect = BFS.Window.GetBounds(windowHandle);
Rectangle monitorRect = BFS.Monitor.GetMonitorWorkAreaByWindow(windowHandle);
// Set the new 50% width, 100% height values
int newWindowWidth = monitorRect.Width / 2;
int newWindowHeight = monitorRect.Height;
// Find the space on either side of the window
int leftSpace = windowRect.X - monitorRect.X;
int rightSpace = monitorRect.Width - (windowRect.X - monitorRect.X) - windowRect.Width;
// If the leftspace is smaller, it is on the left side of monitor.
// Move it to the right
if (leftSpace < rightSpace)
{
BFS.Window.SetSizeAndLocation(windowHandle, (monitorRect.X + (monitorRect.Width / 2)), monitorRect.Y, newWindowWidth, newWindowHeight);
return;
}
// If we got this far, window is on the right
// Move it to the left
BFS.Window.SetSizeAndLocation(windowHandle, monitorRect.X, monitorRect.Y, newWindowWidth, newWindowHeight);
}
}