+ private void DisConnectFromSignals()
+ {
+ // Save current CPtr.
+ global::System.Runtime.InteropServices.HandleRef currentCPtr = swigCPtr;
+
+ // Use BaseHandle CPtr as current might have been deleted already in derived classes.
+ swigCPtr = GetBaseHandleCPtrHandleRef;
+
+ if (_stateChangedCallback != null)
+ {
+ StateChangedSignal().Disconnect(_stateChangedCallback);
+ }
+
+ if (_releasedCallback != null)
+ {
+ ReleasedSignal().Disconnect(_releasedCallback);
+ }
+
+ if (_pressedCallback != null)
+ {
+ this.PressedSignal().Disconnect(_pressedCallback);
+ }
+
+ if (_clickedCallback != null)
+ {
+ ClickedSignal().Disconnect(_clickedCallback);
+ }
+
+ // BaseHandle CPtr is used in Registry and there is danger of deletion if we keep using it here.
+ // Restore current CPtr.
+ swigCPtr = currentCPtr;
+ }
+