!35261 修复:extraOffset机制

Merge pull request !35261 from 周沺耳/postJump
This commit is contained in:
openharmony_ci 2024-06-09 08:12:14 +00:00 committed by Gitee
commit e63abbc2f4
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 12 additions and 9 deletions

View File

@ -91,6 +91,7 @@ frameworks/core/components_ng/pattern/form/ @arondave @arcticsun
frameworks/core/components_ng/pattern/gauge/ @Hu_ZeQi
frameworks/core/components_ng/pattern/gesture/ @zheng-qiyi
frameworks/core/components_ng/pattern/grid/ @zcdqs
frameworks/core/components_ng/pattern/grid/irregular/ @zhoutianer
frameworks/core/components_ng/pattern/grid_col/ @xiexiyun
frameworks/core/components_ng/pattern/grid_container/ @xiexiyun
frameworks/core/components_ng/pattern/grid_row/ @xiexiyun

View File

@ -411,6 +411,7 @@ bool GridPattern::OnDirtyLayoutWrapperSwap(const RefPtr<LayoutWrapper>& dirty, c
}
ProcessEvent(indexChanged, gridLayoutInfo_.currentHeight_ - gridLayoutInfo_.prevHeight_);
gridLayoutInfo_.prevHeight_ = gridLayoutInfo_.currentHeight_;
gridLayoutInfo_.extraOffset_.reset();
SetScrollSource(SCROLL_FROM_NONE);
UpdateScrollBarOffset();
if (config.frameSizeChange) {

View File

@ -50,10 +50,6 @@ void GridIrregularLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper)
gridLayoutInfo_.currentOffset_ = postJumpOffset_;
MeasureOnOffset(mainSize);
}
if (gridLayoutInfo_.extraOffset_.has_value()) {
gridLayoutInfo_.currentOffset_ += gridLayoutInfo_.extraOffset_.value();
gridLayoutInfo_.extraOffset_.reset();
}
} else {
MeasureOnOffset(mainSize);
}
@ -119,6 +115,10 @@ void GridIrregularLayoutAlgorithm::Init(const RefPtr<GridLayoutProperty>& props)
info.crossCount_ = static_cast<int32_t>(crossLens_.size());
CheckForReset();
if (info.extraOffset_) {
postJumpOffset_ += *info.extraOffset_;
}
}
namespace {

View File

@ -22,8 +22,8 @@
#include "core/components_ng/base/frame_node.h"
#include "core/components_ng/layout/layout_wrapper.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_utils.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/pattern/waterflow/water_flow_pattern.h"
#include "core/components_ng/pattern/waterflow/water_flow_sections.h"
#include "core/components_ng/property/calc_length.h"
@ -178,6 +178,10 @@ void WaterFlowSegmentedLayout::Init(const SizeF& frameSize)
if (!wrapper_->IsConstraintNoChanged()) {
postJumpOffset_ = PrepareJump(info_);
}
if (info_->extraOffset_) {
postJumpOffset_ += *info_->extraOffset_;
}
}
void WaterFlowSegmentedLayout::SegmentInit(
@ -334,10 +338,6 @@ void WaterFlowSegmentedLayout::MeasureOnJump(int32_t jumpIdx)
info_->align_ = TransformAutoScroll(item);
}
info_->currentOffset_ = SolveJumpOffset(item) + postJumpOffset_;
if (info_->extraOffset_.has_value()) {
info_->currentOffset_ += info_->extraOffset_.value();
info_->extraOffset_.reset();
}
Fill(jumpIdx);
info_->Sync(mainSize_, false);

View File

@ -262,6 +262,7 @@ bool WaterFlowPattern::OnDirtyLayoutWrapperSwap(const RefPtr<LayoutWrapper>& dir
prevOffset_ = layoutInfo_->Offset();
layoutInfo_->jumpIndex_ = EMPTY_JUMP_INDEX;
layoutInfo_->targetIndex_.reset();
layoutInfo_->extraOffset_.reset();
UpdateScrollBarOffset();
CheckScrollable();