xuty před 2 roky
rodič
revize
fb9dab06b6
2 změnil soubory, kde provedl 11 přidání a 11 odebrání
  1. 6 5
      lib/src/terminal_view.dart
  2. 5 6
      lib/src/ui/render.dart

+ 6 - 5
lib/src/terminal_view.dart

@@ -336,11 +336,12 @@ class TerminalViewState extends State<TerminalView> {
   }
 
   Rect get cursorRect {
-    final offset = CellOffset(
-      widget.terminal.buffer.cursorX,
-      widget.terminal.buffer.absoluteCursorY,
-    );
-    return renderTerminal.getOffset(offset) & renderTerminal.charSize;
+    return renderTerminal.cursorOffset & renderTerminal.charSize;
+  }
+
+  Rect get globalCursorRect {
+    return renderTerminal.localToGlobal(renderTerminal.cursorOffset) &
+        renderTerminal.charSize;
   }
 
   void _onTapUp(TapUpDetails details) {

+ 5 - 6
lib/src/ui/render.dart

@@ -344,7 +344,7 @@ class RenderTerminal extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
   }
 
   void _notifyEditableRect() {
-    final cursor = localToGlobal(_cursorOffset);
+    final cursor = localToGlobal(cursorOffset);
 
     final rect = Rect.fromLTRB(
       cursor.dx,
@@ -415,7 +415,8 @@ class RenderTerminal extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
     return -_scrollOffset + _padding.top;
   }
 
-  Offset get _cursorOffset {
+  /// The offset of the cursor from the top left corner of this render object.
+  Offset get cursorOffset {
     return Offset(
       _terminal.buffer.cursorX * _charSize.width,
       _terminal.buffer.absoluteCursorY * _charSize.height + _lineOffset,
@@ -458,14 +459,12 @@ class RenderTerminal extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
 
     if (_terminal.buffer.absoluteCursorY >= effectFirstLine &&
         _terminal.buffer.absoluteCursorY <= effectLastLine) {
-      final cursorOffset = offset + _cursorOffset;
-
       if (_isComposingText) {
-        _paintComposingText(canvas, cursorOffset);
+        _paintComposingText(canvas, offset + cursorOffset);
       }
 
       if (_shouldShowCursor) {
-        _paintCursor(canvas, cursorOffset);
+        _paintCursor(canvas, offset + cursorOffset);
       }
     }