diff --git a/src/renderer/components/badge/badge.tsx b/src/renderer/components/badge/badge.tsx index 3848d23481..a16b5482c0 100644 --- a/src/renderer/components/badge/badge.tsx +++ b/src/renderer/components/badge/badge.tsx @@ -36,13 +36,9 @@ export interface BadgeProps extends React.HTMLAttributes, TooltipDecoratorP disabled?: boolean; } -const badgeMeta = observable({ - hasTextSelected: false, -}); - // Common handler for all Badge instances document.addEventListener("selectionchange", () => { - badgeMeta.hasTextSelected = window.getSelection().toString().trim().length > 0; + Badge.badgeMeta.hasTextSelected ||= window.getSelection().toString().trim().length > 0; }); @withTooltip @@ -52,6 +48,10 @@ export class Badge extends React.Component { expandable: true }; + static badgeMeta = observable({ + hasTextSelected: false + }); + @observable.ref elem: HTMLElement; @observable isExpanded = false; @@ -68,8 +68,11 @@ export class Badge extends React.Component { @boundMethod onMouseUp() { - if (!this.isExpandable || badgeMeta.hasTextSelected) return; // no action required - this.isExpanded = !this.isExpanded; + if (!this.isExpandable || Badge.badgeMeta.hasTextSelected) { + Badge.badgeMeta.hasTextSelected = false; + } else { + this.isExpanded = !this.isExpanded; + } } @boundMethod