From fa72ade7e8da1195eff678c65bb5e72bdea9180f Mon Sep 17 00:00:00 2001 From: wujinhui Date: Sat, 13 Sep 2025 15:40:01 +0800 Subject: [PATCH] bug fix setCrossLanguageOptions Signed-off-by: wujinhui --- .../arkui-ohos/generated/component/idlize.ets | 10 ++++----- .../arkts/ArkUIGeneratedNativeModule.ets | 2 +- .../arkui-ohos/src/FrameNode.ets | 9 +++++++- .../src/generated/arkoala_api_generated.h | 2 +- .../native/src/generated/bridge_generated.cc | 6 +++--- .../interface/arkoala_api_generated.h | 2 +- .../frame_node_extender_accessor.cpp | 21 ++++++++++++------- 7 files changed, 33 insertions(+), 19 deletions(-) diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/component/idlize.ets b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/component/idlize.ets index 0cbba46b70c..35b72b86c9c 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/component/idlize.ets +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/component/idlize.ets @@ -795,8 +795,8 @@ export class FrameNodeExtender { static disposeTree_serialize(peer: FrameNode): void { ArkUIGeneratedNativeModule._FrameNodeExtender_disposeTree(extractors.toFrameNodePtr(peer)) } - static setCrossLanguageOptions_serialize(peer: FrameNode, options: boolean): void { - ArkUIGeneratedNativeModule._FrameNodeExtender_setCrossLanguageOptions(extractors.toFrameNodePtr(peer), options ? 1 : 0) + static setCrossLanguageOptions_serialize(peer: FrameNode, options: boolean): boolean { + return ArkUIGeneratedNativeModule._FrameNodeExtender_setCrossLanguageOptions(extractors.toFrameNodePtr(peer), options ? 1 : 0) } static getCrossLanguageOptions_serialize(peer: FrameNode): boolean { const retval = ArkUIGeneratedNativeModule._FrameNodeExtender_getCrossLanguageOptions(extractors.toFrameNodePtr(peer)) @@ -1040,11 +1040,11 @@ export class FrameNodeExtender { FrameNodeExtender.disposeTree_serialize(peer_casted) return } - public static setCrossLanguageOptions(peer: FrameNode, options: boolean): void { + public static setCrossLanguageOptions(peer: FrameNode, options: boolean): boolean { const peer_casted = peer as (FrameNode) const options_casted = options as (boolean) - FrameNodeExtender.setCrossLanguageOptions_serialize(peer_casted, options_casted) - return + return FrameNodeExtender.setCrossLanguageOptions_serialize(peer_casted, options_casted) + } public static getCrossLanguageOptions(peer: FrameNode): boolean { const peer_casted = peer as (FrameNode) diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/framework/arkts/ArkUIGeneratedNativeModule.ets b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/framework/arkts/ArkUIGeneratedNativeModule.ets index bad21c899a1..f209c397c3e 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/framework/arkts/ArkUIGeneratedNativeModule.ets +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/framework/arkts/ArkUIGeneratedNativeModule.ets @@ -3972,7 +3972,7 @@ export class ArkUIGeneratedNativeModule { @ani.unsafe.Direct native static _FrameNodeExtender_disposeTree(peer: KPointer): void @ani.unsafe.Direct - native static _FrameNodeExtender_setCrossLanguageOptions(peer: KPointer, options: KInt): void + native static _FrameNodeExtender_setCrossLanguageOptions(peer: KPointer, options: KInt): boolean @ani.unsafe.Direct native static _FrameNodeExtender_getCrossLanguageOptions(peer: KPointer): boolean @ani.unsafe.Direct diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/FrameNode.ets b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/FrameNode.ets index 72e9d8a6b08..f13fb1bc7af 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/FrameNode.ets +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/src/FrameNode.ets @@ -122,6 +122,7 @@ import { ElementIdToCustomProperties } from "#handwritten" import { ObjectLinkDecoratedVariable } from "./stateManagement/decoratorImpl/decoratorObjectLink" import { FrameNodeExtender } from './framework'; import { extractors } from "#handwritten"; +import hilog from '@ohos.hilog'; export interface CrossLanguageOptions { attributeSetting?: boolean; @@ -571,7 +572,13 @@ export class FrameNode implements MaterializedBase { }; public setCrossLanguageOptions(options: CrossLanguageOptions): void { let setting: boolean = options.attributeSetting ? options.attributeSetting! : false; - FrameNodeExtender.setCrossLanguageOptions(this, setting); + let isSupport = FrameNodeExtender.setCrossLanguageOptions(this, setting); + if(!isSupport) { + let errorMessage = 'The FrameNode cannot be set whether to support cross-language common attribute setting.'; + const error = Error(errorMessage); + hilog.error(0x3900, 'Ace', errorMessage); + throw new BusinessError(100021, error); + } } public getCrossLanguageOptions(): CrossLanguageOptions { let option: boolean = FrameNodeExtender.getCrossLanguageOptions(this); diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h index 90c520ec12b..f3a28374e52 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/arkoala_api_generated.h @@ -23802,7 +23802,7 @@ typedef struct GENERATED_ArkUIFrameNodeExtenderAccessor { Ark_String (*getInspectorInfo)(Ark_FrameNode peer); void (*invalidate)(Ark_FrameNode peer); void (*disposeTree)(Ark_FrameNode peer); - void (*setCrossLanguageOptions)(Ark_FrameNode peer, + Ark_Boolean (*setCrossLanguageOptions)(Ark_FrameNode peer, Ark_Boolean options); Ark_Boolean (*getCrossLanguageOptions)(Ark_FrameNode peer); void (*setMeasuredSize)(Ark_FrameNode peer, diff --git a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/bridge_generated.cc b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/bridge_generated.cc index c0dc1983adf..c56c5e72e23 100644 --- a/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/bridge_generated.cc +++ b/frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/framework/native/src/generated/bridge_generated.cc @@ -28903,10 +28903,10 @@ void impl_FrameNodeExtender_disposeTree(Ark_NativePointer peer) { GetAccessors()->getFrameNodeExtenderAccessor()->disposeTree(static_cast(peer)); } KOALA_INTEROP_DIRECT_V1(FrameNodeExtender_disposeTree, Ark_NativePointer) -void impl_FrameNodeExtender_setCrossLanguageOptions(Ark_NativePointer peer, Ark_Boolean options) { - GetAccessors()->getFrameNodeExtenderAccessor()->setCrossLanguageOptions(static_cast(peer), options); +Ark_Boolean impl_FrameNodeExtender_setCrossLanguageOptions(Ark_NativePointer peer, Ark_Boolean options) { + return GetAccessors()->getFrameNodeExtenderAccessor()->setCrossLanguageOptions(static_cast(peer), options); } -KOALA_INTEROP_DIRECT_V2(FrameNodeExtender_setCrossLanguageOptions, Ark_NativePointer, Ark_Boolean) +KOALA_INTEROP_DIRECT_2(FrameNodeExtender_setCrossLanguageOptions,Ark_Boolean, Ark_NativePointer, Ark_Boolean) Ark_Boolean impl_FrameNodeExtender_getCrossLanguageOptions(Ark_NativePointer peer) { return GetAccessors()->getFrameNodeExtenderAccessor()->getCrossLanguageOptions(static_cast(peer)); } diff --git a/frameworks/core/interfaces/native/generated/interface/arkoala_api_generated.h b/frameworks/core/interfaces/native/generated/interface/arkoala_api_generated.h index 90c520ec12b..f3a28374e52 100644 --- a/frameworks/core/interfaces/native/generated/interface/arkoala_api_generated.h +++ b/frameworks/core/interfaces/native/generated/interface/arkoala_api_generated.h @@ -23802,7 +23802,7 @@ typedef struct GENERATED_ArkUIFrameNodeExtenderAccessor { Ark_String (*getInspectorInfo)(Ark_FrameNode peer); void (*invalidate)(Ark_FrameNode peer); void (*disposeTree)(Ark_FrameNode peer); - void (*setCrossLanguageOptions)(Ark_FrameNode peer, + Ark_Boolean (*setCrossLanguageOptions)(Ark_FrameNode peer, Ark_Boolean options); Ark_Boolean (*getCrossLanguageOptions)(Ark_FrameNode peer); void (*setMeasuredSize)(Ark_FrameNode peer, diff --git a/frameworks/core/interfaces/native/implementation/frame_node_extender_accessor.cpp b/frameworks/core/interfaces/native/implementation/frame_node_extender_accessor.cpp index a5cdbec80a2..36d8fc94da7 100644 --- a/frameworks/core/interfaces/native/implementation/frame_node_extender_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/frame_node_extender_accessor.cpp @@ -400,19 +400,26 @@ void DisposeTreeImpl(Ark_FrameNode peer) parent->RemoveChild(frameNode); } } -void SetCrossLanguageOptionsImpl(Ark_FrameNode peer, - Ark_Boolean options) +Ark_Boolean SetCrossLanguageOptionsImpl(Ark_FrameNode peer, Ark_Boolean options) { auto frameNode = FrameNodePeer::GetFrameNodeByPeer(peer); - CHECK_NULL_VOID(frameNode); - static const std::vector nodeTypeArray = { - OHOS::Ace::V2::SCROLL_ETS_TAG, - }; + CHECK_NULL_RETURN(frameNode, false); + static const std::vector nodeTypeArray = { OHOS::Ace::V2::SCROLL_ETS_TAG, + OHOS::Ace::V2::SWIPER_ETS_TAG, OHOS::Ace::V2::LIST_ETS_TAG, OHOS::Ace::V2::LIST_ITEM_ETS_TAG, + OHOS::Ace::V2::LIST_ITEM_GROUP_ETS_TAG, OHOS::Ace::V2::WATERFLOW_ETS_TAG, OHOS::Ace::V2::FLOW_ITEM_ETS_TAG, + OHOS::Ace::V2::GRID_ETS_TAG, OHOS::Ace::V2::GRID_ITEM_ETS_TAG, OHOS::Ace::V2::TEXT_ETS_TAG, + OHOS::Ace::V2::TEXTINPUT_ETS_TAG, OHOS::Ace::V2::TEXTAREA_ETS_TAG, OHOS::Ace::V2::COLUMN_ETS_TAG, + OHOS::Ace::V2::ROW_ETS_TAG, OHOS::Ace::V2::STACK_ETS_TAG, OHOS::Ace::V2::FLEX_ETS_TAG, + OHOS::Ace::V2::RELATIVE_CONTAINER_ETS_TAG, OHOS::Ace::V2::PROGRESS_ETS_TAG, + OHOS::Ace::V2::LOADING_PROGRESS_ETS_TAG, OHOS::Ace::V2::IMAGE_ETS_TAG, OHOS::Ace::V2::BUTTON_ETS_TAG, + OHOS::Ace::V2::CHECKBOX_ETS_TAG, OHOS::Ace::V2::RADIO_ETS_TAG, OHOS::Ace::V2::SLIDER_ETS_TAG, + OHOS::Ace::V2::TOGGLE_ETS_TAG, OHOS::Ace::V2::XCOMPONENT_ETS_TAG }; auto pos = std::find(nodeTypeArray.begin(), nodeTypeArray.end(), frameNode->GetTag()); if (pos == nodeTypeArray.end()) { - return; + return false; } frameNode->SetIsCrossLanguageAttributeSetting(options); + return true; } Ark_Boolean GetCrossLanguageOptionsImpl(Ark_FrameNode peer) { -- Gitee