From f7128700b452609d9aa85a9b0417629cfa001c03 Mon Sep 17 00:00:00 2001 From: Hyunjin Song Date: Sat, 28 Nov 2020 15:15:28 +0900 Subject: [PATCH] Ensure instrument window resize correctly on instrument changes (#5797) --- src/tracks/InstrumentTrack.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/tracks/InstrumentTrack.cpp b/src/tracks/InstrumentTrack.cpp index a4b4d0231..4333627e8 100644 --- a/src/tracks/InstrumentTrack.cpp +++ b/src/tracks/InstrumentTrack.cpp @@ -1517,14 +1517,14 @@ InstrumentTrackWindow::InstrumentTrackWindow( InstrumentTrackView * _itv ) : m_pianoView->setMaximumHeight( PIANO_HEIGHT ); vlayout->addWidget( generalSettingsWidget ); - vlayout->addWidget( m_tabWidget, 1 ); + // Use QWidgetItem explicitly to make the size hint change on instrument changes + // QLayout::addWidget() uses QWidgetItemV2 with size hint caching + vlayout->insertItem(1, new QWidgetItem(m_tabWidget)); vlayout->addWidget( m_pianoView ); setModel( _itv->model() ); updateInstrumentView(); - resize( sizeHint() ); - QMdiSubWindow* subWin = gui->mainWindow()->addWindowedWidget( this ); Qt::WindowFlags flags = subWin->windowFlags(); flags |= Qt::MSWindowsFixedSizeDialogHint; @@ -1691,6 +1691,15 @@ void InstrumentTrackWindow::updateInstrumentView() adjustTabSize(m_instrumentView); m_pianoView->setVisible(m_track->m_instrument->hasNoteInput()); + // adjust window size + layout()->invalidate(); + resize(sizeHint()); + if (parentWidget()) + { + parentWidget()->resize(parentWidget()->sizeHint()); + } + update(); + m_instrumentView->update(); } }