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)
{
//check to see if there was an error, if there was, exit function
if (windowHandle == IntPtr.Zero)
return;
//get the position of the window in the monitor, and the current monitor
Rectangle windowRect = BFS.Window.GetBounds(windowHandle);
Rectangle monitorRect = BFS.Monitor.GetMonitorBoundsByWindow(windowHandle);
//if the window is maximized, move it to the left half of the monitor
if(BFS.Window.IsMaximized(windowHandle))
{
BFS.Window.MoveToLeftMonitorHalf(windowHandle);
return;
}
//if the top-left corner of the window is at the far left, but the window is
// more than 50% of the monitor width, just set it back to 50%
if ((windowRect.X == monitorRect.X) && (windowRect.Width > (monitorRect.Width / 2)))
{
BFS.Window.MoveToLeftMonitorHalf(windowHandle);
return;
}
//if the top-left corner of the window is further right than the top-left corner
// of the monitor, move it to the left half of the monitor
if (windowRect.X > monitorRect.X)
{
BFS.Window.MoveToLeftMonitorHalf(windowHandle);
return;
}
//if we got this far then the window is on the left
//move the window to the previous monitor
BFS.Window.MoveToPreviousMonitor(windowHandle);
//move the window to the right side
BFS.Window.MoveToRightMonitorHalf(windowHandle);
}
}