{
private EventHandler<TextChangedEventArgs> textFieldTextChangedEventHandler;
private TextChangedCallbackDelegate textFieldTextChangedCallbackDelegate;
- private EventHandler<CursorPositionChangedEventArgs> textFieldCursorPositionChangedEventHandler;
+ private EventHandler textFieldCursorPositionChangedEventHandler;
private CursorPositionChangedCallbackDelegate textFieldCursorPositionChangedCallbackDelegate;
private EventHandler<MaxLengthReachedEventArgs> textFieldMaxLengthReachedEventHandler;
private MaxLengthReachedCallbackDelegate textFieldMaxLengthReachedCallbackDelegate;
private EventHandler<AnchorClickedEventArgs> textFieldAnchorClickedEventHandler;
private AnchorClickedCallbackDelegate textFieldAnchorClickedCallbackDelegate;
+
+ private EventHandler textFieldSelectionChangedEventHandler;
+ private SelectionChangedCallbackDelegate textFieldSelectionChangedCallbackDelegate;
+
private EventHandler<InputFilteredEventArgs> textFieldInputFilteredEventHandler;
private InputFilteredCallbackDelegate textFieldInputFilteredCallbackDelegate;
+ private EventHandler textFieldSelectionClearedEventHandler;
+ private SelectionClearedCallbackDelegate textFieldSelectionClearedCallbackDelegate;
+
+ private EventHandler textFieldSelectionStartedEventHandler;
+ private SelectionStartedCallbackDelegate textFieldSelectionStartedCallbackDelegate;
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void TextChangedCallbackDelegate(IntPtr textField);
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void CursorPositionChangedCallbackDelegate(IntPtr textField, uint oldPosition);
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void MaxLengthReachedCallbackDelegate(IntPtr textField);
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void AnchorClickedCallbackDelegate(IntPtr textField, IntPtr href, uint hrefLength);
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ private delegate void SelectionChangedCallbackDelegate(IntPtr textField, uint oldStart, uint oldEnd);
+
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void InputFilteredCallbackDelegate(IntPtr textField, InputFilterType type);
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ private delegate void SelectionClearedCallbackDelegate(IntPtr textField);
+
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ private delegate void SelectionStartedCallbackDelegate(IntPtr textField);
+
+ private bool invokeTextChanged = true;
+
/// <summary>
/// The TextChanged event.
/// </summary>
}
/// <summary>
- /// The CursorPositionChanged event.
+ /// The CursorPositionChanged event is emitted whenever the primary cursor position changed.
/// </summary>
- /// This will be public opened after ACR done. Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public event EventHandler<CursorPositionChangedEventArgs> CursorPositionChanged
+ /// <since_tizen> 9 </since_tizen>
+ public event EventHandler CursorPositionChanged
{
add
{
}
/// <summary>
+ /// The SelectionStarted event is emitted when the selection has been started.
+ /// </summary>
+ /// <since_tizen> 10 </since_tizen>
+ public event EventHandler SelectionStarted
+ {
+ add
+ {
+ if (textFieldSelectionStartedEventHandler == null)
+ {
+ textFieldSelectionStartedCallbackDelegate = (OnSelectionStarted);
+ SelectionStartedSignal().Connect(textFieldSelectionStartedCallbackDelegate);
+ }
+ textFieldSelectionStartedEventHandler += value;
+ }
+ remove
+ {
+ if (textFieldSelectionStartedEventHandler == null && SelectionStartedSignal().Empty() == false)
+ {
+ this.SelectionStartedSignal().Disconnect(textFieldSelectionStartedCallbackDelegate);
+ }
+ textFieldSelectionStartedEventHandler -= value;
+ }
+ }
+
+ /// <summary>
+ /// The SelectionCleared signal is emitted when selection is cleared.
+ /// </summary>
+ /// <since_tizen> 9 </since_tizen>
+ public event EventHandler SelectionCleared
+ {
+ add
+ {
+ if (textFieldSelectionClearedEventHandler == null)
+ {
+ textFieldSelectionClearedCallbackDelegate = (OnSelectionCleared);
+ SelectionClearedSignal().Connect(textFieldSelectionClearedCallbackDelegate);
+ }
+ textFieldSelectionClearedEventHandler += value;
+ }
+ remove
+ {
+ if (textFieldSelectionClearedEventHandler == null && SelectionClearedSignal().Empty() == false)
+ {
+ this.SelectionClearedSignal().Disconnect(textFieldSelectionClearedCallbackDelegate);
+ }
+ textFieldSelectionClearedEventHandler -= value;
+ }
+ }
+
+ /// <summary>
/// The AnchorClicked signal is emitted when the anchor is clicked.
/// </summary>
/// <since_tizen> 9 </since_tizen>
}
/// <summary>
+ /// The SelectionChanged event is emitted whenever the selected text is changed.
+ /// </summary>
+ /// <since_tizen> 9 </since_tizen>
+ public event EventHandler SelectionChanged
+ {
+ add
+ {
+ if (textFieldSelectionChangedEventHandler == null)
+ {
+ textFieldSelectionChangedCallbackDelegate = (OnSelectionChanged);
+ SelectionChangedSignal().Connect(textFieldSelectionChangedCallbackDelegate);
+ }
+ textFieldSelectionChangedEventHandler += value;
+ }
+ remove
+ {
+ if (textFieldSelectionChangedEventHandler == null && SelectionChangedSignal().Empty() == false)
+ {
+ this.SelectionChangedSignal().Disconnect(textFieldSelectionChangedCallbackDelegate);
+ }
+ textFieldSelectionChangedEventHandler -= value;
+ }
+ }
+
+ /// <summary>
/// The InputFiltered signal is emitted when the input is filtered by InputFilter. <br />
/// </summary>
/// <remarks>
/// };
/// </code>
/// </example>
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <since_tizen> 9 </since_tizen>
public event EventHandler<InputFilteredEventArgs> InputFiltered
{
add
}
}
+ internal TextFieldSignal SelectionStartedSignal()
+ {
+ TextFieldSignal ret = new TextFieldSignal(Interop.TextField.SelectionStartedSignal(SwigCPtr), false);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
+ internal TextFieldSignal SelectionClearedSignal()
+ {
+ TextFieldSignal ret = new TextFieldSignal(Interop.TextField.SelectionClearedSignal(SwigCPtr), false);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
internal TextFieldSignal TextChangedSignal()
{
TextFieldSignal ret = new TextFieldSignal(Interop.TextField.TextChangedSignal(SwigCPtr), false);
return ret;
}
+ internal TextFieldSignal SelectionChangedSignal()
+ {
+ TextFieldSignal ret = new TextFieldSignal(Interop.TextField.SelectionChangedSignal(SwigCPtr), false);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+
internal TextFieldSignal InputFilteredSignal()
{
TextFieldSignal ret = new TextFieldSignal(Interop.TextField.InputFilteredSignal(SwigCPtr), false);
return ret;
}
+ private void OnSelectionStarted(IntPtr textField)
+ {
+ //no data to be sent to the user
+ textFieldSelectionStartedEventHandler?.Invoke(this, EventArgs.Empty);
+ }
+
+ private void OnSelectionCleared(IntPtr textField)
+ {
+ //no data to be sent to the user
+ textFieldSelectionClearedEventHandler?.Invoke(this, EventArgs.Empty);
+ }
+
private void OnTextChanged(IntPtr textField)
{
- if (textFieldTextChangedEventHandler != null)
+ if (textFieldTextChangedEventHandler != null && invokeTextChanged)
{
TextChangedEventArgs e = new TextChangedEventArgs();
private void OnCursorPositionChanged(IntPtr textField, uint oldPosition)
{
- if (textFieldCursorPositionChangedEventHandler != null)
- {
- CursorPositionChangedEventArgs e = new CursorPositionChangedEventArgs();
-
- // Populate all members of "e" (CursorPositionChangedEventArgs) with real data
- e.OldCursorPosition = oldPosition;
-
- //here we send all data to user event handlers
- textFieldCursorPositionChangedEventHandler?.Invoke(this, e);
- }
+ // no data to be sent to the user, as in NUI there is no event provide old values.
+ textFieldCursorPositionChangedEventHandler?.Invoke(this, EventArgs.Empty);
}
private void OnMaxLengthReached(IntPtr textField)
textFieldAnchorClickedEventHandler?.Invoke(this, e);
}
+ private void OnSelectionChanged(IntPtr textField, uint oldStart, uint oldEnd)
+ {
+ // no data to be sent to the user, as in NUI there is no event provide old values.
+ textFieldSelectionChangedEventHandler?.Invoke(this, EventArgs.Empty);
+ }
+
private void OnInputFiltered(IntPtr textField, InputFilterType type)
{
InputFilteredEventArgs e = new InputFilteredEventArgs();