Merge pull request #1536 from markusstoll/menudelegate

Ensure that "this.menu.Delegate" is NOT called fron non mainthread
This commit is contained in:
Hylke Bons 2014-07-15 09:57:53 +01:00
commit 0f2e3f1e66

View file

@ -30,6 +30,7 @@ namespace SparkleShare {
private NSStatusItem status_item = NSStatusBar.SystemStatusBar.CreateStatusItem (28);
private NSMenu menu, submenu, link_code_submenu;
private SparkleMenuDelegate menuDelegate;
private NSMenuItem state_item, folder_item, add_item, about_item, recent_events_item, quit_item,
code_item, copy_item, link_code_item;
@ -98,9 +99,8 @@ namespace SparkleShare {
};
Controller.UpdateMenuEvent += delegate {
while ((this.menu.Delegate as SparkleMenuDelegate).MenuIsOpen)
while (this.menuDelegate.MenuIsOpen)
System.Threading.Thread.Sleep (100);
Program.Controller.Invoke (() => CreateMenu ());
};
@ -232,7 +232,8 @@ namespace SparkleShare {
this.menu.AddItem (NSMenuItem.SeparatorItem);
this.menu.AddItem (this.quit_item);
this.menu.Delegate = new SparkleMenuDelegate ();
this.menuDelegate = new SparkleMenuDelegate ();
this.menu.Delegate = this.menuDelegate;
this.status_item.Menu = this.menu;
}