Skip to content

Commit

Permalink
Fix horizontal scrolling on overlapping panels (#290)
Browse files Browse the repository at this point in the history
  • Loading branch information
Airyzz authored Jun 28, 2024
1 parent 6bb3a0c commit e43f385
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 55 deletions.
97 changes: 48 additions & 49 deletions commet/lib/ui/molecules/overlapping_panels.dart
Original file line number Diff line number Diff line change
Expand Up @@ -191,61 +191,60 @@ class OverlappingPanelsState extends State<OverlappingPanels>
Widget build(BuildContext context) {
double borderRadius = 20;

return Stack(
children: [
Padding(
padding: EdgeInsets.fromLTRB(0, 0, widget.restWidth + 3, 0),
child: ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(borderRadius),
bottomRight: Radius.circular(borderRadius)),
child: Offstage(
offstage: translate < 0,
child: widget.left,
return GestureDetector(
onHorizontalDragStart: (details) {
widget.onDragStart?.call();
},
onHorizontalDragUpdate: (details) {
onTranslate(details.delta.dx);
},
onHorizontalDragEnd: (details) {
_onApplyTranslation();
},
child: Stack(
children: [
Padding(
padding: EdgeInsets.fromLTRB(0, 0, widget.restWidth + 3, 0),
child: ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(borderRadius),
bottomRight: Radius.circular(borderRadius)),
child: Offstage(
offstage: translate < 0,
child: widget.left,
),
),
),
),
),
Padding(
padding: EdgeInsets.fromLTRB(widget.restWidth + 3, 0, 0, 0),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(borderRadius),
bottomLeft: Radius.circular(borderRadius)),
child: Offstage(
offstage: translate > 0,
child: widget.right,
Padding(
padding: EdgeInsets.fromLTRB(widget.restWidth + 3, 0, 0, 0),
child: ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(borderRadius),
bottomLeft: Radius.circular(borderRadius)),
child: Offstage(
offstage: translate > 0,
child: widget.right,
),
),
),
),
),
Transform.translate(
offset: Offset(translate, 0),
child: Container(
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
(translate.abs() * 0.1).clamp(0, 20)),
boxShadow:
Theme.of(context).extension<ShadowSettings>()?.shadows ??
Transform.translate(
offset: Offset(translate, 0),
child: Container(
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
(translate.abs() * 0.1).clamp(0, 20)),
boxShadow: Theme.of(context)
.extension<ShadowSettings>()
?.shadows ??
[
BoxShadow(
color: Colors.black.withAlpha(30),
blurRadius: 20)
]),
child: widget.main),
),
GestureDetector(
behavior: HitTestBehavior.translucent,
onHorizontalDragStart: (details) {
widget.onDragStart?.call();
},
onHorizontalDragUpdate: (details) {
onTranslate(details.delta.dx);
},
onHorizontalDragEnd: (details) {
_onApplyTranslation();
},
),
],
);
child: widget.main),
)
],
));
}
}
12 changes: 6 additions & 6 deletions commet/lib/ui/pages/main/main_page_view_mobile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -87,18 +87,18 @@ class _MainPageViewMobileState extends State<MainPageViewMobile> {
child: Foundation(
child: OverlappingPanels(
key: panelsKey,
left: navigation(context),
main: Foundation(
child: IgnorePointer(
ignoring: shouldMainIgnoreInput,
child: Container(key: mainPanelKey, child: mainPanel()),
)),
onDragStart: () {},
onSideChange: (side) {
setState(() {
shouldMainIgnoreInput = side != RevealSide.main;
});
},
left: navigation(context),
main: Foundation(
child: IgnorePointer(
ignoring: shouldMainIgnoreInput,
child: Container(key: mainPanelKey, child: mainPanel()),
)),
right: rightPanel(context),
)));
}
Expand Down

0 comments on commit e43f385

Please sign in to comment.