From a6b80ab72388a103fc6a982bbfc2a56a29138b48 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Tue, 21 Dec 2010 20:59:53 +0100 Subject: [PATCH] [osx] Fix some bugs an use sparkleshare.icns for the .app --- SparkleShare/Mac/SparkleShare/SparkleLog.cs | 15 +++--- .../Mac/SparkleShare/SparkleShare.csproj | 2 +- .../Mac/SparkleShare/SparkleStatusIcon.cs | 50 ++++++++++++++---- SparkleShare/Mac/SparkleShare/SparkleUI.cs | 9 ++-- .../{Pixmaps => }/sparkleshare.icns | Bin 5 files changed, 52 insertions(+), 24 deletions(-) rename SparkleShare/Mac/SparkleShare/{Pixmaps => }/sparkleshare.icns (100%) diff --git a/SparkleShare/Mac/SparkleShare/SparkleLog.cs b/SparkleShare/Mac/SparkleShare/SparkleLog.cs index a5203ebe..4052ce8b 100644 --- a/SparkleShare/Mac/SparkleShare/SparkleLog.cs +++ b/SparkleShare/Mac/SparkleShare/SparkleLog.cs @@ -32,7 +32,8 @@ namespace SparkleShare { private NSButton CloseButton; private NSButton OpenFolderButton; - + public SparkleLog (IntPtr handle) : base (handle) { } + public SparkleLog (string path) : base () { @@ -109,17 +110,17 @@ namespace SparkleShare { } } - - + + public class LogDelegate : NSWindowDelegate { public override void WillClose (NSNotification notification) { - Console.WriteLine ("CLOSING " + (notification.Object as SparkleLog).LocalPath); - - SparkleUI.OpenLogs.Remove ((SparkleLog) notification.Object); - + InvokeOnMainThread (delegate { + SparkleUI.OpenLogs.Remove ((SparkleLog) notification.Object); + }); + } } diff --git a/SparkleShare/Mac/SparkleShare/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare/SparkleShare.csproj index cc4f415f..50a86364 100644 --- a/SparkleShare/Mac/SparkleShare/SparkleShare.csproj +++ b/SparkleShare/Mac/SparkleShare/SparkleShare.csproj @@ -81,10 +81,10 @@ - Pixmaps\side-splash.png + diff --git a/SparkleShare/Mac/SparkleShare/SparkleStatusIcon.cs b/SparkleShare/Mac/SparkleShare/SparkleStatusIcon.cs index 75c66227..9357f7f7 100644 --- a/SparkleShare/Mac/SparkleShare/SparkleStatusIcon.cs +++ b/SparkleShare/Mac/SparkleShare/SparkleStatusIcon.cs @@ -40,6 +40,9 @@ namespace SparkleShare { private NSMenuItem SyncMenuItem; private NSMenuItem NotificationsMenuItem; private NSMenuItem AboutMenuItem; + + private delegate void Task (); + private EventHandler [] Tasks; // Short alias for the translations @@ -51,7 +54,7 @@ namespace SparkleShare { public SparkleStatusIcon () : base () { - + Animation = CreateAnimation (); StatusItem = NSStatusBar.SystemStatusBar.CreateStatusItem (28); @@ -61,7 +64,8 @@ namespace SparkleShare { SetNormalState (); CreateMenu (); - + Menu.Delegate = new SparkleStatusIconMenuDelegate (); + SparkleShare.Controller.FolderSizeChanged += delegate { InvokeOnMainThread (delegate { @@ -259,15 +263,11 @@ namespace SparkleShare { } - public delegate void Task(); - EventHandler [] Tasks; - // A method reference that makes sure that opening the // event log for each repository works correctly private EventHandler OpenEventLogDelegate (string path) { - return delegate { SparkleLog log = SparkleUI.OpenLogs.Find (delegate (SparkleLog l) { @@ -276,10 +276,19 @@ namespace SparkleShare { // Check whether the log is already open, create a new one if // that's not the case or present it to the user if it is - if (log == null) - SparkleUI.OpenLogs.Add (new SparkleLog (path)); - else - log.OrderFrontRegardless (); + if (log == null) { + + InvokeOnMainThread (delegate { + SparkleUI.OpenLogs.Add (new SparkleLog (path)); + }); + + } else { + + InvokeOnMainThread (delegate { + log.OrderFrontRegardless (); + }); + + } }; @@ -363,6 +372,27 @@ namespace SparkleShare { } } + + + public class SparkleStatusIconMenuDelegate : NSMenuDelegate { + + public override void MenuWillHighlightItem (NSMenu menu, NSMenuItem item) { } + + public override void MenuWillOpen (NSMenu menu) + { + + Console.WriteLine ("OPENED"); + + InvokeOnMainThread (delegate { + + foreach (SparkleLog log in SparkleUI.OpenLogs) + log.OrderFrontRegardless (); + + }); + + } + + } } diff --git a/SparkleShare/Mac/SparkleShare/SparkleUI.cs b/SparkleShare/Mac/SparkleShare/SparkleUI.cs index adb7913c..9c69afff 100644 --- a/SparkleShare/Mac/SparkleShare/SparkleUI.cs +++ b/SparkleShare/Mac/SparkleShare/SparkleUI.cs @@ -42,14 +42,11 @@ namespace SparkleShare { { NSApplication.Init (); - NSApplication.SharedApplication.ActivateIgnoringOtherApps (true); - NSApplication.SharedApplication.applicationIconImage = new NSImage (NSBundle.MainBundle.ResourcePath + "/Pixmaps/sparkeshare.icns"); + + NSApplication.SharedApplication.applicationIconImage = NSImage.ImageNamed ("sparkleshare.icns"); - OpenLogs = new List (); + OpenLogs = new List (); StatusIcon = new SparkleStatusIcon (); - - - } diff --git a/SparkleShare/Mac/SparkleShare/Pixmaps/sparkleshare.icns b/SparkleShare/Mac/SparkleShare/sparkleshare.icns similarity index 100% rename from SparkleShare/Mac/SparkleShare/Pixmaps/sparkleshare.icns rename to SparkleShare/Mac/SparkleShare/sparkleshare.icns