From cc4c1fd713072d001a023118e2d55bff857f9b22 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows 11)" <rob@synchro.net>
Date: Sun, 3 Mar 2024 18:28:04 -0800
Subject: [PATCH] Clear any mouse hot-spots before executing external program
 from exec_xtrn()

As Nelgin pointed out, mouse hot-spots were still active when running external
programs (door games) - so clear any active hot-spots before running external
programs.

This could possibly be done in external() instead, but this sufficient for
now. I wouldn't want a menu that EXEC's something (via @-code) to lose all its
hot-spots as a result.
---
 src/sbbs3/xtrn_sec.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/sbbs3/xtrn_sec.cpp b/src/sbbs3/xtrn_sec.cpp
index ef17292338..0b8deaff9e 100644
--- a/src/sbbs3/xtrn_sec.cpp
+++ b/src/sbbs3/xtrn_sec.cpp
@@ -1438,6 +1438,7 @@ bool sbbs_t::exec_xtrn(uint xtrnnum, bool user_event)
 	snprintf(str, sizeof(str), "%u\t%s", useron.number, useron.alias);
 	mqtt_pub_timestamped_msg(mqtt, TOPIC_BBS_ACTION, topic, start, str);
 
+	clear_hotspots();
 	external(cmdstr(cfg.xtrn[xtrnnum]->cmd, drop_file, startup_dir, NULL, mode)
 		,mode
 		,cfg.xtrn[xtrnnum]->path);
@@ -1446,6 +1447,7 @@ bool sbbs_t::exec_xtrn(uint xtrnnum, bool user_event)
 	if(cfg.xtrn[xtrnnum]->misc&FREETIME)
 		starttime+=end-start;
 	if(cfg.xtrn[xtrnnum]->clean[0]) {
+		clear_hotspots();
 		external(cmdstr(cfg.xtrn[xtrnnum]->clean, drop_file, startup_dir, NULL, mode)
 			,mode&~(EX_STDIN|EX_CONIO), cfg.xtrn[xtrnnum]->path); 
 	}
-- 
GitLab