[WEEX-403] Fix waterfall sticky
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/7d28c1cb Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/7d28c1cb Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/7d28c1cb Branch: refs/heads/master Commit: 7d28c1cb6bcfbb47a8b3acfc581335698f0fc700 Parents: 5ab00a0 Author: miomin <[email protected]> Authored: Thu May 24 15:28:03 2018 +0800 Committer: YorkShen <[email protected]> Committed: Thu May 24 15:53:16 2018 +0800 ---------------------------------------------------------------------- weex_core/Source/core/render/node/render_list.h | 4 ++-- weex_core/Source/core/render/node/render_object.h | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7d28c1cb/weex_core/Source/core/render/node/render_list.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_list.h b/weex_core/Source/core/render/node/render_list.h index 25b6ed0..abc23cd 100644 --- a/weex_core/Source/core/render/node/render_list.h +++ b/weex_core/Source/core/render/node/render_list.h @@ -205,8 +205,8 @@ namespace WeexCore { if (Type() == kRenderWaterfall || Type() == kRenderRecycleList) { if(child->Type() == kRenderHeader || child->Type() == kRenderFooter) { child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating); - } else if (child->getStypePositionType() == kSticky) { - child->ApplyStyle(WIDTH, to_string(GetViewPortWidth()), updating); + } else if (child->IsSticky()) { + child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating); } else if (child->Type() == kRenderCell || child->Type() == kRenderCellSlot){ child->ApplyStyle(WIDTH, to_string(mColumnWidth), updating); } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/7d28c1cb/weex_core/Source/core/render/node/render_object.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_object.h b/weex_core/Source/core/render/node/render_object.h index 7c45485..c92f4e9 100644 --- a/weex_core/Source/core/render/node/render_object.h +++ b/weex_core/Source/core/render/node/render_object.h @@ -64,7 +64,6 @@ namespace WeexCore { friend class RenderPage; - public: inline void LayoutBefore() { if (isDirty()) { @@ -210,6 +209,9 @@ namespace WeexCore { return kTypeLayout; } else if (key == POSITION) { setStylePositionType(GetWXCorePositionType(value)); + if (value == STICKY) { + mIsSticky = true; + } mapInsertOrAssign(mStyles, key, value); return kTypeStyle; } else if (key == LEFT) { @@ -438,14 +440,18 @@ namespace WeexCore { return mIsRootRender; } - inline bool IsAppendTree(){ + inline bool IsAppendTree() { std::string append = GetAttr(APPEND); - if(append == "tree"){ + if(append == "tree") { return true; } return false; } + inline bool IsSticky() { + return mIsSticky; + } + private: RenderObject *mParentRender; StylesMap *mStyles; @@ -453,6 +459,7 @@ namespace WeexCore { EventsSet *mEvents; float mViewPortWidth = -1; bool mIsRootRender; + bool mIsSticky = false; }; } //end WeexCore #endif //RenderObject_h
