diff --git a/bigbluebutton-html5/imports/ui/components/whiteboard/component.jsx b/bigbluebutton-html5/imports/ui/components/whiteboard/component.jsx
index f41e823743..2e1ac84288 100644
--- a/bigbluebutton-html5/imports/ui/components/whiteboard/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/whiteboard/component.jsx
@@ -94,6 +94,7 @@ export default function Whiteboard(props) {
const [zoom, setZoom] = React.useState(HUNDRED_PERCENT);
const [tldrawZoom, setTldrawZoom] = React.useState(1);
const zoomValueRef = React.useRef(zoomValue);
+ const isMouseDownRef = React.useRef(false);
const [isMounting, setIsMounting] = React.useState(true);
const prevShapes = usePrevious(shapes);
const prevSlidePosition = usePrevious(slidePosition);
@@ -221,6 +222,7 @@ export default function Whiteboard(props) {
tldrawAPI?.completeSession?.();
}
}
+ isMouseDownRef.current = false;
};
const checkVisibility = () => {
@@ -259,12 +261,18 @@ export default function Whiteboard(props) {
window.dispatchEvent(new Event('resize'));
}
+ const setIsMouseDown = () => {
+ isMouseDownRef.current = true;
+ }
+
React.useEffect(() => {
document.addEventListener('mouseup', checkClientBounds);
document.addEventListener('visibilitychange', checkVisibility);
+ document.addEventListener('mousedown', setIsMouseDown);
return () => {
document.removeEventListener('mouseup', checkClientBounds);
+ document.removeEventListener('mousedown', setIsMouseDown);
document.removeEventListener('visibilitychange', checkVisibility);
const canvas = document.getElementById('canvas');
if (canvas) {
@@ -638,6 +646,12 @@ export default function Whiteboard(props) {
const handleOnKeyDown = (event) => {
const { which, ctrlKey } = event;
+ if (isMouseDownRef.current) {
+ event.preventDefault();
+ event.stopPropagation();
+ return;
+ }
+
switch (which) {
case KEY_CODES.ARROW_LEFT:
case KEY_CODES.PAGE_UP: