diff --git a/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java b/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java index 4f829e9d2ea..43409d48659 100644 --- a/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java +++ b/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java @@ -39,6 +39,8 @@ import javax.swing.MenuElement; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.action.ActionNames; @@ -532,6 +534,30 @@ private void makeFileMenu() { fileLoadRecentFiles.forEach(jc -> recentFilesOpen.add(jc)); recentFilesOpen.setEnabled(LoadRecentProject.hasVisibleMenuItem(fileLoadRecentFiles)); + // Add menu listener to refresh recent files when menu is selected + recentFilesOpen.addMenuListener(new MenuListener() { + @Override + public void menuSelected(MenuEvent e) { + // Clear existing recent files from menu + recentFilesOpen.removeAll(); + + // Reload recent files + fileLoadRecentFiles = LoadRecentProject.getRecentFileMenuItems(); + fileLoadRecentFiles.forEach(jc -> recentFilesOpen.add(jc)); + recentFilesOpen.setEnabled(LoadRecentProject.hasVisibleMenuItem(fileLoadRecentFiles)); + } + + @Override + public void menuDeselected(MenuEvent e) { + // Not needed + } + + @Override + public void menuCanceled(MenuEvent e) { + // Not needed + } + }); + addPluginsMenuItems(fileMenu, menuCreators, MENU_LOCATION.FILE); // When JMeter menu is integrated with macOS system menu, there's no need in extra "exit"