@@ -93,7 +93,11 @@ MCPropertyInfo MCField::kProperties[] =
9393 DEFINE_RW_OBJ_PROPERTY (P_AUTO_HILITE, Bool, MCField, AutoHilite)
9494 DEFINE_RW_OBJ_PROPERTY (P_AUTO_ARM, Bool, MCField, AutoArm)
9595 DEFINE_RW_OBJ_PROPERTY (P_FIRST_INDENT, Int16, MCField, FirstIndent)
96- DEFINE_RW_OBJ_PROPERTY (P_WIDE_MARGINS, Bool, MCField, WideMargins)
96+ DEFINE_RW_OBJ_PROPERTY (P_LEFT_INDENT, Int16, MCField, LeftIndent)
97+ DEFINE_RW_OBJ_PROPERTY (P_RIGHT_INDENT, Int16, MCField, RightIndent)
98+ DEFINE_RW_OBJ_PROPERTY (P_SPACE_ABOVE, Int16, MCField, SpaceAbove)
99+ DEFINE_RW_OBJ_PROPERTY (P_SPACE_BELOW, Int16, MCField, SpaceBelow)
100+ DEFINE_RW_OBJ_PROPERTY (P_WIDE_MARGINS, Bool, MCField, WideMargins)
97101 DEFINE_RW_OBJ_PROPERTY (P_HSCROLL, Int32, MCField, HScroll)
98102 DEFINE_RW_OBJ_PROPERTY (P_VSCROLL, Int32, MCField, VScroll)
99103 DEFINE_RW_OBJ_PROPERTY (P_HSCROLLBAR, Bool, MCField, HScrollbar)
@@ -245,7 +249,11 @@ MCField::MCField()
245249 fixeda = fixedd = fixedheight = 0 ;
246250 leftmargin = rightmargin = topmargin = bottommargin = narrowmargin;
247251 indent = 0 ;
248- cury = focusedy = firsty = topmargin;
252+ leftindent = 0 ;
253+ rightindent = 0 ;
254+ spaceabove = 0 ;
255+ spacebelow = 0 ;
256+ cury = focusedy = firsty = topmargin;
249257 firstparagraph = lastparagraph = NULL ;
250258 foundlength = 0 ;
251259 vscrollbar = hscrollbar = NULL ;
@@ -274,7 +282,11 @@ MCField::MCField(const MCField &fref) : MCControl(fref)
274282 textheight = textwidth = 0 ;
275283 fixeda = fixedd = fixedheight = 0 ;
276284 indent = fref.indent ;
277- cury = focusedy = firsty = topmargin;
285+ leftindent = fref.leftindent ;
286+ rightindent = fref.rightindent ;
287+ spaceabove = fref.spaceabove ;
288+ spacebelow = fref.spacebelow ;
289+ cury = focusedy = firsty = topmargin;
278290 firstparagraph = lastparagraph = NULL ;
279291 foundlength = 0 ;
280292 cursor_movement = fref.cursor_movement ;
@@ -2570,7 +2582,11 @@ void MCField::draw(MCDC *dc, const MCRectangle& p_dirty, bool p_isolated, bool p
25702582// SN-2015-04-30: [[ Bug 15175 ]] TabAlignment flag added
25712583#define FIELD_EXTRA_TABALIGN (1 << 1 )
25722584#define FIELD_EXTRA_KEYBOARDTYPE (1 << 2 )
2573- #define FIELD_EXTRA_RETURNKEYTYPE (1 << 3 )
2585+ #define FIELD_EXTRA_RETURNKEYTYPE (1 << 3 )
2586+ #define FIELD_EXTRA_LEFTINDENT (1 << 4 )
2587+ #define FIELD_EXTRA_RIGHTINDENT (1 << 5 )
2588+ #define FIELD_EXTRA_SPACEABOVE (1 << 6 )
2589+ #define FIELD_EXTRA_SPACEBELOW (1 << 7 )
25742590
25752591IO_stat MCField::extendedsave (MCObjectOutputStream& p_stream, uint4 p_part, uint32_t p_version)
25762592{
@@ -2605,6 +2621,30 @@ IO_stat MCField::extendedsave(MCObjectOutputStream& p_stream, uint4 p_part, uint
26052621 t_flags |= FIELD_EXTRA_RETURNKEYTYPE;
26062622 t_size += sizeof (int8_t );
26072623 }
2624+
2625+ if (leftindent != 0 )
2626+ {
2627+ t_flags |= FIELD_EXTRA_LEFTINDENT;
2628+ t_size += sizeof (uint16_t );
2629+ }
2630+
2631+ if (rightindent != 0 )
2632+ {
2633+ t_flags |= FIELD_EXTRA_RIGHTINDENT;
2634+ t_size += sizeof (uint16_t );
2635+ }
2636+
2637+ if (spaceabove != 0 )
2638+ {
2639+ t_flags |= FIELD_EXTRA_SPACEABOVE;
2640+ t_size += sizeof (uint16_t );
2641+ }
2642+
2643+ if (spacebelow != 0 )
2644+ {
2645+ t_flags |= FIELD_EXTRA_SPACEBELOW;
2646+ t_size += sizeof (uint16_t );
2647+ }
26082648
26092649 IO_stat t_stat;
26102650 t_stat = p_stream . WriteTag (t_flags, t_size);
@@ -2630,6 +2670,26 @@ IO_stat MCField::extendedsave(MCObjectOutputStream& p_stream, uint4 p_part, uint
26302670 t_stat = p_stream . WriteS8 ((int8_t )return_key_type);
26312671 }
26322672
2673+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_LEFTINDENT))
2674+ {
2675+ t_stat = p_stream . WriteU16 (leftindent);
2676+ }
2677+
2678+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_RIGHTINDENT))
2679+ {
2680+ t_stat = p_stream . WriteU16 (rightindent);
2681+ }
2682+
2683+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_SPACEABOVE))
2684+ {
2685+ t_stat = p_stream . WriteU16 (spaceabove);
2686+ }
2687+
2688+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_SPACEBELOW))
2689+ {
2690+ t_stat = p_stream . WriteU16 (spacebelow);
2691+ }
2692+
26332693 if (t_stat == IO_NORMAL)
26342694 t_stat = MCObject::extendedsave (p_stream, p_part, p_version);
26352695
@@ -2709,6 +2769,46 @@ IO_stat MCField::extendedload(MCObjectInputStream& p_stream, uint32_t p_version,
27092769 }
27102770 }
27112771
2772+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_LEFTINDENT) != 0 )
2773+ {
2774+ uint16_t t_value;
2775+ t_stat = checkloadstat (p_stream . ReadU16 (t_value));
2776+ if (t_stat == IO_NORMAL)
2777+ {
2778+ leftindent = t_value;
2779+ }
2780+ }
2781+
2782+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_RIGHTINDENT) != 0 )
2783+ {
2784+ uint16_t t_value;
2785+ t_stat = checkloadstat (p_stream . ReadU16 (t_value));
2786+ if (t_stat == IO_NORMAL)
2787+ {
2788+ rightindent = t_value;
2789+ }
2790+ }
2791+
2792+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_SPACEABOVE) != 0 )
2793+ {
2794+ uint16_t t_value;
2795+ t_stat = checkloadstat (p_stream . ReadU16 (t_value));
2796+ if (t_stat == IO_NORMAL)
2797+ {
2798+ spaceabove = t_value;
2799+ }
2800+ }
2801+
2802+ if (t_stat == IO_NORMAL && (t_flags & FIELD_EXTRA_SPACEBELOW) != 0 )
2803+ {
2804+ uint16_t t_value;
2805+ t_stat = checkloadstat (p_stream . ReadU16 (t_value));
2806+ if (t_stat == IO_NORMAL)
2807+ {
2808+ spacebelow = t_value;
2809+ }
2810+ }
2811+
27122812 if (t_stat == IO_NORMAL)
27132813 t_stat = checkloadstat (p_stream . Skip (t_length));
27142814
@@ -2737,7 +2837,11 @@ IO_stat MCField::save(IO_handle stream, uint4 p_part, bool p_force_ext, uint32_t
27372837 t_has_extension = text_direction != kMCTextDirectionAuto ||
27382838 nalignments != 0 ||
27392839 keyboard_type != kMCInterfaceKeyboardTypeNone ||
2740- return_key_type != kMCInterfaceReturnKeyTypeNone ;
2840+ return_key_type != kMCInterfaceReturnKeyTypeNone ||
2841+ leftindent != 0 ||
2842+ rightindent != 0 ||
2843+ spaceabove != 0 ||
2844+ spacebelow != 0 ;
27412845
27422846 if ((stat = MCObject::save (stream, p_part, t_has_extension || p_force_ext, p_version)) != IO_NORMAL)
27432847 return stat;
0 commit comments