private InputMethodContext inputMethodCotext = null;
private float fontSizeScale = 1.0f;
private bool hasFontSizeChangedCallback = false;
+ private bool isSettingTextInCSharp = false;
static TextField() { }
{
SetVisible(false);
}
+
+ TextChanged += TextEditorTextChanged;
}
internal TextField(global::System.IntPtr cPtr, bool cMemoryOwn, bool shown = true) : base(cPtr, cMemoryOwn, null)
{
SetVisible(false);
}
+
+ TextChanged += TextEditorTextChanged;
}
internal TextField(TextField handle, bool shown = true) : this(Interop.TextField.NewTextField(TextField.getCPtr(handle)), true)
{
SetVisible(false);
}
+
+ TextChanged += TextEditorTextChanged;
}
internal enum ExceedPolicyType
}
set
{
- SetValueAndForceSendChangeSignal(TextProperty, value);
+ SetValue(TextProperty, value);
NotifyPropertyChanged();
}
}
}
/// <summary>
- /// The Selected Text property.
+ /// The portion of the text that has been selected by the user.
/// </summary>
- /// <since_tizen> 8 </since_tizen>
- /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <remarks>
+ /// Empty string when nothing is selected.
+ /// </remarks>
+ /// <since_tizen> 9 </since_tizen>
public string SelectedText
{
get
/// <summary>
/// The start index for selection.
/// </summary>
- /// <since_tizen> 8 </since_tizen>
- /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <remarks>
+ /// When there is no selection, the index is current cursor position.
+ /// </remarks>
+ /// <since_tizen> 9 </since_tizen>
public int SelectedTextStart
{
get
GetProperty(TextField.Property.SelectedTextStart).Get(out temp);
return temp;
}
- set
- {
- SetProperty(TextField.Property.SelectedTextStart, new PropertyValue(value));
- NotifyPropertyChanged();
- }
}
/// <summary>
/// The end index for selection.
/// </summary>
- /// <since_tizen> 8 </since_tizen>
- /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <remarks>
+ /// When there is no selection, the index is current cursor position.
+ /// </remarks>
+ /// <since_tizen> 9 </since_tizen>
public int SelectedTextEnd
{
get
GetProperty(TextField.Property.SelectedTextEnd).Get(out temp);
return temp;
}
- set
- {
- SetProperty(TextField.Property.SelectedTextEnd, new PropertyValue(value));
- NotifyPropertyChanged();
- }
}
/// <summary>
/// <summary>
/// The ellipsis position of the text.
- /// The ellipsis position type when the text size over the layout size.<br />
- /// The ellipsis position: End, Start or Middle.<br />
+ /// Specifies which portion of the text should be replaced with an ellipsis when the text size exceeds the layout size.<br />
/// </summary>
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <since_tizen> 9 </since_tizen>
public EllipsisPosition EllipsisPosition
{
get
}
/// <summary>
- /// Set InputFilter to TextField. <br />
+ /// Set InputFilter to TextField.
/// </summary>
/// <param name="inputFilter">The InputFilter</param>
/// <remarks>
/// <see cref="Tizen.NUI.Text.InputFilter"/> filters input based on regular expressions. <br />
- /// Users can set the Accepted or Rejected regular expression set, or both. <br />
- /// If both are used, Rejected has higher priority. <br />
- /// The character set must follow the regular expression rules. <br />
- /// Behaviour can not be guaranteed for incorrect grammars. <br />
- /// Refer the link below for detailed rules. <br />
- /// The functions in std::regex library use the ECMAScript grammar: <br />
- /// http://cplusplus.com/reference/regex/ECMAScript/ <br />
/// InputFiltered signal is emitted when the input is filtered by InputFilter <br />
- /// See <see cref="InputFiltered"/>, <see cref="InputFilterType"/> and <see cref="InputFilteredEventArgs"/> for a detailed description. <br />
+ /// See <see cref="InputFiltered"/>, <see cref="InputFilterType"/> and <see cref="InputFilteredEventArgs"/> for a detailed description.
/// </remarks>
/// <example>
/// The following example demonstrates how to use the SetInputFilter method.
/// field.SetInputFilter(inputFilter); // acceptable inputs are 4, 5, 6, 7, 8, 9
/// </code>
/// </example>
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <since_tizen> 9 </since_tizen>
public void SetInputFilter(InputFilter inputFilter)
{
SetProperty(TextField.Property.InputFilter, new PropertyValue(TextUtils.GetInputFilterMap(inputFilter)));
}
/// <summary>
- /// Get InputFilter from TextField. <br />
+ /// Get InputFilter from TextField.
/// </summary>
/// <returns>The InputFilter</returns>
/// <remarks>
/// <see cref="Tizen.NUI.Text.InputFilter"/>
/// </remarks>
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <since_tizen> 9 </since_tizen>
public InputFilter GetInputFilter()
{
var map = new PropertyMap();
}
}
- /// Only used by the IL of xaml, will never changed to not hidden.
- [EditorBrowsable(EditorBrowsableState.Never)]
- public override bool IsCreateByXaml
- {
- get
- {
- return base.IsCreateByXaml;
- }
- set
- {
- base.IsCreateByXaml = value;
-
- if (value == true)
- {
- this.TextChanged += (obj, e) =>
- {
- this.Text = e.TextField.Text;
- };
- }
- }
- }
-
/// <summary>
/// Get the InputMethodContext instance.
/// </summary>
/// <summary>
/// Select the whole text.
/// </summary>
- /// <since_tizen> 6 </since_tizen>
- /// This will be released at Tizen.NET API Level 5.5, so currently this would be used as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <since_tizen> 9 </since_tizen>
public void SelectWholeText()
{
Interop.TextField.SelectWholeText(SwigCPtr);
}
/// <summary>
- /// Select text from start to end index.
+ /// Select text from start to end index. <br />
+ /// The index is valid when 0 or positive.
/// </summary>
/// <param name="start">The start index for selection.</param>
/// <param name="end">The end index for selection.</param>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public void SelectText(uint start, uint end)
+ /// <remarks>
+ /// If the end index exceeds the maximum value, it is set to the length of the text.
+ /// </remarks>
+ /// <since_tizen> 9 </since_tizen>
+ public void SelectText(int start, int end)
{
- Interop.TextField.SelectText(SwigCPtr, start, end);
+ if (start < 0)
+ throw new global::System.ArgumentOutOfRangeException(nameof(start), "Value is less than zero");
+ if (end < 0)
+ throw new global::System.ArgumentOutOfRangeException(nameof(end), "Value is less than zero");
+
+ Interop.TextField.SelectText(SwigCPtr, (uint)start, (uint)end);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
/// <summary>
- /// Clear selection of the text.
+ /// Clear selection of the text. <br />
+ /// Valid when selection is activate.
/// </summary>
- /// <since_tizen> 8 </since_tizen>
- /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API.
- [EditorBrowsable(EditorBrowsableState.Never)]
+ /// <since_tizen> 9 </since_tizen>
public void SelectNone()
{
_ = Interop.TextField.SelectNone(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
- internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextField obj)
- {
- return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr;
- }
-
internal SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextField_Dali__Toolkit__TextField__InputStyle__MaskF_t InputStyleChangedSignal()
{
SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextField_Dali__Toolkit__TextField__InputStyle__MaskF_t ret = new SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextField_Dali__Toolkit__TextField__InputStyle__MaskF_t(Interop.TextField.InputStyleChangedSignal(SwigCPtr));
}
}
+ TextChanged -= TextEditorTextChanged;
+
base.Dispose(type);
}
}
}
+ private void TextEditorTextChanged(object sender, TextChangedEventArgs e)
+ {
+ if (!isSettingTextInCSharp)
+ {
+ EnforceNotifyBindedInstance(TextProperty);
+ }
+ }
+
internal new class Property
{
internal static readonly int TEXT = Interop.TextField.TextGet();