@@ -132,6 +132,7 @@ MCPropertyInfo MCField::kProperties[] =
132132 DEFINE_RO_OBJ_CUSTOM_PROPERTY (P_PAGE_RANGES, InterfaceFieldRanges, MCField, PageRanges)
133133
134134 DEFINE_RW_OBJ_ENUM_PROPERTY (P_KEYBOARD_TYPE, InterfaceKeyboardType, MCField, KeyboardType)
135+ DEFINE_RW_OBJ_ENUM_PROPERTY (P_RETURN_KEY_TYPE, InterfaceReturnKeyType, MCField, ReturnKeyType)
135136
136137 DEFINE_RW_OBJ_NON_EFFECTIVE_OPTIONAL_ENUM_PROPERTY (P_TEXT_ALIGN, InterfaceTextAlign, MCField, TextAlign)
137138 DEFINE_RO_OBJ_EFFECTIVE_ENUM_PROPERTY (P_TEXT_ALIGN, InterfaceTextAlign, MCField, TextAlign)
@@ -261,6 +262,7 @@ MCField::MCField()
261262 m_recompute = false ;
262263
263264 keyboard_type = kMCInterfaceKeyboardTypeNone ;
265+ return_key_type = kMCInterfaceReturnKeyTypeNone ;
264266}
265267
266268MCField::MCField (const MCField &fref) : MCControl(fref)
@@ -278,6 +280,7 @@ MCField::MCField(const MCField &fref) : MCControl(fref)
278280 cursor_movement = fref.cursor_movement ;
279281 text_direction= fref.text_direction ;
280282 keyboard_type = fref.keyboard_type ;
283+ return_key_type = fref.return_key_type ;
281284
282285 if (fref.vscrollbar != NULL )
283286 {
@@ -2567,6 +2570,7 @@ void MCField::draw(MCDC *dc, const MCRectangle& p_dirty, bool p_isolated, bool p
25672570// SN-2015-04-30: [[ Bug 15175 ]] TabAlignment flag added
25682571#define FIELD_EXTRA_TABALIGN (1 << 1 )
25692572#define FIELD_EXTRA_KEYBOARDTYPE (1 << 2 )
2573+ #define FIELD_EXTRA_RETURNKEYTYPE (1 << 3 )
25702574
25712575IO_stat MCField::extendedsave (MCObjectOutputStream& p_stream, uint4 p_part, uint32_t p_version)
25722576{
@@ -2595,6 +2599,12 @@ IO_stat MCField::extendedsave(MCObjectOutputStream& p_stream, uint4 p_part, uint
25952599 t_flags |= FIELD_EXTRA_KEYBOARDTYPE;
25962600 t_size += sizeof (int8_t );
25972601 }
2602+
2603+ if (return_key_type != kMCInterfaceReturnKeyTypeNone )
2604+ {
2605+ t_flags |= FIELD_EXTRA_RETURNKEYTYPE;
2606+ t_size += sizeof (int8_t );
2607+ }
25982608
25992609 IO_stat t_stat;
26002610 t_stat = p_stream . WriteTag (t_flags, t_size);
@@ -2615,7 +2625,12 @@ IO_stat MCField::extendedsave(MCObjectOutputStream& p_stream, uint4 p_part, uint
26152625 t_stat = p_stream . WriteS8 ((int8_t )keyboard_type);
26162626 }
26172627
2618- if (t_stat == IO_NORMAL)
2628+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_RETURNKEYTYPE))
2629+ {
2630+ t_stat = p_stream . WriteS8 ((int8_t )return_key_type);
2631+ }
2632+
2633+ if (t_stat == IO_NORMAL)
26192634 t_stat = MCObject::extendedsave (p_stream, p_part, p_version);
26202635
26212636 return t_stat;
@@ -2684,6 +2699,16 @@ IO_stat MCField::extendedload(MCObjectInputStream& p_stream, uint32_t p_version,
26842699 }
26852700 }
26862701
2702+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_RETURNKEYTYPE) != 0 )
2703+ {
2704+ int8_t t_value;
2705+ t_stat = checkloadstat (p_stream . ReadS8 (t_value));
2706+ if (t_stat == IO_NORMAL)
2707+ {
2708+ return_key_type = static_cast <MCInterfaceReturnKeyType>(t_value);
2709+ }
2710+ }
2711+
26872712 if (t_stat == IO_NORMAL)
26882713 t_stat = checkloadstat (p_stream . Skip (t_length));
26892714
@@ -2711,7 +2736,8 @@ IO_stat MCField::save(IO_handle stream, uint4 p_part, bool p_force_ext, uint32_t
27112736 bool t_has_extension;
27122737 t_has_extension = text_direction != kMCTextDirectionAuto ||
27132738 nalignments != 0 ||
2714- keyboard_type != kMCInterfaceKeyboardTypeNone ;
2739+ keyboard_type != kMCInterfaceKeyboardTypeNone ||
2740+ return_key_type != kMCInterfaceReturnKeyTypeNone ;
27152741
27162742 if ((stat = MCObject::save (stream, p_part, t_has_extension || p_force_ext, p_version)) != IO_NORMAL)
27172743 return stat;
0 commit comments