diff --git a/frameworks/core/components_ng/pattern/hyperlink/hyperlink_model_ng.cpp b/frameworks/core/components_ng/pattern/hyperlink/hyperlink_model_ng.cpp index 08bd29ca5462384ab44bee4823cd6661f4aa574b..1ca0a8cd37f9c61cf1c698ffc83c420ea4ea108c 100644 --- a/frameworks/core/components_ng/pattern/hyperlink/hyperlink_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/hyperlink/hyperlink_model_ng.cpp @@ -33,9 +33,8 @@ void HyperlinkModelNG::Create(const std::string& address, const std::string& con auto pipeline = PipelineContext::GetCurrentContext(); CHECK_NULL_VOID(pipeline); - auto theme = pipeline->GetTheme(); - CHECK_NULL_VOID(theme); - SetDraggable(theme->GetDraggable()); + auto draggable = pipeline->GetDraggable(); + SetDraggable(draggable); } void HyperlinkModelNG::SetColor(const Color& value) diff --git a/frameworks/core/components_ng/pattern/image/image_model_ng.cpp b/frameworks/core/components_ng/pattern/image/image_model_ng.cpp index 0dd85211734288e58633391b3bf7567d45aa3726..97c80c4b19303461aac7d8ca2b7f505ed1d5f9ac 100644 --- a/frameworks/core/components_ng/pattern/image/image_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/image/image_model_ng.cpp @@ -51,6 +51,17 @@ void ImageModelNG::Create( auto frameNode = FrameNode::GetOrCreateFrameNode( V2::IMAGE_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); stack->Push(frameNode); + + // set draggable for framenode + auto pipeline = PipelineContext::GetCurrentContext(); + CHECK_NULL_VOID(pipeline); + auto draggable = pipeline->GetDraggable(); + if (draggable && !frameNode->IsDraggable()) { + auto gestureHub = frameNode->GetOrCreateGestureEventHub(); + CHECK_NULL_VOID(gestureHub); + gestureHub->InitDragDropEvent(); + } + frameNode->SetDraggable(draggable); ACE_UPDATE_LAYOUT_PROPERTY( ImageLayoutProperty, ImageSourceInfo, CreateSourceInfo(src, pixMap, bundleName, moduleName)); } diff --git a/frameworks/core/components_ng/pattern/image/image_pattern.cpp b/frameworks/core/components_ng/pattern/image/image_pattern.cpp index 877562e81848b93f29a927bdc62e67032c888afa..01ba0ee00303fc128a2c9c94e7c76c4f98ca1af2 100644 --- a/frameworks/core/components_ng/pattern/image/image_pattern.cpp +++ b/frameworks/core/components_ng/pattern/image/image_pattern.cpp @@ -484,16 +484,6 @@ void ImagePattern::OnAttachToFrameNode() CHECK_NULL_VOID(pipeline); pipeline->AddNodesToNotifyMemoryLevel(host->GetId()); pipeline->AddWindowStateChangedCallback(host->GetId()); - // set draggable for framenode - auto theme = pipeline->GetTheme(); - CHECK_NULL_VOID(theme); - auto draggable = theme->GetDraggable(); - if (draggable && !host->IsDraggable()) { - auto gestureHub = host->GetOrCreateGestureEventHub(); - CHECK_NULL_VOID(gestureHub); - gestureHub->InitDragDropEvent(); - } - host->SetDraggable(draggable); } void ImagePattern::OnDetachFromFrameNode(FrameNode* frameNode) diff --git a/frameworks/core/components_ng/pattern/rich_editor/rich_editor_model_ng.cpp b/frameworks/core/components_ng/pattern/rich_editor/rich_editor_model_ng.cpp index 7d31f83158925934fe602a61a4d5f03b8a1f79e0..6d06539ff74048a0c0a3d12bb9603e49d0db59b8 100644 --- a/frameworks/core/components_ng/pattern/rich_editor/rich_editor_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/rich_editor/rich_editor_model_ng.cpp @@ -42,9 +42,8 @@ void RichEditorModelNG::Create() auto pipeline = PipelineContext::GetCurrentContext(); CHECK_NULL_VOID(pipeline); - auto theme = pipeline->GetTheme(); - CHECK_NULL_VOID(theme); - SetDraggable(theme->GetDraggable()); + auto draggable = pipeline->GetDraggable(); + SetDraggable(draggable); } void RichEditorModelNG::SetDraggable(bool draggable) diff --git a/frameworks/core/components_ng/pattern/text/text_model_ng.cpp b/frameworks/core/components_ng/pattern/text/text_model_ng.cpp index 10ab760b007c0222d4619441617d4c825aa5813d..c8508ca68051cdb158543f3962f392b885b140db 100644 --- a/frameworks/core/components_ng/pattern/text/text_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/text/text_model_ng.cpp @@ -34,6 +34,11 @@ void TextModelNG::Create(const std::string& content) FrameNode::GetOrCreateFrameNode(V2::TEXT_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); stack->Push(frameNode); + // set draggable for framenode + auto pipeline = PipelineContext::GetCurrentContext(); + CHECK_NULL_VOID(pipeline); + auto draggable = pipeline->GetDraggable(); + frameNode->SetDraggable(draggable); ACE_UPDATE_LAYOUT_PROPERTY(TextLayoutProperty, Content, content); } diff --git a/frameworks/core/components_ng/pattern/text/text_pattern.cpp b/frameworks/core/components_ng/pattern/text/text_pattern.cpp index 8f7e0a018335a3b35ba6b64a61383a67f4d61c41..736853f6171baaa7241e0f85f5a48c8b3f3a044c 100644 --- a/frameworks/core/components_ng/pattern/text/text_pattern.cpp +++ b/frameworks/core/components_ng/pattern/text/text_pattern.cpp @@ -61,9 +61,6 @@ void TextPattern::OnAttachToFrameNode() } InitSurfaceChangedCallback(); InitSurfacePositionChangedCallback(); - auto theme = pipeline->GetTheme(); - CHECK_NULL_VOID(theme); - host->SetDraggable(theme->GetDraggable()); auto textLayoutProperty = GetLayoutProperty(); textLayoutProperty->UpdateTextAlign(TextAlign::START); textLayoutProperty->UpdateAlignment(Alignment::CENTER_LEFT); diff --git a/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp b/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp index b798345a269eb89c4e20dda08220d64376c46d7f..f3938ca683617f78916207adc584930a9cd0ecaf 100644 --- a/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp @@ -81,7 +81,8 @@ void TextFieldModelNG::CreateNode( AddDragFrameNodeToManager(); PaddingProperty paddings; ProcessDefaultPadding(paddings); - SetDraggable(textFieldTheme->GetDraggable()); + auto draggable = pipeline->GetDraggable(); + SetDraggable(draggable); ACE_UPDATE_LAYOUT_PROPERTY(LayoutProperty, Padding, paddings); } diff --git a/frameworks/core/pipeline/pipeline_base.h b/frameworks/core/pipeline/pipeline_base.h index 0bfcaac941eaaf702ad95c267738a64288782e0c..650976927fc41b34cb12c79a2b8d47525ec9e3fd 100644 --- a/frameworks/core/pipeline/pipeline_base.h +++ b/frameworks/core/pipeline/pipeline_base.h @@ -503,6 +503,17 @@ public: return {}; } + template + bool GetDraggable() + { + if (IsJsCard()) { + return false; + } + auto theme = GetTheme(); + CHECK_NULL_RETURN(theme, false); + return theme->GetDraggable(); + } + const RefPtr& GetTextFieldManager() { return textFieldManager_;