2121using StickyHomeworks . ViewModels ;
2222using StickyHomeworks . Views ;
2323using System . Windows . Automation ;
24+ using System . Windows . Forms ;
2425
2526namespace StickyHomeworks ;
2627
@@ -71,7 +72,7 @@ private void OnFocusChangedHandler(object sender, AutomationFocusChangedEventArg
7172 if ( proc . Id != Environment . ProcessId &&
7273 ! new List < string > ( [ "ctfmon" , "textinputhost" , "chsime" ] ) . Contains ( proc . ProcessName . ToLower ( ) ) )
7374 {
74- Dispatcher . Invoke ( ExitEditingMode ) ;
75+ Dispatcher . Invoke ( ( ) => ExitEditingMode ( ) ) ;
7576 }
7677 }
7778 catch
@@ -80,9 +81,10 @@ private void OnFocusChangedHandler(object sender, AutomationFocusChangedEventArg
8081 }
8182 }
8283
83- private void ExitEditingMode ( )
84+ private void ExitEditingMode ( bool hard = true )
8485 {
85- MainListView . SelectedIndex = - 1 ;
86+ if ( hard )
87+ MainListView . SelectedIndex = - 1 ;
8688 ViewModel . IsDrawerOpened = false ;
8789 AppEx . GetService < HomeworkEditWindow > ( ) . TryClose ( ) ;
8890 }
@@ -140,6 +142,8 @@ private void OnSubjectChanged(object? sender, EventArgs e)
140142 return ;
141143 if ( ViewModel . SelectedHomework == null )
142144 return ;
145+ if ( ! ViewModel . IsDrawerOpened )
146+ return ;
143147 ViewModel . IsUpdatingHomeworkSubject = true ;
144148 var s = ViewModel . SelectedHomework ;
145149 ProfileService . Profile . Homeworks . Remove ( s ) ;
@@ -171,6 +175,8 @@ private void ButtonCreateHomework_OnClick(object sender, RoutedEventArgs e)
171175 SettingsService . SaveSettings ( ) ;
172176 ProfileService . SaveProfile ( ) ;
173177 ViewModel . IsUpdatingHomeworkSubject = false ;
178+ RepositionEditingWindow ( ) ;
179+ AppEx . GetService < HomeworkEditWindow > ( ) . TryOpen ( ) ;
174180 }
175181
176182 private void ButtonAddHomeworkCompleted_OnClick ( object sender , RoutedEventArgs e )
@@ -251,14 +257,15 @@ private void ButtonEditHomework_OnClick(object sender, RoutedEventArgs e)
251257
252258 private void RepositionEditingWindow ( )
253259 {
254- if ( ViewModel . SelectedListBoxItem != null )
255- {
256- Debug . WriteLine ( "selected changed" ) ;
257- GetCurrentDpi ( out var dpiX , out var dpiY ) ;
258- var p = ViewModel . SelectedListBoxItem . PointToScreen ( new Point ( ViewModel . SelectedListBoxItem . ActualWidth , 0 ) ) ;
259- AppEx . GetService < HomeworkEditWindow > ( ) . Left = p . X / dpiX ;
260- AppEx . GetService < HomeworkEditWindow > ( ) . Top = p . Y / dpiY ;
261- }
260+ if ( ViewModel . SelectedListBoxItem == null )
261+ return ;
262+ Debug . WriteLine ( "selected changed" ) ;
263+ GetCurrentDpi ( out var dpiX , out var dpiY ) ;
264+ var p = ViewModel . SelectedListBoxItem . PointToScreen ( new Point ( ViewModel . SelectedListBoxItem . ActualWidth , 0 ) ) ;
265+ var screen = Screen . PrimaryScreen ! . WorkingArea ;
266+ var homeworkEditWindow = AppEx . GetService < HomeworkEditWindow > ( ) ;
267+ homeworkEditWindow . Left = p . X / dpiX ;
268+ homeworkEditWindow . Top = Math . Min ( p . Y , screen . Bottom - homeworkEditWindow . ActualHeight * dpiY ) / dpiY ;
262269 }
263270
264271 private void ButtonRemoveHomework_OnClick ( object sender , RoutedEventArgs e )
@@ -413,6 +420,6 @@ private void ButtonMore_Click(object sender, RoutedEventArgs e)
413420
414421 private void MainListView_OnSelectionChanged ( object sender , SelectionChangedEventArgs e )
415422 {
416- RepositionEditingWindow ( ) ;
423+ ExitEditingMode ( false ) ;
417424 }
418425}
0 commit comments