diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart index 5f9b2142fe..bebeeb6c3f 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/render/image/image_node_widget.dart @@ -34,6 +34,8 @@ class ImageNodeWidget extends StatefulWidget { class _ImageNodeWidgetState extends State with SelectableMixin { + RenderBox get _renderBox => context.findRenderObject() as RenderBox; + final _imageKey = GlobalKey(); double? _imageWidth; @@ -76,6 +78,12 @@ class _ImageNodeWidgetState extends State ); } + @override + bool get shouldCursorBlink => false; + + @override + CursorStyle get cursorStyle => CursorStyle.borderLine; + @override Position start() { return Position(path: widget.node.path, offset: 0); @@ -93,7 +101,8 @@ class _ImageNodeWidgetState extends State @override Rect? getCursorRectInPosition(Position position) { - return null; + final size = _renderBox.size; + return Rect.fromLTWH(-size.width / 2.0, 0, size.width, size.height); } @override diff --git a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart index dc0ef59203..86d39ba826 100644 --- a/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart +++ b/frontend/app_flowy/packages/appflowy_editor/lib/src/service/selection_service.dart @@ -508,6 +508,11 @@ class _AppFlowySelectionState extends State void _showContextMenu(TapDownDetails details) { _clearContextMenu(); + // For now, only support the text node. + if (!currentSelectedNodes.every((element) => element is TextNode)) { + return; + } + final baseOffset = editorState.renderBox?.localToGlobal(Offset.zero) ?? Offset.zero; final offset = details.globalPosition + const Offset(10, 10) - baseOffset;