개정판 f44e0cd0
issue #000: MARKUS를 드래그하여 모니터 상단으로 이동 후 드랍하면 작업 표시줄을 가리는 현상 수정
Change-Id: I1449f5bd6475b733966697923f2fdc40ecbee976
KCOM/MainWindow.xaml.cs | ||
---|---|---|
90 | 90 |
private void MainWindow_Loaded(object sender, RoutedEventArgs e) |
91 | 91 |
{ |
92 | 92 |
InitializeComponent(); |
93 |
|
|
93 |
//Loaded 이벤트에서 MaxHeight를 설정 모니터가 1개일때만 |
|
94 |
//MaxHeight = SystemParameters.WorkArea.Height; |
|
95 |
//LocationChanged : 모니터가 2개 이상이고, 모니터의 해상도가 다를 때에 설정 |
|
96 |
this.LocationChanged += Window_LocationChanged; |
|
94 | 97 |
//cursor change |
95 | 98 |
this.Cursor = new Cursor(App.DefaultArrowCursorStream); |
96 | 99 |
|
... | ... | |
173 | 176 |
} |
174 | 177 |
} |
175 | 178 |
} |
176 |
|
|
179 |
/// <summary> |
|
180 |
/// 멤버 변수로 현 사용자의 모든 모니터들의 상태를 가져온다. |
|
181 |
/// Window의 LocationChanged Event를 통해 Window가 이동할 때마다 어떤 모니터에 있는지를 확인 |
|
182 |
/// Window가 어떤 모니터에 있는지의 기준은 각 Window의 중앙 부분 |
|
183 |
/// Sum 은 모니터들의 왼쪽 끝 부터 오른쪽 끝까지의 합 |
|
184 |
/// 현재 Window의 중앙은 Left 값 + Width의 반 |
|
185 |
/// um보다 작다면 현재 더하게 된 Screen 안에 있다는 뜻이므로 현재 더한 item의 WorkingArea의 Height를MaxHeight로 설정 |
|
186 |
/// </summary> |
|
187 |
System.Windows.Forms.Screen[] screens = System.Windows.Forms.Screen.AllScreens; |
|
188 |
private void Window_LocationChanged(object sender, EventArgs e) |
|
189 |
{ |
|
190 |
int sum = 0; |
|
191 |
foreach (var item in screens) |
|
192 |
{ |
|
193 |
sum += item.WorkingArea.Width; |
|
194 |
if (sum >= this.Left + this.Width / 2) |
|
195 |
{ |
|
196 |
this.MaxHeight = item.WorkingArea.Height; |
|
197 |
this.WindowState = WindowState.Normal; |
|
198 |
this.CustomState = WindowState.Maximized; |
|
199 |
break; |
|
200 |
} |
|
201 |
} |
|
202 |
} |
|
203 |
|
|
177 | 204 |
private Point GetScreenCenter() |
178 | 205 |
{ |
179 | 206 |
Point result = new Point(); |
내보내기 Unified diff