Skip to content

Commit

Permalink
#4, #185: Improves text selection stability
Browse files Browse the repository at this point in the history
  • Loading branch information
espresso3389 committed Aug 25, 2024
1 parent 44658f9 commit d1dfde8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 13 deletions.
5 changes: 2 additions & 3 deletions lib/src/widgets/pdf_page_text_overlay.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,12 @@ import '../utils/double_extensions.dart';
/// If [PdfDocument.permissions] does not allow copying, the widget does not show anything.
class PdfPageTextOverlay extends StatefulWidget {
const PdfPageTextOverlay({
required this.registrar,
required this.page,
required this.pageRect,
this.onTextSelectionChange,
super.key,
});

final SelectionRegistrar? registrar;
final PdfPage page;
final Rect pageRect;
final void Function(PdfTextRanges? ranges)? onTextSelectionChange;
Expand Down Expand Up @@ -95,12 +93,13 @@ class _PdfPageTextOverlayState extends State<PdfPageTextOverlay> {
widget.page.document.permissions?.allowsCopying == false) {
return const SizedBox();
}
final registrar = SelectionContainer.maybeOf(context);
return MouseRegion(
hitTestBehavior: HitTestBehavior.translucent,
cursor: cursor,
onHover: _onHover,
child: _PdfTextWidget(
widget.registrar,
registrar,
this,
),
);
Expand Down
16 changes: 6 additions & 10 deletions lib/src/widgets/pdf_viewer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -759,22 +759,18 @@ class _PdfViewerState extends State<PdfViewer>
_document!.permissions?.allowsCopying != false) {
textWidgets.add(
Positioned(
key: Key('_pagePos:${page.pageNumber}'),
left: rectExternal.left,
top: rectExternal.top,
width: rectExternal.width,
height: rectExternal.height,
child: selectionAreaInjector(
page,
Builder(builder: (context) {
final registrar = SelectionContainer.maybeOf(context);
return PdfPageTextOverlay(
key: Key('pageText:${page.pageNumber}'),
registrar: registrar,
page: page,
pageRect: rectExternal,
onTextSelectionChange: widget.params.onTextSelectionChange,
);
}),
PdfPageTextOverlay(
page: page,
pageRect: rectExternal,
onTextSelectionChange: widget.params.onTextSelectionChange,
),
),
),
);
Expand Down

0 comments on commit d1dfde8

Please sign in to comment.