Skip to content

Commit 99fcdc1

Browse files
authored
Merge pull request #765 from onesounds/RedesignTray
Tray Menu Redesign
2 parents ddda425 + 520510d commit 99fcdc1

File tree

1 file changed

+39
-25
lines changed

1 file changed

+39
-25
lines changed

Flow.Launcher/MainWindow.xaml.cs

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Flow.Launcher.Helper;
1212
using Flow.Launcher.Infrastructure.UserSettings;
1313
using Flow.Launcher.ViewModel;
14+
using Microsoft.AspNetCore.Authorization;
1415
using Application = System.Windows.Application;
1516
using Screen = System.Windows.Forms.Screen;
1617
using 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

Comments
 (0)