mirror of https://github.com/vector-im/riot-web
Fix issues with the controls disappearing
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>pull/21833/head
parent
1754602613
commit
3ef20174f3
|
@ -313,7 +313,6 @@ limitations under the License.
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
bottom: 5px;
|
bottom: 5px;
|
||||||
width: 100%;
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transition: opacity 0.5s;
|
transition: opacity 0.5s;
|
||||||
z-index: 200; // To be above _all_ feeds
|
z-index: 200; // To be above _all_ feeds
|
||||||
|
|
|
@ -67,6 +67,7 @@ interface IState {
|
||||||
screensharing: boolean;
|
screensharing: boolean;
|
||||||
callState: CallState;
|
callState: CallState;
|
||||||
controlsVisible: boolean;
|
controlsVisible: boolean;
|
||||||
|
hoveringControls: boolean;
|
||||||
showMoreMenu: boolean;
|
showMoreMenu: boolean;
|
||||||
showDialpad: boolean;
|
showDialpad: boolean;
|
||||||
primaryFeed: CallFeed;
|
primaryFeed: CallFeed;
|
||||||
|
@ -128,6 +129,7 @@ export default class CallView extends React.Component<IProps, IState> {
|
||||||
screensharing: this.props.call.isScreensharing(),
|
screensharing: this.props.call.isScreensharing(),
|
||||||
callState: this.props.call.state,
|
callState: this.props.call.state,
|
||||||
controlsVisible: true,
|
controlsVisible: true,
|
||||||
|
hoveringControls: false,
|
||||||
showMoreMenu: false,
|
showMoreMenu: false,
|
||||||
showDialpad: false,
|
showDialpad: false,
|
||||||
primaryFeed: primary,
|
primaryFeed: primary,
|
||||||
|
@ -244,6 +246,7 @@ export default class CallView extends React.Component<IProps, IState> {
|
||||||
};
|
};
|
||||||
|
|
||||||
private onControlsHideTimer = () => {
|
private onControlsHideTimer = () => {
|
||||||
|
if (this.state.hoveringControls || this.state.showDialpad || this.state.showMoreMenu) return;
|
||||||
this.controlsHideTimer = null;
|
this.controlsHideTimer = null;
|
||||||
this.setState({
|
this.setState({
|
||||||
controlsVisible: false,
|
controlsVisible: false,
|
||||||
|
@ -293,24 +296,10 @@ export default class CallView extends React.Component<IProps, IState> {
|
||||||
|
|
||||||
private onDialpadClick = (): void => {
|
private onDialpadClick = (): void => {
|
||||||
if (!this.state.showDialpad) {
|
if (!this.state.showDialpad) {
|
||||||
if (this.controlsHideTimer) {
|
this.setState({ showDialpad: true });
|
||||||
clearTimeout(this.controlsHideTimer);
|
this.showControls();
|
||||||
this.controlsHideTimer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
showDialpad: true,
|
|
||||||
controlsVisible: true,
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
if (this.controlsHideTimer !== null) {
|
this.setState({ showDialpad: false });
|
||||||
clearTimeout(this.controlsHideTimer);
|
|
||||||
}
|
|
||||||
this.controlsHideTimer = window.setTimeout(this.onControlsHideTimer, CONTROLS_HIDE_DELAY);
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
showDialpad: false,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -345,29 +334,16 @@ export default class CallView extends React.Component<IProps, IState> {
|
||||||
};
|
};
|
||||||
|
|
||||||
private onMoreClick = (): void => {
|
private onMoreClick = (): void => {
|
||||||
if (this.controlsHideTimer) {
|
this.setState({ showMoreMenu: true });
|
||||||
clearTimeout(this.controlsHideTimer);
|
this.showControls();
|
||||||
this.controlsHideTimer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
showMoreMenu: true,
|
|
||||||
controlsVisible: true,
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private closeDialpad = (): void => {
|
private closeDialpad = (): void => {
|
||||||
this.setState({
|
this.setState({ showDialpad: false });
|
||||||
showDialpad: false,
|
|
||||||
});
|
|
||||||
this.controlsHideTimer = window.setTimeout(this.onControlsHideTimer, CONTROLS_HIDE_DELAY);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private closeContextMenu = (): void => {
|
private closeContextMenu = (): void => {
|
||||||
this.setState({
|
this.setState({ showMoreMenu: false });
|
||||||
showMoreMenu: false,
|
|
||||||
});
|
|
||||||
this.controlsHideTimer = window.setTimeout(this.onControlsHideTimer, CONTROLS_HIDE_DELAY);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// we register global shortcuts here, they *must not conflict* with local shortcuts elsewhere or both will fire
|
// we register global shortcuts here, they *must not conflict* with local shortcuts elsewhere or both will fire
|
||||||
|
@ -403,6 +379,15 @@ export default class CallView extends React.Component<IProps, IState> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private onCallControlsMouseEnter = (): void => {
|
||||||
|
this.setState({ hoveringControls: true });
|
||||||
|
this.showControls();
|
||||||
|
};
|
||||||
|
|
||||||
|
private onCallControlsMouseLeave = (): void => {
|
||||||
|
this.setState({ hoveringControls: false });
|
||||||
|
};
|
||||||
|
|
||||||
private onRoomAvatarClick = (): void => {
|
private onRoomAvatarClick = (): void => {
|
||||||
const userFacingRoomId = CallHandler.sharedInstance().roomIdForCall(this.props.call);
|
const userFacingRoomId = CallHandler.sharedInstance().roomIdForCall(this.props.call);
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
|
@ -561,7 +546,11 @@ export default class CallView extends React.Component<IProps, IState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={callControlsClasses}>
|
<div
|
||||||
|
className={callControlsClasses}
|
||||||
|
onMouseEnter={this.onCallControlsMouseEnter}
|
||||||
|
onMouseLeave={this.onCallControlsMouseLeave}
|
||||||
|
>
|
||||||
{ dialpadButton }
|
{ dialpadButton }
|
||||||
<AccessibleButton
|
<AccessibleButton
|
||||||
className={micClasses}
|
className={micClasses}
|
||||||
|
|
Loading…
Reference in New Issue