diff options
author | Marius Ungureanu <therzok@gmail.com> | 2019-11-11 19:54:40 +0300 |
---|---|---|
committer | Marius Ungureanu <therzok@gmail.com> | 2019-11-11 19:54:40 +0300 |
commit | e159b80639ec01d2551cbcb1e039b96dd592d2c8 (patch) | |
tree | 84a214012d242075e2fdbc96da4e643d14cbf0bc | |
parent | b08ed970c17f695b2abc9f8c937332123effb45e (diff) |
Keep track of observers properlycoverage-tool
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/MenuButtonBackend.cs | 8 | ||||
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/TableViewBackend.cs | 6 | ||||
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/TextEntryBackend.cs | 9 | ||||
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/WindowFrameBackend.cs | 9 |
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: |