@@ -485,6 +485,9 @@ void FrmMain::initializeProgramPanel()
485485 // });
486486 bindActiveProgram (&program ());
487487
488+ connect (ui->program , &PartMainProgram::viewChanged, this ,
489+ [this ](PartMainProgram::View) { updateProgramTitle (); });
490+
488491 connect (ui->program , &PartMainProgram::clearRecentFiles, this , [this ]() {
489492 Core::instance ().clearRecentFiles (m_heightmapMode);
490493 });
@@ -2023,7 +2026,7 @@ void FrmMain::bindActiveProgram(GCode *target)
20232026 }
20242027
20252028 if (m_activeProgram) {
2026- disconnect (m_activeProgram.data (), &GCode::lastSentCommandChanged , this , nullptr );
2029+ disconnect (m_activeProgram.data (), nullptr , this , nullptr );
20272030 }
20282031
20292032 ui->program ->setProgram (target);
@@ -2033,6 +2036,42 @@ void FrmMain::bindActiveProgram(GCode *target)
20332036 connect (target, &GCode::lastSentCommandChanged, this , [this ](int index) {
20342037 ui->program ->scrollToIndex (index);
20352038 });
2039+ connect (target, &GCode::nameChanged, this , [this ] {
2040+ updateProgramTitle ();
2041+ });
2042+ }
2043+
2044+ updateProgramTitle ();
2045+ }
2046+
2047+ bool FrmMain::programIsCentralWidget () const
2048+ {
2049+ return ui->program ->parentWidget () == ui->centralWidget ;
2050+ }
2051+
2052+ void FrmMain::updateProgramTitle ()
2053+ {
2054+ QString title;
2055+
2056+ if (ui->program ->view () == PartMainProgram::View::Heightmap) {
2057+ title = tr (" Heightmap" );
2058+ } else {
2059+ const GCode *p = m_activeProgram;
2060+ if (p && p->type () == GCodeType::Macro) {
2061+ title = tr (" Program - macro `%1`" ).arg (p->name ());
2062+ } else if (p && p->type () == GCodeType::MainProgram && !p->name ().isEmpty ()) {
2063+ title = tr (" Program - main `%1`" ).arg (p->name ());
2064+ } else {
2065+ title = tr (" Program - main" );
2066+ }
2067+ }
2068+
2069+ // Dock path: DockableTitle reacts to windowTitleChanged automatically.
2070+ ui->dockProgram ->setWindowTitle (title);
2071+
2072+ // Central widget path: refresh the centralWidgetTitle label too.
2073+ if (programIsCentralWidget ()) {
2074+ ui->centralWidgetTitle ->setTitle (title);
20362075 }
20372076}
20382077
0 commit comments