diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_toolbar_util.cpp b/frameworks/core/components_ng/pattern/navigation/navigation_toolbar_util.cpp index 321b04d512577717c742762e988d820e1a2f52e3..89ff983b143a88a1179639a9ef7ce0a7120ca90d 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_toolbar_util.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_toolbar_util.cpp @@ -458,30 +458,14 @@ void BuildToolbarMoreMenuNodeAction(const RefPtr& barItemNode, cons auto barItemNode = weakBarItemNode.Upgrade(); CHECK_NULL_VOID(barItemNode); - auto imageNode = barItemNode->GetChildAtIndex(0); - CHECK_NULL_VOID(imageNode); - - auto imageFrameNode = AceType::DynamicCast(imageNode); - CHECK_NULL_VOID(imageFrameNode); - auto imgOffset = imageFrameNode->GetOffsetRelativeToWindow(); - auto imageSize = imageFrameNode->GetGeometryNode()->GetFrameSize(); - auto menuNode = AceType::DynamicCast(menu->GetChildAtIndex(0)); CHECK_NULL_VOID(menuNode); auto menuLayoutProperty = menuNode->GetLayoutProperty(); CHECK_NULL_VOID(menuLayoutProperty); - menuLayoutProperty->UpdateTargetSize(imageSize); + menuLayoutProperty->UpdateSelectAvoidanceMode(AvoidanceMode::AVOID_AROUND_TARGET); auto menuPattern = menuNode->GetPattern(); CHECK_NULL_VOID(menuPattern); menuPattern->SetIsSelectMenu(true); - - bool isRightToLeft = AceApplicationInfo::GetInstance().IsRightToLeft(); - if (isRightToLeft) { - imgOffset.SetX(imgOffset.GetX() + imageSize.Width()); - } else { - imgOffset.SetX(imgOffset.GetX()); - } - imgOffset.SetY(imgOffset.GetY() - imageSize.Height()); if (param.isShowInSubWindow) { auto wrapperPattern = menu->GetPattern(); @@ -492,7 +476,7 @@ void BuildToolbarMoreMenuNodeAction(const RefPtr& barItemNode, cons SubwindowManager::GetInstance()->ShowMenuNG(menu, param, barItemNode, imgOffset); return; } - overlayManager->ShowMenu(id, imgOffset, menu); + overlayManager->ShowMenu(id, OffsetF(0.0f, 0.0f), menu); }; eventHub->SetItemAction(clickCallback); RegisterToolbarHotZoneEvent(buttonNode, barItemNode); @@ -528,10 +512,10 @@ bool CreateToolbarItemNodeAndMenuNode(BarItemNodeParam itemNodeParam, std::vecto menuParam.backgroundEffectOption = toolBarMoreButtonOptions.bgOptions.effectOption.value(); } } - auto barMenuNode = MenuView::Create( - std::move(params), barItemNodeId, V2::BAR_ITEM_ETS_TAG, MenuType::NAVIGATION_MENU, menuParam); auto toolBarItemNode = CreateToolbarMoreMenuNode(barItemNode); CHECK_NULL_RETURN(toolBarItemNode, false); + auto barMenuNode = MenuView::Create( + std::move(params), toolBarItemNode->GetId(), V2::MENU_ITEM_ETS_TAG, MenuType::NAVIGATION_MENU, menuParam); BuildToolbarMoreMenuNodeAction(barItemNode, barMenuNode, toolBarItemNode, menuParam); // set Navigation/NavDestination toolBar "more" button InspectorId