@@ -106,7 +106,7 @@ private void OnSourceInitialized(object sender, EventArgs e)
106106 Win32Helper . DisableControlBox ( this ) ;
107107 }
108108
109- private async void OnLoaded ( object sender , RoutedEventArgs e )
109+ private void OnLoaded ( object sender , RoutedEventArgs e )
110110 {
111111 // Check first launch
112112 if ( _settings . FirstLaunch )
@@ -715,38 +715,46 @@ private async Task PositionResetAsync()
715715
716716 private void InitializePosition ( )
717717 {
718- if ( _settings . SearchWindowScreen == SearchWindowScreens . RememberLastLaunchLocation )
719- {
720- Top = _settings . WindowTop ;
721- Left = _settings . WindowLeft ;
722- }
723- else
718+ // Initialize call twice to work around multi-display alignment issue- https://github.com/Flow-Launcher/Flow.Launcher/issues/2910
719+ InitializePositionInner ( ) ;
720+ InitializePositionInner ( ) ;
721+ return ;
722+
723+ void InitializePositionInner ( )
724724 {
725- var screen = SelectedScreen ( ) ;
726- switch ( _settings . SearchWindowAlign )
725+ if ( _settings . SearchWindowScreen == SearchWindowScreens . RememberLastLaunchLocation )
727726 {
728- case SearchWindowAligns . Center :
729- Left = HorizonCenter ( screen ) ;
730- Top = VerticalCenter ( screen ) ;
731- break ;
732- case SearchWindowAligns . CenterTop :
733- Left = HorizonCenter ( screen ) ;
734- Top = 10 ;
735- break ;
736- case SearchWindowAligns . LeftTop :
737- Left = HorizonLeft ( screen ) ;
738- Top = 10 ;
739- break ;
740- case SearchWindowAligns . RightTop :
741- Left = HorizonRight ( screen ) ;
742- Top = 10 ;
743- break ;
744- case SearchWindowAligns . Custom :
745- Left = Win32Helper . TransformPixelsToDIP ( this ,
746- screen . WorkingArea . X + _settings . CustomWindowLeft , 0 ) . X ;
747- Top = Win32Helper . TransformPixelsToDIP ( this , 0 ,
748- screen . WorkingArea . Y + _settings . CustomWindowTop ) . Y ;
749- break ;
727+ Top = _settings . WindowTop ;
728+ Left = _settings . WindowLeft ;
729+ }
730+ else
731+ {
732+ var screen = SelectedScreen ( ) ;
733+ switch ( _settings . SearchWindowAlign )
734+ {
735+ case SearchWindowAligns . Center :
736+ Left = HorizonCenter ( screen ) ;
737+ Top = VerticalCenter ( screen ) ;
738+ break ;
739+ case SearchWindowAligns . CenterTop :
740+ Left = HorizonCenter ( screen ) ;
741+ Top = 10 ;
742+ break ;
743+ case SearchWindowAligns . LeftTop :
744+ Left = HorizonLeft ( screen ) ;
745+ Top = 10 ;
746+ break ;
747+ case SearchWindowAligns . RightTop :
748+ Left = HorizonRight ( screen ) ;
749+ Top = 10 ;
750+ break ;
751+ case SearchWindowAligns . Custom :
752+ Left = Win32Helper . TransformPixelsToDIP ( this ,
753+ screen . WorkingArea . X + _settings . CustomWindowLeft , 0 ) . X ;
754+ Top = Win32Helper . TransformPixelsToDIP ( this , 0 ,
755+ screen . WorkingArea . Y + _settings . CustomWindowTop ) . Y ;
756+ break ;
757+ }
750758 }
751759 }
752760 }
0 commit comments