From e4e4d7efe1d9eac987897d6f7a37f8d2bd919ec8 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 17 Nov 2020 17:16:57 +0200 Subject: [PATCH] added common document/selectionchange watcher Signed-off-by: Roman --- src/renderer/components/badge/badge.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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; }