|
1 |
| -using System; |
| 1 | +using System; |
2 | 2 | using System.ComponentModel;
|
3 | 3 | using System.Linq;
|
4 | 4 | using System.Media;
|
|
30 | 30 | using Key = System.Windows.Input.Key;
|
31 | 31 | using MouseButtons = System.Windows.Forms.MouseButtons;
|
32 | 32 | using NotifyIcon = System.Windows.Forms.NotifyIcon;
|
33 |
| -using Screen = System.Windows.Forms.Screen; |
34 | 33 |
|
35 | 34 | namespace Flow.Launcher
|
36 | 35 | {
|
@@ -532,7 +531,7 @@ private void OnMouseDown(object sender, MouseButtonEventArgs e)
|
532 | 531 | double yRatio = mousePos.Y / maxHeight;
|
533 | 532 |
|
534 | 533 | // Current monitor information
|
535 |
| - var screen = Screen.FromHandle(new WindowInteropHelper(this).Handle); |
| 534 | + var screen = MonitorInfo.GetNearestDisplayMonitor(new WindowInteropHelper(this).Handle); |
536 | 535 | var workingArea = screen.WorkingArea;
|
537 | 536 | var screenLeftTop = Win32Helper.TransformPixelsToDIP(this, workingArea.X, workingArea.Y);
|
538 | 537 |
|
@@ -954,67 +953,67 @@ private void GetDpi(out double dpiX, out double dpiY)
|
954 | 953 | }
|
955 | 954 | }
|
956 | 955 |
|
957 |
| - private Screen SelectedScreen() |
| 956 | + private MonitorInfo SelectedScreen() |
958 | 957 | {
|
959 |
| - Screen screen; |
| 958 | + MonitorInfo screen; |
960 | 959 | switch (_settings.SearchWindowScreen)
|
961 | 960 | {
|
962 | 961 | case SearchWindowScreens.Cursor:
|
963 |
| - screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); |
964 |
| - break; |
965 |
| - case SearchWindowScreens.Primary: |
966 |
| - screen = Screen.PrimaryScreen; |
| 962 | + screen = MonitorInfo.GetCursorDisplayMonitor(); |
967 | 963 | break;
|
968 | 964 | case SearchWindowScreens.Focus:
|
969 |
| - var foregroundWindowHandle = Win32Helper.GetForegroundWindow(); |
970 |
| - screen = Screen.FromHandle(foregroundWindowHandle); |
| 965 | + screen = MonitorInfo.GetNearestDisplayMonitor(Win32Helper.GetForegroundWindow()); |
| 966 | + break; |
| 967 | + case SearchWindowScreens.Primary: |
| 968 | + screen = MonitorInfo.GetPrimaryDisplayMonitor(); |
971 | 969 | break;
|
972 | 970 | case SearchWindowScreens.Custom:
|
973 |
| - if (_settings.CustomScreenNumber <= Screen.AllScreens.Length) |
974 |
| - screen = Screen.AllScreens[_settings.CustomScreenNumber - 1]; |
| 971 | + var allScreens = MonitorInfo.GetDisplayMonitors(); |
| 972 | + if (_settings.CustomScreenNumber <= allScreens.Count) |
| 973 | + screen = allScreens[_settings.CustomScreenNumber - 1]; |
975 | 974 | else
|
976 |
| - screen = Screen.AllScreens[0]; |
| 975 | + screen = allScreens[0]; |
977 | 976 | break;
|
978 | 977 | default:
|
979 |
| - screen = Screen.AllScreens[0]; |
| 978 | + screen = MonitorInfo.GetDisplayMonitors()[0]; |
980 | 979 | break;
|
981 | 980 | }
|
982 | 981 |
|
983 |
| - return screen ?? Screen.AllScreens[0]; |
| 982 | + return screen ?? MonitorInfo.GetDisplayMonitors()[0]; |
984 | 983 | }
|
985 | 984 |
|
986 |
| - private double HorizonCenter(Screen screen) |
| 985 | + private double HorizonCenter(MonitorInfo screen) |
987 | 986 | {
|
988 | 987 | var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
|
989 | 988 | var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0);
|
990 | 989 | var left = (dip2.X - ActualWidth) / 2 + dip1.X;
|
991 | 990 | return left;
|
992 | 991 | }
|
993 | 992 |
|
994 |
| - private double VerticalCenter(Screen screen) |
| 993 | + private double VerticalCenter(MonitorInfo screen) |
995 | 994 | {
|
996 | 995 | var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y);
|
997 | 996 | var dip2 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Height);
|
998 | 997 | var top = (dip2.Y - QueryTextBox.ActualHeight) / 4 + dip1.Y;
|
999 | 998 | return top;
|
1000 | 999 | }
|
1001 | 1000 |
|
1002 |
| - private double HorizonRight(Screen screen) |
| 1001 | + private double HorizonRight(MonitorInfo screen) |
1003 | 1002 | {
|
1004 | 1003 | var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
|
1005 | 1004 | var dip2 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0);
|
1006 | 1005 | var left = (dip1.X + dip2.X - ActualWidth) - 10;
|
1007 | 1006 | return left;
|
1008 | 1007 | }
|
1009 | 1008 |
|
1010 |
| - private double HorizonLeft(Screen screen) |
| 1009 | + private double HorizonLeft(MonitorInfo screen) |
1011 | 1010 | {
|
1012 | 1011 | var dip1 = Win32Helper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0);
|
1013 | 1012 | var left = dip1.X + 10;
|
1014 | 1013 | return left;
|
1015 | 1014 | }
|
1016 | 1015 |
|
1017 |
| - public double VerticalTop(Screen screen) |
| 1016 | + private double VerticalTop(MonitorInfo screen) |
1018 | 1017 | {
|
1019 | 1018 | var dip1 = Win32Helper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y);
|
1020 | 1019 | var top = dip1.Y + 10;
|
|
0 commit comments