From 55da698d7c864397c695583ff9da8c1a76718e8f Mon Sep 17 00:00:00 2001 From: DomClark Date: Sat, 24 Mar 2018 15:04:37 +0000 Subject: [PATCH] Fix X11 embedding on Qt4 --- plugins/VstEffect/VstEffectControlDialog.cpp | 2 +- plugins/vestige/vestige.cpp | 4 +++- plugins/vst_base/VstPlugin.cpp | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/VstEffect/VstEffectControlDialog.cpp b/plugins/VstEffect/VstEffectControlDialog.cpp index ad2666392..ea2581349 100644 --- a/plugins/VstEffect/VstEffectControlDialog.cpp +++ b/plugins/VstEffect/VstEffectControlDialog.cpp @@ -64,7 +64,7 @@ VstEffectControlDialog::VstEffectControlDialog( VstEffectControls * _ctl ) : if (embed_vst) { if (! m_plugin->pluginWidget()) { - m_plugin->createUI(nullptr); + m_plugin->createUI(this); } m_pluginWidget = m_plugin->pluginWidget(); } diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index c54c6c3a8..9ea053e8e 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -107,10 +107,12 @@ public: void createUI( QWidget *parent ) override { Q_UNUSED(parent); - VstPlugin::createUI( nullptr ); if ( embedMethod() != "none" ) { m_pluginSubWindow.reset(new vstSubWin( gui->mainWindow()->workspace() )); + VstPlugin::createUI( m_pluginSubWindow.get() ); m_pluginSubWindow->setWidget(pluginWidget()); + } else { + VstPlugin::createUI( nullptr ); } } diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index 32230cd8d..d9d9cc9f7 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -656,6 +656,10 @@ void VstPlugin::createUI( QWidget * parent ) #ifdef LMMS_BUILD_LINUX if (m_embedMethod == "xembed" ) { + if (parent) + { + parent->setAttribute(Qt::WA_NativeWindow); + } QX11EmbedContainer * embedContainer = new QX11EmbedContainer( parent ); connect(embedContainer, SIGNAL(clientIsEmbedded()), this, SLOT(handleClientEmbed())); embedContainer->embedClient( m_pluginWindowID ); @@ -671,8 +675,6 @@ void VstPlugin::createUI( QWidget * parent ) container->setWindowTitle( name() ); m_pluginWidget = container; - - container->setFixedSize( m_pluginGeometry ); } bool VstPlugin::eventFilter(QObject *obj, QEvent *event)