windows statusicon: fix submenu item clicks

This commit is contained in:
Hylke Bons 2012-12-02 20:00:11 +00:00
parent 895d17d057
commit f573666edb
2 changed files with 17 additions and 9 deletions

View file

@ -19,6 +19,7 @@ using System;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Controls.Primitives; using System.Windows.Controls.Primitives;
@ -253,11 +254,18 @@ namespace SparkleShare {
try { try {
if (button == left_button_down || button == right_button_down) if (button == left_button_down || button == right_button_down)
{ {
Rect context_menu_rect = GetContextMenuRect(ContextMenu); Rect context_menu_rect = GetContextMenuRect (ContextMenu);
Point hit_point = GetHitPoint(data_pointer); Point hit_point = GetHitPoint (data_pointer);
if (!context_menu_rect.Contains(hit_point)) if (!context_menu_rect.Contains(hit_point)) {
ContextMenu.IsOpen = false; new Thread (() => {
Thread.Sleep (500);
Dispatcher.BeginInvoke ((Action) delegate {
ContextMenu.IsOpen = false;
});
}).Start ();
}
} }
} }
finally { finally {

View file

@ -144,9 +144,9 @@ namespace SparkleShare {
this.exit_item = new SparkleMenuItem () { Header = "Exit" }; this.exit_item = new SparkleMenuItem () { Header = "Exit" };
add_item.Click += Controller.AddHostedProjectClicked; add_item.Click += delegate { Controller.AddHostedProjectClicked (); };
this.log_item.Click += Controller.RecentEventsClicked; this.log_item.Click += delegate { Controller.RecentEventsClicked (); };
about_item.Click += Controller.AboutClicked; about_item.Click += delegate { Controller.AboutClicked (); };
notify_check_box.Click += delegate { notify_check_box.Click += delegate {
this.context_menu.IsOpen = false; this.context_menu.IsOpen = false;
@ -198,7 +198,7 @@ namespace SparkleShare {
Header = "Try again" Header = "Try again"
}; };
try_again_item.Click += Controller.TryAgainDelegate (folder_name); try_again_item.Click += delegate { Controller.TryAgainDelegate (folder_name); };
subfolder_item.Items.Add (error_item); subfolder_item.Items.Add (error_item);
subfolder_item.Items.Add (new Separator ()); subfolder_item.Items.Add (new Separator ());
@ -206,7 +206,7 @@ namespace SparkleShare {
} else { } else {
subfolder_item.Icon = subfolder_image; subfolder_item.Icon = subfolder_image;
subfolder_item.Click += Controller.OpenFolderDelegate (folder_name); subfolder_item.Click += delegate { Controller.OpenFolderDelegate (folder_name); };
} }
this.context_menu.Items.Add (subfolder_item); this.context_menu.Items.Add (subfolder_item);