summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-09-10 10:01:45 +0200
committerOskar Nyberg <oskar@mullvad.net>2020-09-10 10:01:45 +0200
commit735f1c40d7b07c471bbbc56013b2f2452f05b4e8 (patch)
tree9f6aef2fb82287c733c746c6a94a053b67dc6283 /gui/src/renderer
parent2751012f5575e85e9d2cda7e2267a7820bfd26ed (diff)
parente6608487addb97a4406c4dceb9b8da042eae1b67 (diff)
downloadmullvadvpn-735f1c40d7b07c471bbbc56013b2f2452f05b4e8.tar.xz
mullvadvpn-735f1c40d7b07c471bbbc56013b2f2452f05b4e8.zip
Merge branch 'fix-split-tunneling-scrollbar' into master
Diffstat (limited to 'gui/src/renderer')
-rw-r--r--gui/src/renderer/components/CustomScrollbars.tsx24
-rw-r--r--gui/src/renderer/components/WireguardKeysStyles.tsx2
2 files changed, 24 insertions, 2 deletions
diff --git a/gui/src/renderer/components/CustomScrollbars.tsx b/gui/src/renderer/components/CustomScrollbars.tsx
index 08e996c250..bc56ffcf3c 100644
--- a/gui/src/renderer/components/CustomScrollbars.tsx
+++ b/gui/src/renderer/components/CustomScrollbars.tsx
@@ -1,6 +1,14 @@
import * as React from 'react';
+import styled from 'styled-components';
import { Scheduler } from '../../shared/scheduler';
+const ScrollableContent = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+ minHeight: '100%',
+ height: 'max-content',
+});
+
const AUTOHIDE_TIMEOUT = 1000;
interface IProps {
@@ -54,10 +62,16 @@ export default class CustomScrollbars extends React.Component<IProps, IState> {
};
private scrollableRef = React.createRef<HTMLDivElement>();
+ private scrollableContentRef = React.createRef<HTMLDivElement>();
private trackRef = React.createRef<HTMLDivElement>();
private thumbRef = React.createRef<HTMLDivElement>();
private autoHideScheduler = new Scheduler();
+ // Update scrollbar when content grows/shrinks.
+ private contentResizeObserver = new ResizeObserver(() => {
+ this.updateScrollbarsHelper({ size: true });
+ });
+
public scrollToTop() {
const scrollable = this.scrollableRef.current;
if (scrollable) {
@@ -134,6 +148,10 @@ export default class CustomScrollbars extends React.Component<IProps, IState> {
if (this.props.autoHide) {
this.startAutoHide();
}
+
+ if (this.scrollableContentRef.current) {
+ this.contentResizeObserver.observe(this.scrollableContentRef.current);
+ }
}
public shouldComponentUpdate(nextProps: IProps, nextState: IState) {
@@ -160,6 +178,10 @@ export default class CustomScrollbars extends React.Component<IProps, IState> {
document.removeEventListener('mousemove', this.handleMouseMove);
document.removeEventListener('mouseup', this.handleMouseUp);
document.removeEventListener('mousedown', this.handleMouseDown);
+
+ if (this.scrollableContentRef.current) {
+ this.contentResizeObserver.unobserve(this.scrollableContentRef.current);
+ }
}
public componentDidUpdate() {
@@ -201,7 +223,7 @@ export default class CustomScrollbars extends React.Component<IProps, IState> {
style={{ overflow: 'auto', flex: fillContainer ? '1' : undefined }}
onScroll={this.onScroll}
ref={this.scrollableRef}>
- {children}
+ <ScrollableContent ref={this.scrollableContentRef}>{children}</ScrollableContent>
</div>
</div>
);
diff --git a/gui/src/renderer/components/WireguardKeysStyles.tsx b/gui/src/renderer/components/WireguardKeysStyles.tsx
index c603900e02..e627f16437 100644
--- a/gui/src/renderer/components/WireguardKeysStyles.tsx
+++ b/gui/src/renderer/components/WireguardKeysStyles.tsx
@@ -15,7 +15,7 @@ export const StyledContainer = styled(Container)({
export const StyledContent = styled.div({
display: 'flex',
flexDirection: 'column',
- minHeight: '100%',
+ flex: 1,
});
export const StyledMessages = styled.div({