Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2015-06-02 18:13:45 +0300
committerMike Krüger <mkrueger@xamarin.com>2015-06-02 18:13:45 +0300
commit98651eaa53fed13b96aa46ce7154d7d2791c71ea (patch)
tree2115228867afb55def39837d6c41118f49f65012 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage
parentd84b546336e3e0b6140c8d7850b5140a0ccc248c (diff)
[Ide] Unregister PinClicked event in WelcomePageRecentProjectsList
event.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs52
1 files changed, 43 insertions, 9 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs
index bbde387838..3e700d0bf5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageRecentProjectsList.cs
@@ -41,12 +41,11 @@ namespace MonoDevelop.Ide.WelcomePage
int itemCount = 10;
readonly Xwt.Drawing.Image openProjectIcon;
readonly Xwt.Drawing.Image newProjectIcon;
-
+
public WelcomePageRecentProjectsList (string title = null, int count = 10): base (title)
{
openProjectIcon = Xwt.Drawing.Image.FromResource ("open_solution.png");
newProjectIcon = Xwt.Drawing.Image.FromResource ("new_solution.png");
-
box = new VBox ();
itemCount = count;
@@ -112,17 +111,52 @@ namespace MonoDevelop.Ide.WelcomePage
//};
//button.HasTooltip = true;
button.TooltipText = filename + "\n" + TimeSinceEdited (accessed);
- box.PackStart (button, false, false, 0);
- button.PinClicked += delegate {
- DesktopService.RecentFiles.SetFavoriteFile (filename, button.Pinned);
- };
+ box.PackStart (button, false, false, 0);
+ var pinClickHandler = new PinClickHandler (filename);
+ pinClickHandler.Register (button);
}
-
-
this.ShowAll ();
+ }
+
+ class PinClickHandler : IDisposable
+ {
+ WelcomePageListButton button;
+ string filename;
+
+ public PinClickHandler (string filename)
+ {
+ this.filename = filename;
+ }
+
+ public void Dispose ()
+ {
+ if (button == null)
+ return;
+ button.PinClicked -= Button_PinClicked;
+ button.Destroyed -= Button_Destroyed;
+ button = null;
+ }
+
+ internal void Register (WelcomePageListButton button)
+ {
+ this.button = button;
+ button.PinClicked += Button_PinClicked;
+ button.Destroyed += Button_Destroyed;
+ }
+
+ void Button_PinClicked (object sender, EventArgs e)
+ {
+ DesktopService.RecentFiles.SetFavoriteFile (filename, button.Pinned);
+ }
+
+ void Button_Destroyed (object sender, EventArgs e)
+ {
+ Dispose ();
+ }
}
-
+
+
static string TimeSinceEdited (DateTime prjtime)
{
TimeSpan sincelast = DateTime.UtcNow - prjtime;