]> O.S.I.I.S - jp/crow.git/commitdiff
debug dyn event handle clearing
authorjpbruyere <jp.bruyere@hotmail.com>
Mon, 12 Oct 2015 12:06:16 +0000 (14:06 +0200)
committerjpbruyere <jp.bruyere@hotmail.com>
Mon, 12 Oct 2015 12:06:16 +0000 (14:06 +0200)
Tests/GOLIBTests.cs
src/GraphicObjects/GraphicObject.cs

index 508acc2d13406f82664cdf79417176d8b8dd972c..13576b241f07bdecfef0e74883afc863dc74e0a7 100644 (file)
@@ -44,8 +44,8 @@ namespace test
                        "testSpinner.goml",\r
                        "testPopper.goml",\r
                        "testGroupBox.goml",\r
-//                     "testWindow.goml",\r
-//                     "testMsgBox.goml",\r
+                       "testWindow.goml",\r
+                       "testMsgBox.goml",\r
                        "testGrid.goml",\r
                        "testMeter.goml",\r
 //                     "testCombobox.goml",\r
index 505e85a9a6115bafc01545704d0476bca7061e3c..6e2d726c4dd06bed408385e8b3234c56ff68d15d 100644 (file)
@@ -1285,16 +1285,22 @@ namespace go
                        foreach (Binding b in Bindings) {\r
                                if (string.IsNullOrEmpty (b.DynMethodId))\r
                                        continue;\r
-                               Type dataSourceType = b.Target.Instance.GetType ();\r
+                               MemberReference mr = null;\r
+                               if (b.Target == null)\r
+                                       mr = b.Source;\r
+                               else\r
+                                       mr = b.Target;\r
+                               Type dataSourceType = mr.Instance.GetType();\r
                                EventInfo evtInfo = dataSourceType.GetEvent ("ValueChanged");\r
                                FieldInfo evtFi = CompilerServices.GetEventHandlerField (dataSourceType, "ValueChanged");\r
-                               MulticastDelegate multicastDelegate = evtFi.GetValue (b.Target.Instance) as MulticastDelegate;\r
+                               MulticastDelegate multicastDelegate = evtFi.GetValue (mr.Instance) as MulticastDelegate;\r
                                if (multicastDelegate != null) {                                \r
                                        foreach (Delegate d in multicastDelegate.GetInvocationList()) {                                         \r
                                                if (d.Method.Name == b.DynMethodId)\r
-                                                       evtInfo.RemoveEventHandler (b.Target.Instance, d);\r
+                                                       evtInfo.RemoveEventHandler (mr.Instance, d);\r
                                        }\r
                                }\r
+                               b.Reset ();\r
                        }\r
                }\r
        }\r