Commit 49c5a32536 for wordpress.org

commit 49c5a325363e34ca40c43d22f28157176afe1699
Author: joedolson <joedolson@git.wordpress.org>
Date:   Wed Sep 9 01:54:45 2026 +0000

    Administration: Prevent race condition in wp-tooltip.js delay timer.

    Move the timer variable `openTimeout` from the outer scope of the wrapper function to the inner scope, preventing reuse of the same timer instance by different tooltips.

    Props fahimmurshed, westonruter, joedolson.
    Fixes #65674.
    Built from https://develop.svn.wordpress.org/trunk@63549


    git-svn-id: http://core.svn.wordpress.org/trunk@62725 1a063a9b-81f0-0310-95a4-ce76da25c4cd

diff --git a/wp-includes/js/wp-tooltip.js b/wp-includes/js/wp-tooltip.js
index 87e4401e37..d00a0d5f6a 100644
--- a/wp-includes/js/wp-tooltip.js
+++ b/wp-includes/js/wp-tooltip.js
@@ -16,9 +16,6 @@

 	const popovers = /** @type {NodeListOf<HTMLSpanElement>} */ ( document.querySelectorAll( '.wp-is-tooltip' ) );

-	/** @type {ReturnType<typeof setTimeout>} */
-	let openTimeout;
-
 	popovers.forEach( function( popover ) {
 		const trigger = /** @type {HTMLButtonElement|HTMLAnchorElement|null} */ ( popover.querySelector( '.wp-tooltip__toggle' ) );
 		const panel   = /** @type {HTMLSpanElement|null} */ ( popover.querySelector( 'span.wp-tooltip__bubble' ) );
@@ -31,6 +28,9 @@
 			return;
 		}

+		/** @type {ReturnType<typeof setTimeout>} */
+		let openTimeout;
+
 		// Show Tooltip Function (with delay to prevent flickering).
 		const showTooltip = () => {
 			clearTimeout( openTimeout );
diff --git a/wp-includes/js/wp-tooltip.min.js b/wp-includes/js/wp-tooltip.min.js
index 433d844815..e3b9cdf208 100644
--- a/wp-includes/js/wp-tooltip.min.js
+++ b/wp-includes/js/wp-tooltip.min.js
@@ -1,2 +1,2 @@
 /*! This file is auto-generated */
-(()=>{var e=Object.prototype.hasOwnProperty.call(HTMLElement.prototype,"popover");let p=!1;e||(p=!0);e=document.querySelectorAll(".wp-is-tooltip");let l;e.forEach(function(e){const o=e.querySelector(".wp-tooltip__toggle"),t=e.querySelector("span.wp-tooltip__bubble");var r;p&&t?t.classList.add("hidden"):o&&t&&(e=()=>{clearTimeout(l),l=setTimeout(()=>{t.matches(":popover-open")||t.showPopover({source:o})},300)},r=()=>{clearTimeout(l),t.matches(":popover-open")&&t.hidePopover()},o.addEventListener("mouseenter",e),o.addEventListener("focus",e),o.addEventListener("mouseleave",r),o.addEventListener("blur",r))})})();
\ No newline at end of file
+(()=>{let e=Object.prototype.hasOwnProperty.call(HTMLElement.prototype,"popover")?!1:!0;document.querySelectorAll(".wp-is-tooltip").forEach(function(o){const t=o.querySelector(".wp-tooltip__toggle"),r=o.querySelector("span.wp-tooltip__bubble");if(e&&r)r.classList.add("hidden");else if(t&&r){let e;var o=()=>{clearTimeout(e),e=setTimeout(()=>{r.matches(":popover-open")||r.showPopover({source:t})},300)},p=()=>{clearTimeout(e),r.matches(":popover-open")&&r.hidePopover()};t.addEventListener("mouseenter",o),t.addEventListener("focus",o),t.addEventListener("mouseleave",p),t.addEventListener("blur",p)}})})();
\ No newline at end of file
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 5f4ec2a9cc..00572867cf 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
  *
  * @global string $wp_version
  */
-$wp_version = '7.2-alpha-63546';
+$wp_version = '7.2-alpha-63549';

 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.