1111using Flow . Launcher . Helper ;
1212using Flow . Launcher . Infrastructure . UserSettings ;
1313using Flow . Launcher . ViewModel ;
14+ using Microsoft . AspNetCore . Authorization ;
1415using Application = System . Windows . Application ;
1516using Screen = System . Windows . Forms . Screen ;
1617using ContextMenuStrip = System . Windows . Forms . ContextMenuStrip ;
@@ -30,6 +31,7 @@ public partial class MainWindow
3031 private bool isProgressBarStoryboardPaused ;
3132 private Settings _settings ;
3233 private NotifyIcon _notifyIcon ;
34+ private ContextMenu contextMenu ;
3335 private MainViewModel _viewModel ;
3436
3537 #endregion
@@ -159,14 +161,10 @@ private void InitializePosition()
159161
160162 private void UpdateNotifyIconText ( )
161163 {
162- var menu = _notifyIcon . ContextMenuStrip ;
163- var open = menu . Items [ 0 ] ;
164- var setting = menu . Items [ 1 ] ;
165- var exit = menu . Items [ 2 ] ;
166-
167- open . Text = InternationalizationManager . Instance . GetTranslation ( "iconTrayOpen" ) ;
168- setting . Text = InternationalizationManager . Instance . GetTranslation ( "iconTraySettings" ) ;
169- exit . Text = InternationalizationManager . Instance . GetTranslation ( "iconTrayExit" ) ;
164+ var menu = contextMenu ;
165+ ( ( MenuItem ) menu . Items [ 1 ] ) . Header = InternationalizationManager . Instance . GetTranslation ( "iconTrayOpen" ) ;
166+ ( ( MenuItem ) menu . Items [ 2 ] ) . Header = InternationalizationManager . Instance . GetTranslation ( "iconTraySettings" ) ;
167+ ( ( MenuItem ) menu . Items [ 3 ] ) . Header = InternationalizationManager . Instance . GetTranslation ( "iconTrayExit" ) ;
170168 }
171169
172170 private void InitializeNotifyIcon ( )
@@ -177,30 +175,46 @@ private void InitializeNotifyIcon()
177175 Icon = Properties . Resources . app ,
178176 Visible = ! _settings . HideNotifyIcon
179177 } ;
180- var menu = new ContextMenuStrip ( ) ;
181- var items = menu . Items ;
178+ contextMenu = new ContextMenu ( ) ;
179+
180+ var header = new MenuItem
181+ {
182+ Header = "Flow Launcher" ,
183+ IsEnabled = false
184+ } ;
185+ var open = new MenuItem
186+ {
187+ Header = InternationalizationManager . Instance . GetTranslation ( "iconTrayOpen" )
188+ } ;
189+ var settings = new MenuItem
190+ {
191+ Header = InternationalizationManager . Instance . GetTranslation ( "iconTraySettings" )
192+ } ;
193+ var exit = new MenuItem
194+ {
195+ Header = InternationalizationManager . Instance . GetTranslation ( "iconTrayExit" )
196+ } ;
182197
183- var open = items . Add ( InternationalizationManager . Instance . GetTranslation ( "iconTrayOpen" ) ) ;
184198 open . Click += ( o , e ) => Visibility = Visibility . Visible ;
185- var setting = items . Add ( InternationalizationManager . Instance . GetTranslation ( "iconTraySettings" ) ) ;
186- setting . Click += ( o , e ) => App . API . OpenSettingDialog ( ) ;
187- var exit = items . Add ( InternationalizationManager . Instance . GetTranslation ( "iconTrayExit" ) ) ;
199+ settings . Click += ( o , e ) => App . API . OpenSettingDialog ( ) ;
188200 exit . Click += ( o , e ) => Close ( ) ;
201+ contextMenu . Items . Add ( header ) ;
202+ contextMenu . Items . Add ( open ) ;
203+ contextMenu . Items . Add ( settings ) ;
204+ contextMenu . Items . Add ( exit ) ;
189205
190- _notifyIcon . ContextMenuStrip = menu ;
206+ _notifyIcon . ContextMenuStrip = new ContextMenuStrip ( ) ; // it need for close the context menu. if not, context menu can't close.
191207 _notifyIcon . MouseClick += ( o , e ) =>
192208 {
193- if ( e . Button == MouseButtons . Left )
209+ switch ( e . Button )
194210 {
195- if ( menu . Visible )
196- {
197- menu . Close ( ) ;
198- }
199- else
200- {
201- var p = System . Windows . Forms . Cursor . Position ;
202- menu . Show ( p ) ;
203- }
211+ case MouseButtons . Left :
212+ _viewModel . ToggleFlowLauncher ( ) ;
213+ break ;
214+
215+ case MouseButtons . Right :
216+ contextMenu . IsOpen = true ;
217+ break ;
204218 }
205219 } ;
206220 }
0 commit comments