diff options
author | Ben Rohlfs <brohlfs@google.com> | 2021-10-21 18:47:03 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-10-21 18:47:03 +0000 |
commit | 7e4d3ff70430a8582b3dabe605f387f5168029fe (patch) | |
tree | bc8465378231432d97449c49da787a34613f9e66 | |
parent | f7418e73cc5140ed392233d49b3219522aa9bd0b (diff) | |
parent | d3eded5cf534d4808cf0d92146db0ec4ee43a4ce (diff) |
Merge changes I70842e26,I74131118
* changes:
Do not show hovercards when the target pops up under the mouse
Fix a regression with bolded buttons
3 files changed, 14 insertions, 7 deletions
diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts b/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts index 8dc23e2257..ea5b5bb72b 100644 --- a/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts +++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts @@ -88,7 +88,9 @@ export class GrButton extends LitElement { background-color: var(--background-color); color: var(--text-color); display: flex; - font-family: inherit; + font-family: var(--font-family, inherit); + /** Without this '.keyboard-focus' buttons will get bolded. */ + font-weight: var(--font-weight-normal, inherit); justify-content: center; margin: var(--margin, 0); min-width: var(--border, 0); diff --git a/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin.ts b/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin.ts index 793e5d62b7..fd4da4ff90 100644 --- a/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin.ts +++ b/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin.ts @@ -159,7 +159,12 @@ export const HovercardMixin = <T extends Constructor<LitElement>>( } private addTargetEventListeners() { - this._target?.addEventListener('mouseenter', this.debounceShow); + // We intentionally listen on 'mousemove' instead of 'mouseenter', because + // otherwise the target appearing under the mouse cursor would also + // trigger the hovercard, which can annoying for the user, for example + // when added reviewer chips appear in the reply dialog via keyboard + // interaction. + this._target?.addEventListener('mousemove', this.debounceShow); this._target?.addEventListener('focus', this.debounceShow); this._target?.addEventListener('mouseleave', this.debounceHide); this._target?.addEventListener('blur', this.debounceHide); @@ -167,7 +172,7 @@ export const HovercardMixin = <T extends Constructor<LitElement>>( } private removeTargetEventListeners() { - this._target?.removeEventListener('mouseenter', this.debounceShow); + this._target?.removeEventListener('mousemove', this.debounceShow); this._target?.removeEventListener('focus', this.debounceShow); this._target?.removeEventListener('mouseleave', this.debounceHide); this._target?.removeEventListener('blur', this.debounceHide); diff --git a/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin_test.ts b/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin_test.ts index bd127893d7..dd86b38265 100644 --- a/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin_test.ts +++ b/polygerrit-ui/app/mixins/hovercard-mixin/hovercard-mixin_test.ts @@ -130,12 +130,12 @@ suite('gr-hovercard tests', () => { test('card is scheduled to show on enter and hides on leave', async () => { const button = document.querySelector('button'); const enterPromise = mockPromise(); - button!.addEventListener('mouseenter', () => enterPromise.resolve()); + button!.addEventListener('mousemove', () => enterPromise.resolve()); const leavePromise = mockPromise(); button!.addEventListener('mouseleave', () => leavePromise.resolve()); assert.isFalse(element._isShowing); - button!.dispatchEvent(new CustomEvent('mouseenter')); + button!.dispatchEvent(new CustomEvent('mousemove')); await enterPromise; await flush(); @@ -158,12 +158,12 @@ suite('gr-hovercard tests', () => { const button = document.querySelector('button'); const enterPromise = mockPromise(); const clickPromise = mockPromise(); - button!.addEventListener('mouseenter', () => enterPromise.resolve()); + button!.addEventListener('mousemove', () => enterPromise.resolve()); button!.addEventListener('click', () => clickPromise.resolve()); assert.isFalse(element._isShowing); - button!.dispatchEvent(new CustomEvent('mouseenter')); + button!.dispatchEvent(new CustomEvent('mousemove')); await enterPromise; await flush(); |