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

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <therzok@gmail.com>2019-11-11 19:54:40 +0300
committerMarius Ungureanu <therzok@gmail.com>2019-11-11 19:54:40 +0300
commite159b80639ec01d2551cbcb1e039b96dd592d2c8 (patch)
tree84a214012d242075e2fdbc96da4e643d14cbf0bc
parentb08ed970c17f695b2abc9f8c937332123effb45e (diff)
Keep track of observers properlycoverage-tool
-rw-r--r--Xwt.XamMac/Xwt.Mac/MenuButtonBackend.cs8
-rw-r--r--Xwt.XamMac/Xwt.Mac/TableViewBackend.cs6
-rw-r--r--Xwt.XamMac/Xwt.Mac/TextEntryBackend.cs9
-rw-r--r--Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs9
4 files changed, 26 insertions, 6 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/MenuButtonBackend.cs b/Xwt.XamMac/Xwt.Mac/MenuButtonBackend.cs
index 7f8ccd82..69240317 100644
--- a/Xwt.XamMac/Xwt.Mac/MenuButtonBackend.cs
+++ b/Xwt.XamMac/Xwt.Mac/MenuButtonBackend.cs
@@ -59,6 +59,7 @@ namespace Xwt.Mac
{
ApplicationContext context;
IMenuButtonEventSink eventSink;
+ NSObject willPopupObserver;
public MacMenuButton (IntPtr p): base (p)
{
@@ -76,7 +77,7 @@ namespace Xwt.Mac
context.InvokeUserCode (eventSink.OnClicked);
};
- NSNotificationCenter.DefaultCenter.AddObserver ((NSString)"NSPopUpButtonWillPopUpNotification", CreateMenu, this);
+ willPopupObserver = NSNotificationCenter.DefaultCenter.AddObserver ((NSString)"NSPopUpButtonWillPopUpNotification", CreateMenu, this);
AddItem ("");
}
@@ -131,7 +132,10 @@ namespace Xwt.Mac
protected override void Dispose (bool disposing)
{
- NSNotificationCenter.DefaultCenter.RemoveObserver (this);
+ if (willPopupObserver != null) {
+ willPopupObserver.Dispose ();
+ willPopupObserver = null;
+ }
base.Dispose (disposing);
}
}
diff --git a/Xwt.XamMac/Xwt.Mac/TableViewBackend.cs b/Xwt.XamMac/Xwt.Mac/TableViewBackend.cs
index 9a4dda4f..14ef24cb 100644
--- a/Xwt.XamMac/Xwt.Mac/TableViewBackend.cs
+++ b/Xwt.XamMac/Xwt.Mac/TableViewBackend.cs
@@ -170,8 +170,10 @@ namespace Xwt.Mac
if (eventId is TableViewEvent) {
switch ((TableViewEvent)eventId) {
case TableViewEvent.SelectionChanged:
- if (selChangeObserver != null)
- NSNotificationCenter.DefaultCenter.RemoveObserver (selChangeObserver);
+ if (selChangeObserver != null) {
+ selChangeObserver.Dispose ();
+ selChangeObserver = null;
+ }
break;
}
}
diff --git a/Xwt.XamMac/Xwt.Mac/TextEntryBackend.cs b/Xwt.XamMac/Xwt.Mac/TextEntryBackend.cs
index a466ba2c..98261702 100644
--- a/Xwt.XamMac/Xwt.Mac/TextEntryBackend.cs
+++ b/Xwt.XamMac/Xwt.Mac/TextEntryBackend.cs
@@ -393,6 +393,15 @@ namespace Xwt.Mac
return editor;
}
+ protected override void Dispose (bool disposing)
+ {
+ if (selChangeObserver != null) {
+ selChangeObserver.Dispose ();
+ selChangeObserver = null;
+ }
+ base.Dispose (disposing);
+ }
+
void HandleSelectionDidChange (NSNotification notif)
{
Context.InvokeUserCode (EventSink.OnSelectionChanged);
diff --git a/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs b/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs
index 16c84b8a..c499fa09 100644
--- a/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs
+++ b/Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs
@@ -286,10 +286,15 @@ namespace Xwt.Mac
eventsEnabled &= ~@event;
switch (@event) {
case WindowFrameEvent.BoundsChanged:
- NSNotificationCenter.DefaultCenter.RemoveObservers (new [] { didResizeObserver, didMoveObserver });
+ didResizeObserver.Dispose ();
+ didResizeObserver = null;
+
+ didMoveObserver.Dispose ();
+ didMoveObserver = null;
break;
case WindowFrameEvent.Hidden:
- NSNotificationCenter.DefaultCenter.RemoveObserver (willCloseObserver);
+ willCloseObserver.Dispose ();
+ willCloseObserver = null;
DisableVisibilityEvent ();
break;
case WindowFrameEvent.Shown: