From e9633b2e3b957f18937344421f28157cfcf02ed3 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 18 Jul 2020 12:01:51 +0100 Subject: [PATCH] Use mouseleave instead of mouseout for hover events. Fix tooltip flicker Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/views/messages/_ReactionsRowButton.scss | 5 ----- .../views/elements/AccessibleTooltipButton.tsx | 9 +++++++-- src/components/views/elements/TagTile.js | 14 +++++++++----- src/components/views/elements/TextWithTooltip.js | 4 ++-- src/components/views/elements/Tooltip.tsx | 4 ++-- src/components/views/elements/TooltipButton.js | 4 ++-- .../views/messages/ReactionsRowButton.js | 7 ++++--- src/components/views/rooms/E2EIcon.js | 6 +++--- 8 files changed, 29 insertions(+), 24 deletions(-) diff --git a/res/css/views/messages/_ReactionsRowButton.scss b/res/css/views/messages/_ReactionsRowButton.scss index fe5b081042..9ba1041421 100644 --- a/res/css/views/messages/_ReactionsRowButton.scss +++ b/res/css/views/messages/_ReactionsRowButton.scss @@ -35,11 +35,6 @@ limitations under the License. border-color: $reaction-row-button-selected-border-color; } - // ignore mouse events for all children, treat it as one entire hoverable entity - * { - pointer-events: none; - } - .mx_ReactionsRowButton_content { max-width: 100px; overflow: hidden; diff --git a/src/components/views/elements/AccessibleTooltipButton.tsx b/src/components/views/elements/AccessibleTooltipButton.tsx index 6bb6f9e529..3546f62359 100644 --- a/src/components/views/elements/AccessibleTooltipButton.tsx +++ b/src/components/views/elements/AccessibleTooltipButton.tsx @@ -45,7 +45,7 @@ export default class AccessibleTooltipButton extends React.PureComponent { + onMouseLeave = () => { this.setState({ hover: false, }); @@ -60,7 +60,12 @@ export default class AccessibleTooltipButton extends React.PureComponent :
; return ( - + { children } { tip } diff --git a/src/components/views/elements/TagTile.js b/src/components/views/elements/TagTile.js index 70cdfb7120..2b9d9e5211 100644 --- a/src/components/views/elements/TagTile.js +++ b/src/components/views/elements/TagTile.js @@ -29,6 +29,7 @@ import FlairStore from '../../../stores/FlairStore'; import GroupStore from '../../../stores/GroupStore'; import TagOrderStore from '../../../stores/TagOrderStore'; import MatrixClientContext from "../../../contexts/MatrixClientContext"; +import AccessibleButton from "./AccessibleButton"; // A class for a child of TagPanel (possibly wrapped in a DNDTagTile) that represents // a thing to click on for the user to filter the visible rooms in the RoomList to: @@ -114,7 +115,7 @@ export default createReactClass({ this.setState({ hover: true }); }, - onMouseOut: function() { + onMouseLeave: function() { this.setState({ hover: false }); }, @@ -151,11 +152,14 @@ export default createReactClass({ badgeElement = (
{FormattingUtils.formatCount(badge.count)}
); } - // FIXME: this ought to use AccessibleButton for a11y but that causes onMouseOut/onMouseOver to fire too much const contextButton = this.state.hover || this.props.menuDisplayed ? -
+ {"\u00B7\u00B7\u00B7"} -
:
; + :
; const AccessibleTooltipButton = sdk.getComponent("elements.AccessibleTooltipButton"); @@ -168,7 +172,7 @@ export default createReactClass({
{ + onMouseLeave = () => { this.setState({hover: false}); }; @@ -45,7 +45,7 @@ export default class TextWithTooltip extends React.Component { const Tooltip = sdk.getComponent("elements.Tooltip"); return ( - + {this.props.children} { public render() { // Render a placeholder return ( -
+
); } diff --git a/src/components/views/elements/TooltipButton.js b/src/components/views/elements/TooltipButton.js index a32044873b..5c8d53fbcc 100644 --- a/src/components/views/elements/TooltipButton.js +++ b/src/components/views/elements/TooltipButton.js @@ -34,7 +34,7 @@ export default createReactClass({ }); }, - onMouseOut: function() { + onMouseLeave: function() { this.setState({ hover: false, }); @@ -48,7 +48,7 @@ export default createReactClass({ label={this.props.helpText} /> :
; return ( -
+
? { tip }
diff --git a/src/components/views/messages/ReactionsRowButton.js b/src/components/views/messages/ReactionsRowButton.js index 09824cd315..bb8d9a3b6e 100644 --- a/src/components/views/messages/ReactionsRowButton.js +++ b/src/components/views/messages/ReactionsRowButton.js @@ -74,7 +74,7 @@ export default class ReactionsRowButton extends React.PureComponent { }); } - onMouseOut = () => { + onMouseLeave = () => { this.setState({ tooltipVisible: false, }); @@ -129,11 +129,12 @@ export default class ReactionsRowButton extends React.PureComponent { } const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); - return