From e8a0ee3db07c5279e859a86dace83565ee007445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E6=98=8E?= Date: Thu, 6 Jun 2024 20:48:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dricheditor=E7=9A=84builderspa?= =?UTF-8?q?n=E6=8B=96=E6=8B=BD=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 姚明 Change-Id: Ibab8340585de4a43cb66d2dd7d019995e066777f --- .../core/components_ng/event/gesture_event_hub.cpp | 7 ++++++- .../pattern/rich_editor/rich_editor_pattern.cpp | 1 + .../rich_editor_drag_overlay_modifier.cpp | 10 +++++----- .../rich_editor_drag_overlay_modifier.h | 7 ++++--- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/frameworks/core/components_ng/event/gesture_event_hub.cpp b/frameworks/core/components_ng/event/gesture_event_hub.cpp index 3fdceda80c7..92ce93e4a3a 100644 --- a/frameworks/core/components_ng/event/gesture_event_hub.cpp +++ b/frameworks/core/components_ng/event/gesture_event_hub.cpp @@ -859,7 +859,9 @@ void GestureEventHub::OnDragStart(const GestureEvent& info, const RefPtrSetIsDefaultOnDragStartExecuted(true); } dragEvent->SetPressedKeyCodes(info.GetPressedKeyCodes()); + if (GetTextDraggable() && info.GetInputEventType() == InputEventType::MOUSE_BUTTON) { + GenerateMousePixelMap(info); + } dragDropInfo = onDragStart(dragEvent, extraParams); auto frameTag = frameNode->GetTag(); diff --git a/frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.cpp b/frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.cpp index a538ca8cacb..4da4219faea 100644 --- a/frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.cpp +++ b/frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.cpp @@ -5395,6 +5395,7 @@ void RichEditorPattern::HandleMouseLeftButtonMove(const MouseInfo& info) void RichEditorPattern::HandleMouseLeftButtonPress(const MouseInfo& info) { isMousePressed_ = true; + HandleOnlyImageSelected(info.GetLocalLocation(), false); if (IsScrollBarPressed(info) || BetweenSelectedPosition(info.GetGlobalLocation())) { blockPress_ = true; return; diff --git a/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.cpp b/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.cpp index 181d5e2c8f3..2434b6c7eab 100644 --- a/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.cpp +++ b/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.cpp @@ -113,8 +113,8 @@ void RichEditorDragOverlayModifier::PaintImage(DrawingContext& context) } } -void RichEditorDragOverlayModifier::PaintImageNode(DrawingContext& context, RefPtr imageNode, - RefPtr pattern, OffsetF offset) +void RichEditorDragOverlayModifier::PaintImageNode(DrawingContext& context, const RefPtr& imageNode, + const RefPtr& pattern, const OffsetF& offset) { auto& canvas = context.canvas; auto geometryNode = imageNode->GetGeometryNode(); @@ -155,11 +155,11 @@ void RichEditorDragOverlayModifier::PaintImageNode(DrawingContext& context, RefP canvas.Restore(); } -void RichEditorDragOverlayModifier::PaintFrameNode(DrawingContext& context, RefPtr imageNode, - RefPtr pattern, OffsetF offset) +void RichEditorDragOverlayModifier::PaintFrameNode(DrawingContext& context, const RefPtr& frameNode, + const RefPtr& pattern, const OffsetF& offset) { auto& canvas = context.canvas; - auto pixelMap = imageNode->GetRenderContext()->GetThumbnailPixelMap(); + auto pixelMap = frameNode->GetPixelMap(); CHECK_NULL_VOID(pixelMap); auto canvasImage = CanvasImage::Create(pixelMap); auto layoutProperty = pattern->GetLayoutProperty(); diff --git a/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.h b/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.h index 3cbec324699..432efb62719 100644 --- a/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.h +++ b/frameworks/core/components_ng/pattern/rich_editor_drag/rich_editor_drag_overlay_modifier.h @@ -117,9 +117,10 @@ public: private: void PaintImage(DrawingContext& context); - void PaintImageNode(DrawingContext& context, RefPtr imageNode, RefPtr pattern, - OffsetF offset); - void PaintFrameNode(DrawingContext& context, RefPtr frameNode, RefPtr pattern, OffsetF offset); + void PaintImageNode(DrawingContext& context, const RefPtr& imageNode, + const RefPtr& pattern, const OffsetF& offset); + void PaintFrameNode(DrawingContext& context, const RefPtr& frameNode, + const RefPtr& pattern, const OffsetF& offset); void PaintBackground(const RSPath& path, RSCanvas& canvas, RefPtr textDragPattern, RefPtr richEditorPattern); void PaintSelBackground(RSCanvas& canvas, RefPtr textDragPattern, -- Gitee