@@ -53,12 +53,14 @@ const App: React.FC = () => {
5353 const [ toolboxSettingsModalIsOpen , setToolboxSettingsModalIsOpen ] = React . useState ( false ) ;
5454 const [ project , setProject ] = React . useState < commonStorage . Project | null > ( null ) ;
5555 const [ tabItems , setTabItems ] = React . useState < Tabs . TabItem [ ] > ( [ ] ) ;
56+ const [ activeTab , setActiveTab ] = React . useState ( '' ) ;
5657
5758 const [ shownPythonToolboxCategories , setShownPythonToolboxCategories ] = React . useState < Set < string > > ( new Set ( ) ) ;
5859 const blocksEditor = React . useRef < editor . Editor | null > ( null ) ;
5960 const [ triggerPythonRegeneration , setTriggerPythonRegeneration ] = React . useState ( 0 ) ;
6061 const generatorContext = React . useRef < GeneratorContext | null > ( null ) ;
6162 const blocklyComponent = React . useRef < BlocklyComponentType | null > ( null ) ;
63+
6264
6365 const [ leftCollapsed , setLeftCollapsed ] = React . useState ( false ) ;
6466 const [ rightCollapsed , setRightCollapsed ] = React . useState ( false ) ;
@@ -136,10 +138,11 @@ const App: React.FC = () => {
136138 { key : opmode . modulePath , title : opmode . className , type : Tabs . TabType . OPMODE }
137139 ) ;
138140 } ) ;
139- setTabItems ( myTabs ) ;
141+ setTabItems ( myTabs ) ;
142+ setActiveTab ( project . modulePath ) ;
140143 }
141144 else {
142- setTabItems ( [ ] ) ;
145+ // setTabItems([]);
143146 }
144147 } , [ project ] ) ;
145148
@@ -237,6 +240,12 @@ const areBlocksModified = (): boolean => {
237240 }
238241 return false ;
239242}
243+ const changeModule = async ( module : commonStorage . Module | null ) => {
244+ if ( currentModule && areBlocksModified ( ) ) {
245+ await saveBlocks ( ) ;
246+ }
247+ setCurrentModule ( module ) ;
248+ }
240249
241250const { Sider } = Antd . Layout ;
242251
@@ -276,20 +285,20 @@ return (
276285 < Menu . Component
277286 storage = { storage }
278287 setAlertErrorMessage = { setAlertErrorMessage }
279- saveBlocks = { saveBlocks }
280- areBlocksModified = { areBlocksModified }
281- currentModule = { currentModule }
282- setCurrentModule = { setCurrentModule }
288+ gotoTab = { setActiveTab }
283289 project = { project }
284290 setProject = { setProject }
285291 />
286292 </ Sider >
287293 < Antd . Layout >
288294 < Tabs . Component
289295 tabList = { tabItems }
296+ activeTab = { activeTab }
297+ setTabList = { setTabItems }
290298 setAlertErrorMessage = { setAlertErrorMessage }
291299 currentModule = { currentModule }
292- setCurrentModule = { setCurrentModule }
300+ setCurrentModule = { changeModule }
301+ project = { project }
293302 />
294303 < Antd . Splitter >
295304 { /*
0 commit comments