@@ -509,23 +509,36 @@ class ClickableRenderParagraph extends RenderBox
509
509
return true ;
510
510
}
511
511
bool hit = hitTestInlineChildren (result, position);
512
- if (hit && wasHit (result)) {
512
+ if (hit && _wasHit (result)) {
513
513
return true ;
514
514
}
515
515
516
+ if (_hasClickableParagraphParent ()) {
517
+ return false ;
518
+ }
519
+
516
520
if (preferredLineHeight >= 24 ) return false ;
517
521
final hitTryOffset = math.min (24 - _textPainter.preferredLineHeight, preferredLineHeight / 2 );
518
- final dec = Offset (position.dx, position.dy + hitTryOffset);
519
- hit = (hitTestInlineChildren (result, dec ));
522
+ final above = Offset (position.dx, position.dy + hitTryOffset);
523
+ hit = (hitTestInlineChildren (result, above ));
520
524
if (hit && result.path.any ((entry) => entry is TextSpan )) {
521
525
return true ;
522
526
}
523
527
524
- final inc = Offset (position.dx, position.dy - hitTryOffset);
525
- return hitTestInlineChildren (result, inc );
528
+ final below = Offset (position.dx, position.dy - hitTryOffset);
529
+ return hitTestInlineChildren (result, below );
526
530
}
527
531
528
- bool wasHit (HitTestResult result) => result.path.any ((entry) => entry.target is TextSpan );
532
+ bool _wasHit (HitTestResult result) => result.path.any ((entry) => entry.target is TextSpan );
533
+
534
+ bool _hasClickableParagraphParent () {
535
+ var p = parent;
536
+ while (p != null ) {
537
+ if (p is ClickableRenderParagraph ) return true ;
538
+ p = p.parent;
539
+ }
540
+ return false ;
541
+ }
529
542
530
543
bool _needsClipping = false ;
531
544
ui.Shader ? _overflowShader;
@@ -2911,7 +2924,3 @@ class _SelectableFragment with Selectable, Diagnosticable, ChangeNotifier implem
2911
2924
properties.add (DiagnosticsProperty <String >('fullText' , fullText));
2912
2925
}
2913
2926
}
2914
-
2915
- class ExtraOffset extends Offset {
2916
- ExtraOffset (super .dx, super .dy);
2917
- }
0 commit comments