@@ -105,6 +105,41 @@ public void copyTo(MarginsCollapseInfo destInfo) {
105
105
destInfo .setClearanceApplied (clearanceApplied );
106
106
}
107
107
108
+ public static MarginsCollapseInfo createDeepCopy (MarginsCollapseInfo instance ) {
109
+ MarginsCollapseInfo copy = new MarginsCollapseInfo ();
110
+ instance .copyTo (copy );
111
+
112
+ copy .collapseBefore = instance .collapseBefore .clone ();
113
+ copy .collapseAfter = instance .collapseAfter .clone ();
114
+ if (instance .ownCollapseAfter != null ) {
115
+ copy .setOwnCollapseAfter (instance .ownCollapseAfter .clone ());
116
+ }
117
+
118
+ return copy ;
119
+ }
120
+
121
+ public static void updateFromCopy (MarginsCollapseInfo originalInstance , MarginsCollapseInfo processedCopy ) {
122
+ originalInstance .ignoreOwnMarginTop = processedCopy .ignoreOwnMarginTop ;
123
+ originalInstance .ignoreOwnMarginBottom = processedCopy .ignoreOwnMarginBottom ;
124
+
125
+ originalInstance .collapseBefore .joinMargin (processedCopy .collapseBefore );
126
+ originalInstance .collapseAfter .joinMargin (processedCopy .collapseAfter );
127
+
128
+ if (processedCopy .getOwnCollapseAfter () != null ) {
129
+ if (originalInstance .getOwnCollapseAfter () == null ) {
130
+ originalInstance .setOwnCollapseAfter (new MarginsCollapse ());
131
+ }
132
+ originalInstance .getOwnCollapseAfter ().joinMargin (processedCopy .getOwnCollapseAfter ());
133
+ }
134
+ originalInstance .setSelfCollapsing (processedCopy .isSelfCollapsing );
135
+ originalInstance .setBufferSpaceOnTop (processedCopy .bufferSpaceOnTop );
136
+ originalInstance .setBufferSpaceOnBottom (processedCopy .bufferSpaceOnBottom );
137
+ originalInstance .setUsedBufferSpaceOnTop (processedCopy .usedBufferSpaceOnTop );
138
+ originalInstance .setUsedBufferSpaceOnBottom (processedCopy .usedBufferSpaceOnBottom );
139
+
140
+ originalInstance .setClearanceApplied (processedCopy .clearanceApplied );
141
+ }
142
+
108
143
MarginsCollapse getCollapseBefore () {
109
144
return this .collapseBefore ;
110
145
}
0 commit comments