diff --git a/src/renderer/components/badge/badge.tsx b/src/renderer/components/badge/badge.tsx index 40d79823c4..2639accba3 100644 --- a/src/renderer/components/badge/badge.tsx +++ b/src/renderer/components/badge/badge.tsx @@ -13,6 +13,15 @@ export interface BadgeProps extends React.HTMLAttributes, TooltipDecoratorP isExpanded?: boolean; // always force state to this value } +const badgeMeta = observable({ + hasTextSelected: false, +}); + +// Common handler for all Badge instances +document.addEventListener("selectionchange", () => { + badgeMeta.hasTextSelected = window.getSelection().toString().trim().length > 0 +}); + @withTooltip @observer export class Badge extends React.Component { @@ -25,8 +34,7 @@ export class Badge extends React.Component { @autobind() onMouseUp(evt: React.MouseEvent) { - const isTextSelected = !!document.getSelection().toString().trim(); - if (!this.isExpandable || isTextSelected) return; // no action required + if (!this.isExpandable || badgeMeta.hasTextSelected) return; // no action required this.isExpanded = !this.isExpanded; }