Changes default merge settings currently used when not in auto mode or if white space is being auto solved. */
| 247 | Changes default merge settings currently used when not in auto mode or if white space is being auto solved. |
| 248 | */ |
| 249 | void MergeBlockList::updateDefaults(const e_SrcSelector defaultSelector, const bool bConflictsOnly, const bool bWhiteSpaceOnly) |
| 250 | { |
| 251 | // Change all auto selections |
| 252 | MergeBlockList::iterator mbIt; |
| 253 | for(mbIt = begin(); mbIt != end(); ++mbIt) |
| 254 | { |
| 255 | MergeBlock &mb = *mbIt; |
| 256 | bool bConflict = mb.list().empty() || mb.list().begin()->isConflict(); |
| 257 | if(mb.isDelta() && !(mb.hasModfiedText() && (bConflictsOnly || bWhiteSpaceOnly)) && (!bConflictsOnly || bConflict) && (!bWhiteSpaceOnly || mb.isWhiteSpaceConflict())) |
| 258 | { |
| 259 | mb.list().clear(); |
| 260 | if(defaultSelector == e_SrcSelector::Invalid) |
| 261 | { |
| 262 | MergeEditLine mel(mb.id3l()); |
| 263 | |
| 264 | mel.setConflict(); |
| 265 | mb.bConflict = true; |
| 266 | mb.list().push_back(mel); |
| 267 | } |
| 268 | else |
| 269 | { |
| 270 | Diff3LineList::const_iterator d3llit = mb.id3l(); |
| 271 | qint32 j; |
| 272 | |
| 273 | for(j = 0; j < mb.srcRangeLength; ++j) |
| 274 | { |
| 275 | MergeEditLine mel(d3llit); |
| 276 | mel.setSource(defaultSelector, false); |
| 277 | |
| 278 | LineRef srcLine = defaultSelector == e_SrcSelector::A ? d3llit->getLineA() : defaultSelector == e_SrcSelector::B ? d3llit->getLineB() : |
| 279 | defaultSelector == e_SrcSelector::C ? d3llit->getLineC() : |
| 280 | LineRef(); |
| 281 | if(srcLine.isValid()) |
| 282 | { |
| 283 | mb.list().push_back(mel); |
| 284 | } |
| 285 | |
| 286 | ++d3llit; |
| 287 | } |
| 288 | |
| 289 | if(mb.list().empty()) // Make a line nevertheless |
| 290 | { |
| 291 | MergeEditLine mel(mb.id3l()); |
| 292 | mel.setRemoved(defaultSelector); |
| 293 | mb.list().push_back(mel); |
| 294 | } |
| 295 | } |
| 296 | } |
| 297 | } |
| 298 | } |
| 299 | |
| 300 | void MergeBlock::dectectWhiteSpaceConflict(const Diff3Line &d, const bool isThreeWay) |
| 301 | { |
no test coverage detected