We have to convert the location of the control to screen coordinates
so that we end up with the correct screen in a multi-monitor setup.
This patch fixes Screen.FromControl, Screen.FromHandle, and
Screen.GetWorkingArea.
Change-Id: I6c4fd65833d012e832d97d610c79abc792e57adf
#region Public Static Methods
public static Screen FromControl(Control control) {
- return Screen.FromPoint(control.Location);
+ var point = control.Parent != null ? control.Parent.PointToScreen(control.Location) : control.Location;
+ return Screen.FromPoint(point);
}
public static Screen FromHandle(IntPtr hwnd) {
control = Control.FromHandle(hwnd);
if (control != null) {
- return Screen.FromPoint(control.Location);
+ var point = control.Parent != null ? control.Parent.PointToScreen(control.Location) : control.Location;
+ return Screen.FromPoint(point);
}
return Screen.PrimaryScreen;
}