diff --git a/lib/src/ui/columns/pluto_column_title.dart b/lib/src/ui/columns/pluto_column_title.dart index 960af5f31..f65b40de8 100644 --- a/lib/src/ui/columns/pluto_column_title.dart +++ b/lib/src/ui/columns/pluto_column_title.dart @@ -443,9 +443,40 @@ class _ColumnWidget extends StatelessWidget { required this.height, }); - EdgeInsets get padding => - column.titlePadding ?? - stateManager.configuration.style.defaultColumnTitlePadding; + EdgeInsets get padding { + final EdgeInsets basePadding = column.titlePadding ?? + stateManager.configuration.style.defaultColumnTitlePadding; + + final scrollbarConfig = stateManager.configuration.scrollbar; + final bool needsVerticalGap = scrollbarConfig.draggableScrollbar && + stateManager.scroll.bodyRowsVertical != null; + + if (!needsVerticalGap) { + return basePadding; + } + + final double gap = scrollbarConfig.hoverWidth; + + if (gap <= 0) { + return basePadding; + } + + if (stateManager.isRTL) { + return EdgeInsets.fromLTRB( + basePadding.left + gap, + basePadding.top, + basePadding.right, + basePadding.bottom, + ); + } + + return EdgeInsets.fromLTRB( + basePadding.left, + basePadding.top, + basePadding.right + gap, + basePadding.bottom, + ); + } bool get showSizedBoxForIcon => column.isShowRightIcon && diff --git a/lib/src/widgets/pluto_scrollbar.dart b/lib/src/widgets/pluto_scrollbar.dart index 9106c56f0..264529a01 100644 --- a/lib/src/widgets/pluto_scrollbar.dart +++ b/lib/src/widgets/pluto_scrollbar.dart @@ -578,10 +578,31 @@ class PlutoGridCupertinoScrollbarState extends State @override Widget build(BuildContext context) { - Widget child = CustomPaint( + final bool hasVerticalScrollbar = widget.verticalController != null; + + final bool hasHorizontalScrollbar = widget.horizontalController != null; + + Widget child = widget.child; + + final double rightPadding = + hasVerticalScrollbar ? widget.hoverWidth : 0.0; + final double bottomPadding = + hasHorizontalScrollbar ? widget.hoverWidth : 0.0; + + if (rightPadding > 0 || bottomPadding > 0) { + child = Padding( + padding: EdgeInsets.only( + right: rightPadding, + bottom: bottomPadding, + ), + child: child, + ); + } + + child = CustomPaint( key: _customPaintKey, foregroundPainter: _painter, - child: RepaintBoundary(child: widget.child), + child: RepaintBoundary(child: child), ); if (widget.enableHover) {