mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-10-07 08:24:11 +00:00
!44211 修复menu按压拖动的时候,分割线异常挑单5.0.0release
Merge pull request !44211 from FredTT/cherry-pick-1727061435
This commit is contained in:
commit
103644e9f1
@ -681,7 +681,19 @@ void MenuItemPattern::OnTouch(const TouchEventInfo& info)
|
||||
{
|
||||
// change menu item paint props on press
|
||||
auto touchType = info.GetTouches().front().GetTouchType();
|
||||
auto pipeline = PipelineBase::GetCurrentContext();
|
||||
if (touchType == TouchType::DOWN) {
|
||||
// change background color, update press status
|
||||
NotifyPressStatus(true);
|
||||
} else if (touchType == TouchType::UP) {
|
||||
NotifyPressStatus(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MenuItemPattern::NotifyPressStatus(bool isPress)
|
||||
{
|
||||
auto host = GetHost();
|
||||
CHECK_NULL_VOID(host);
|
||||
auto pipeline = host->GetContext();
|
||||
CHECK_NULL_VOID(pipeline);
|
||||
auto theme = pipeline->GetTheme<SelectTheme>();
|
||||
CHECK_NULL_VOID(theme);
|
||||
@ -691,8 +703,6 @@ void MenuItemPattern::OnTouch(const TouchEventInfo& info)
|
||||
CHECK_NULL_VOID(menu);
|
||||
auto menuPattern = menu->GetPattern<MenuPattern>();
|
||||
CHECK_NULL_VOID(menuPattern);
|
||||
auto host = GetHost();
|
||||
CHECK_NULL_VOID(host);
|
||||
auto parent = AceType::DynamicCast<UINode>(host->GetParent());
|
||||
auto menuWrapper = GetMenuWrapper();
|
||||
auto menuWrapperPattern = menuWrapper ? menuWrapper->GetPattern<MenuWrapperPattern>() : nullptr;
|
||||
@ -702,7 +712,7 @@ void MenuItemPattern::OnTouch(const TouchEventInfo& info)
|
||||
&& menuWrapperPattern && menuWrapperPattern->HasStackSubMenu() && !IsSubMenu());
|
||||
if (!canChangeColor) return;
|
||||
|
||||
if (touchType == TouchType::DOWN) {
|
||||
if (isPress) {
|
||||
// change background color, update press status
|
||||
SetBgBlendColor(GetSubBuilder() ? theme->GetHoverColor() : theme->GetClickedColor());
|
||||
if (menuWrapperPattern) {
|
||||
@ -710,12 +720,10 @@ void MenuItemPattern::OnTouch(const TouchEventInfo& info)
|
||||
}
|
||||
props->UpdatePress(true);
|
||||
menuPattern->OnItemPressed(parent, index_, true);
|
||||
} else if (touchType == TouchType::UP) {
|
||||
} else {
|
||||
SetBgBlendColor(isHovered_ ? theme->GetHoverColor() : Color::TRANSPARENT);
|
||||
props->UpdatePress(false);
|
||||
menuPattern->OnItemPressed(parent, index_, false);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
PlayBgColorAnimation(false);
|
||||
host->MarkDirtyNode(PROPERTY_UPDATE_RENDER);
|
||||
|
@ -224,6 +224,7 @@ public:
|
||||
}
|
||||
RefPtr<FrameNode> FindTouchedEmbeddedMenuItem(const OffsetF& position);
|
||||
void OnHover(bool isHover);
|
||||
void NotifyPressStatus(bool isPress);
|
||||
|
||||
protected:
|
||||
void RegisterOnKeyEvent();
|
||||
|
@ -153,9 +153,7 @@ void MenuWrapperPattern::ChangeCurMenuItemBgColor()
|
||||
if (curMenuItemPattern->IsDisabled() || curMenuItemPattern->IsStackSubmenuHeader()) {
|
||||
return;
|
||||
}
|
||||
curMenuItemPattern->SetBgBlendColor(
|
||||
curMenuItemPattern->GetSubBuilder() ? theme->GetHoverColor() : theme->GetClickedColor());
|
||||
curMenuItemPattern->PlayBgColorAnimation(false);
|
||||
curMenuItemPattern->NotifyPressStatus(true);
|
||||
}
|
||||
|
||||
void MenuWrapperPattern::ClearLastMenuItem()
|
||||
@ -163,8 +161,7 @@ void MenuWrapperPattern::ClearLastMenuItem()
|
||||
if (lastTouchItem_) {
|
||||
auto lastMenuItemPattern = lastTouchItem_->GetPattern<MenuItemPattern>();
|
||||
CHECK_NULL_VOID(lastMenuItemPattern);
|
||||
lastMenuItemPattern->SetBgBlendColor(Color::TRANSPARENT);
|
||||
lastMenuItemPattern->PlayBgColorAnimation(false);
|
||||
lastMenuItemPattern->NotifyPressStatus(false);
|
||||
lastTouchItem_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user