include/sal/log-areas.dox | 2 vcl/unx/kf5/Kf5Bitmap.cxx | 143 +++++++++++++++++++++++++++++----------- vcl/unx/kf5/Kf5Bitmap.hxx | 10 +- vcl/unx/kf5/Kf5Data.hxx | 6 - vcl/unx/kf5/Kf5Frame.cxx | 9 ++ vcl/unx/kf5/Kf5Graphics_GDI.cxx | 7 + vcl/unx/kf5/Kf5Instance.cxx | 134 +++++++++++++++++++------------------ vcl/unx/kf5/Kf5Instance.hxx | 8 +- vcl/unx/kf5/Kf5Tools.hxx | 7 + vcl/unx/kf5/Kf5Widget.cxx | 1 10 files changed, 208 insertions(+), 119 deletions(-)
New commits: commit fec065f1060846e952541b69bd9742be5d7a6944 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Mon Oct 23 21:33:19 2017 +0200 KF5 various fixes Change-Id: Iaeb380ac37d080b1ae9ef61d9847c1b0cfb356a4 diff --git a/include/sal/log-areas.dox b/include/sal/log-areas.dox index 8c0db9de0809..33b9c25f4d16 100644 --- a/include/sal/log-areas.dox +++ b/include/sal/log-areas.dox @@ -452,8 +452,8 @@ certain functionality. @li @c vcl.headless - bitmap-based backend @li @c vcl.helper @li @c vcl.icontest -@li @c vcl.kde - KDE @li @c vcl.kde4 - KDE4 +@li @c vcl.kf5 - KF5 @li @c vcl.layout - Widget layout @li @c vcl.lazydelete @li @c vcl.opengl diff --git a/vcl/unx/kf5/Kf5Bitmap.cxx b/vcl/unx/kf5/Kf5Bitmap.cxx index e72750963b69..79a872458925 100644 --- a/vcl/unx/kf5/Kf5Bitmap.cxx +++ b/vcl/unx/kf5/Kf5Bitmap.cxx @@ -41,9 +41,38 @@ Kf5Bitmap::~Kf5Bitmap() bool Kf5Bitmap::Create( const Size& rSize, sal_uInt16 nBitCount, const BitmapPalette& rPal ) { - m_pImage.reset( new QImage( toQSize( rSize ), getBitFormat( nBitCount ) ) ); + assert( + (nBitCount == 1 + || nBitCount == 4 + || nBitCount == 8 + || nBitCount == 16 + || nBitCount == 24 + || nBitCount == 32) + && "Unsupported BitCount!"); + + if ( nBitCount == 1 ) + assert( 2 == rPal.GetEntryCount() ); + if ( nBitCount == 4 ) + assert( 16 == rPal.GetEntryCount() ); + if ( nBitCount == 8 ) + assert( 256 == rPal.GetEntryCount() ); + + if ( nBitCount == 4 ) + { + m_pImage.reset( nullptr ); + m_aSize = rSize; + m_nScanline = rSize.Width() / 2 + (rSize.Width() % 2) ? 0 : 1; + m_pBuffer.reset( new sal_uInt8[ m_nScanline * rSize.Height() ] ); + } + else + { + m_pImage.reset( new QImage( toQSize( rSize ), getBitFormat( nBitCount ) ) ); + m_pBuffer.reset( nullptr ); + } m_aPalette = rPal; - if( unsigned count = rPal.GetEntryCount() ) + + auto count = rPal.GetEntryCount(); + if( nBitCount != 4 && count ) { QVector<QRgb> aColorTable( count ); for ( unsigned i = 0; i < count; ++i ) @@ -56,8 +85,24 @@ bool Kf5Bitmap::Create( const Size& rSize, sal_uInt16 nBitCount, bool Kf5Bitmap::Create( const SalBitmap& rSalBmp ) { - m_pImage.reset( new QImage( - *static_cast< const Kf5Bitmap*>( &rSalBmp )->m_pImage.get() ) ); + const Kf5Bitmap *pBitmap = static_cast< const Kf5Bitmap*>( &rSalBmp ); + sal_uInt16 nBitCount; + if ( pBitmap->m_pImage.get() ) + { + m_pImage.reset( new QImage( *pBitmap->m_pImage.get() ) ); + m_pBuffer.reset( nullptr ); + nBitCount = getFormatBits( m_pImage->format() ); + } + else + { + m_aSize = pBitmap->m_aSize; + m_nScanline = pBitmap->m_nScanline; + m_pBuffer.reset( new sal_uInt8[ m_nScanline * m_aSize.Height() ] ); + memcpy( m_pBuffer.get(), pBitmap->m_pBuffer.get(), m_nScanline ); + m_pImage.reset( nullptr ); + nBitCount = 4; + } + m_aPalette = pBitmap->m_aPalette; return true; } @@ -68,13 +113,26 @@ bool Kf5Bitmap::Create( const SalBitmap& rSalBmp, Kf5Graphics *pGraphics = static_cast< Kf5Graphics* >( pSalGraphics ); QImage *pImage = static_cast< QImage* >( pGraphics->m_pDevice ); m_pImage.reset( new QImage( pBitmap->m_pImage->convertToFormat( pImage->format() ) ) ); + m_pBuffer.reset( nullptr ); return true; } bool Kf5Bitmap::Create( const SalBitmap& rSalBmp, sal_uInt16 nNewBitCount ) { + assert( + (nNewBitCount == 1 + || nNewBitCount == 4 + || nNewBitCount == 8 + || nNewBitCount == 16 + || nNewBitCount == 24 + || nNewBitCount == 32) + && "Unsupported BitCount!"); + const Kf5Bitmap *pBitmap = static_cast< const Kf5Bitmap *>( &rSalBmp ); + if ( pBitmap->m_pBuffer.get() ) + return false; + m_pImage.reset( new QImage( pBitmap->m_pImage->convertToFormat( getBitFormat( nNewBitCount ) ) ) ); return true; } @@ -88,89 +146,100 @@ bool Kf5Bitmap::Create( const css::uno::Reference< css::rendering::XBitmapCanvas void Kf5Bitmap::Destroy() { m_pImage.reset( nullptr ); + m_pBuffer.reset( nullptr ); } Size Kf5Bitmap::GetSize() const { - return toSize( m_pImage->size() ); + if ( m_pBuffer.get() ) + return m_aSize; + else + return toSize( m_pImage->size() ); } sal_uInt16 Kf5Bitmap::GetBitCount() const { - return getFormatBits( m_pImage->format() ); + if ( m_pBuffer.get() ) + return 4; + else + return getFormatBits( m_pImage->format() ); } BitmapBuffer* Kf5Bitmap::AcquireBuffer( BitmapAccessMode nMode ) { - if ( !m_pImage.get() ) + static const BitmapPalette aEmptyPalette; + + if ( !(m_pImage.get() || m_pBuffer.get()) ) return nullptr; BitmapBuffer* pBuffer = new BitmapBuffer; - pBuffer->mnWidth = m_pImage->width(); - pBuffer->mnHeight = m_pImage->height(); - pBuffer->maPalette = m_aPalette; pBuffer->mnScanlineSize = m_pImage->bytesPerLine(); - pBuffer->mpBits = m_pImage->bits(); - pBuffer->mnBitCount = getFormatBits( m_pImage->format() ); + + if ( m_pBuffer.get() ) + { + pBuffer->mnWidth = m_aSize.Width(); + pBuffer->mnHeight = m_aSize.Height(); + pBuffer->mnBitCount = 4; + pBuffer->mpBits = m_pBuffer.get(); + pBuffer->mnScanlineSize = m_nScanline; + } + else + { + pBuffer->mnWidth = m_pImage->width(); + pBuffer->mnHeight = m_pImage->height(); + pBuffer->mnBitCount = getFormatBits( m_pImage->format() ); + pBuffer->mpBits = m_pImage->bits(); + pBuffer->mnScanlineSize = m_pImage->bytesPerLine(); + } switch( pBuffer->mnBitCount ) { case 1: pBuffer->mnFormat = ScanlineFormat::N1BitMsbPal; + pBuffer->maPalette = m_aPalette; break; case 4: pBuffer->mnFormat = ScanlineFormat::N4BitMsnPal; break; case 8: pBuffer->mnFormat = ScanlineFormat::N8BitPal; + pBuffer->maPalette = m_aPalette; break; -#if 0 case 16: { - pBuffer->mnFormat = ScanlineFormat::N16BitTcMsbMask; - ColorMaskElement aRedMask(k16BitRedColorMask); +#ifdef OSL_BIGENDIAN + pBuffer->mnFormat= ScanlineFormat::N16BitTcMsbMask; +#else + pBuffer->mnFormat= ScanlineFormat::N16BitTcLsbMask; +#endif + ColorMaskElement aRedMask(0xf800); // 5 aRedMask.CalcMaskShift(); - ColorMaskElement aGreenMask(k16BitGreenColorMask); + ColorMaskElement aGreenMask(0x07e0); // 6 aGreenMask.CalcMaskShift(); - ColorMaskElement aBlueMask(k16BitBlueColorMask); + ColorMaskElement aBlueMask(0x001f); // 5 aBlueMask.CalcMaskShift(); pBuffer->maColorMask = ColorMask(aRedMask, aGreenMask, aBlueMask); + pBuffer->maPalette = aEmptyPalette; break; } -#endif case 24: - pBuffer->mnFormat = ScanlineFormat::N24BitTcBgr; + pBuffer->mnFormat = ScanlineFormat::N24BitTcRgb; + pBuffer->maPalette = aEmptyPalette; break; case 32: { pBuffer->mnFormat = ScanlineFormat::N32BitTcArgb; -#if 0 - ColorMaskElement aRedMask(k32BitRedColorMask); - aRedMask.CalcMaskShift(); - ColorMaskElement aGreenMask(k32BitGreenColorMask); - aGreenMask.CalcMaskShift(); - ColorMaskElement aBlueMask(k32BitBlueColorMask); - aBlueMask.CalcMaskShift(); - pBuffer->maColorMask = ColorMask(aRedMask, aGreenMask, aBlueMask); -#endif + pBuffer->maPalette = aEmptyPalette; break; } } -#if 0 - // some BitmapBuffer users depend on a complete palette - if( (pBuffer->mnBitCount <= 8) && !m_aPalette ) - pBuffer->maPalette = GetDefaultPalette( pBuffer->mnBitCount, true ); -#endif return pBuffer; } void Kf5Bitmap::ReleaseBuffer( BitmapBuffer* pBuffer, BitmapAccessMode nMode ) { - // invalidate graphic context if we have different data - if( nMode == BitmapAccessMode::Write ) - m_aPalette = pBuffer->maPalette; - + m_aPalette = pBuffer->maPalette; delete pBuffer; } diff --git a/vcl/unx/kf5/Kf5Bitmap.hxx b/vcl/unx/kf5/Kf5Bitmap.hxx index 07ac7f021c4f..2ea4accc8e9c 100644 --- a/vcl/unx/kf5/Kf5Bitmap.hxx +++ b/vcl/unx/kf5/Kf5Bitmap.hxx @@ -27,9 +27,13 @@ class QImage; class VCL_DLLPUBLIC Kf5Bitmap : public SalBitmap { - std::unique_ptr< QImage > m_pImage; - BitmapPalette m_aPalette; - bool m_bImageInUse; + std::unique_ptr< QImage > m_pImage; + BitmapPalette m_aPalette; + + // for 4bit support + std::unique_ptr< sal_uInt8 > m_pBuffer; + Size m_aSize; + sal_uInt32 m_nScanline; public: Kf5Bitmap(); diff --git a/vcl/unx/kf5/Kf5Data.hxx b/vcl/unx/kf5/Kf5Data.hxx index 863fb45c2ce1..16f1e24ba710 100644 --- a/vcl/unx/kf5/Kf5Data.hxx +++ b/vcl/unx/kf5/Kf5Data.hxx @@ -25,10 +25,10 @@ class Kf5Data : public GenericUnixSalData { public: explicit Kf5Data( SalInstance *pInstance ); - virtual ~Kf5Data(); + virtual ~Kf5Data() override; - virtual void ErrorTrapPush(); - virtual bool ErrorTrapPop( bool bIgnoreError = true ); + virtual void ErrorTrapPush() override; + virtual bool ErrorTrapPop( bool bIgnoreError = true ) override; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/unx/kf5/Kf5Frame.cxx b/vcl/unx/kf5/Kf5Frame.cxx index e008d2613fb1..82514345dd84 100644 --- a/vcl/unx/kf5/Kf5Frame.cxx +++ b/vcl/unx/kf5/Kf5Frame.cxx @@ -70,7 +70,12 @@ Kf5Frame::Kf5Frame( Kf5Frame* pParent, SalFrameStyleFlags nStyle ) m_pQWidget.reset( new Kf5Widget( *this, pParent ? pParent->GetQWidget() : nullptr, aWinFlags ) ); if (pParent && !(pParent->m_nStyle & SalFrameStyleFlags::PLUG)) - m_pQWidget->windowHandle()->setTransientParent( pParent->GetQWidget()->window()->windowHandle() ); + { + QWindow *pParentWindow = pParent->GetQWidget()->window()->windowHandle(); + QWindow *pChildWindow = m_pQWidget->window()->windowHandle(); + if ( pParentWindow != pChildWindow ) + pChildWindow->setTransientParent( pParentWindow ); + } } Kf5Frame::~Kf5Frame() @@ -338,6 +343,7 @@ void Kf5Frame::EndExtTextInput( EndExtTextInputFlags nFlags ) OUString Kf5Frame::GetKeyName( sal_uInt16 nKeyCode ) { + return OUString(); } bool Kf5Frame::MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType, vcl::KeyCode& rKeyCode ) @@ -347,6 +353,7 @@ bool Kf5Frame::MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType LanguageType Kf5Frame::GetInputLanguage() { + return LANGUAGE_DONTKNOW; } void Kf5Frame::UpdateSettings( AllSettings& rSettings ) diff --git a/vcl/unx/kf5/Kf5Graphics_GDI.cxx b/vcl/unx/kf5/Kf5Graphics_GDI.cxx index 7a6d62341acc..69ac769e1c7d 100644 --- a/vcl/unx/kf5/Kf5Graphics_GDI.cxx +++ b/vcl/unx/kf5/Kf5Graphics_GDI.cxx @@ -192,21 +192,22 @@ void Kf5Graphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBi *pImage, QRect( rPosAry.mnSrcX, rPosAry.mnSrcY, rPosAry.mnSrcWidth, rPosAry.mnSrcHeight) ); - SAL_DEBUG( "Kf5Graphics::drawBitmap" ); + if ( m_pFrame ) + m_pFrame->GetQWidget()->update(); } void Kf5Graphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap, const SalBitmap& rTransparentBitmap ) { -assert( !"Impl" ); +// assert( !"Impl" ); } void Kf5Graphics::drawMask( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap, SalColor nMaskColor ) { -assert( !"Impl" ); +// assert( !"Impl" ); } SalBitmap* Kf5Graphics::getBitmap( long nX, long nY, long nWidth, long nHeight ) diff --git a/vcl/unx/kf5/Kf5Instance.cxx b/vcl/unx/kf5/Kf5Instance.cxx index 3b1a41be69f5..da872c6b83bf 100644 --- a/vcl/unx/kf5/Kf5Instance.cxx +++ b/vcl/unx/kf5/Kf5Instance.cxx @@ -57,10 +57,9 @@ Kf5Instance::Kf5Instance( SalYieldMutex* pMutex ) Kf5Instance::~Kf5Instance() { - for( int i = 0; i < m_nFakeCmdLineArgs; i++ ) - { - free( m_pFreeCmdLineArgs[i] ); - } + m_pQApplication.reset( nullptr ); + for( int i = 0; i < *m_pFakeArgc; i++ ) + free( m_pFakeArgvFreeable[i] ); } SalFrame* Kf5Instance::CreateChildFrame( SystemParentData* /*pParent*/, SalFrameStyleFlags nStyle ) @@ -204,11 +203,66 @@ extern "C" { OString aVersion( qVersion() ); SAL_INFO( "vcl.kf5", "qt version string is " << aVersion ); - QApplication *pApplication; - char **pFreeCmdLineArgs = nullptr; - char **pAppCmdLineArgs; -#if 1 - KAboutData *kAboutData = new KAboutData( I18N_NOOP("LibreOffice"), + QApplication *pQApplication; + char **pFakeArgvFreeable = nullptr; + + int nFakeArgc = 2; + const sal_uInt32 nParams = osl_getCommandArgCount(); + OString aDisplay; + OUString aParam, aBin; + + for ( sal_uInt32 nIdx = 0; nIdx < nParams; ++nIdx ) + { + osl_getCommandArg( nIdx, &aParam.pData ); + if ( aParam != "-display" ) + continue; + if ( !pFakeArgvFreeable ) + { + pFakeArgvFreeable = new char*[ nFakeArgc + 2 ]; + pFakeArgvFreeable[ nFakeArgc++ ] = strdup( "-display" ); + } + else + free( pFakeArgvFreeable[ nFakeArgc ] ); + + ++nIdx; + osl_getCommandArg( nIdx, &aParam.pData ); + aDisplay = OUStringToOString( aParam, osl_getThreadTextEncoding() ); + pFakeArgvFreeable[ nFakeArgc ] = strdup( aDisplay.getStr() ); + } + if ( !pFakeArgvFreeable ) + pFakeArgvFreeable = new char*[ nFakeArgc ]; + else + nFakeArgc++; + + osl_getExecutableFile( &aParam.pData ); + osl_getSystemPathFromFileURL( aParam.pData, &aBin.pData ); + OString aExec = OUStringToOString( aBin, osl_getThreadTextEncoding() ); + pFakeArgvFreeable[ 0 ] = strdup( aExec.getStr() ); + pFakeArgvFreeable[ 1 ] = strdup( "--nocrashhandler" ); + + char **pFakeArgv = new char*[ nFakeArgc ]; + for( int i = 0; i < nFakeArgc; i++ ) + pFakeArgv[ i ] = pFakeArgvFreeable[ i ]; + + char* session_manager = nullptr; + if( getenv( "SESSION_MANAGER" ) != nullptr ) + { + session_manager = strdup( getenv( "SESSION_MANAGER" )); + unsetenv( "SESSION_MANAGER" ); + } + + int * pFakeArgc = new int; + *pFakeArgc = nFakeArgc; + pQApplication = new QApplication( *pFakeArgc, pFakeArgv ); + + if( session_manager != nullptr ) + { + // coverity[tainted_string] - trusted source for setenv + setenv( "SESSION_MANAGER", session_manager, 1 ); + free( session_manager ); + } + + KAboutData *kAboutData = new KAboutData( I18N_NOOP("LibreOffice"), i18n( "LibreOffice" ), "6.0.0", i18n( "LibreOffice with KF5 Native Widget Support." ), @@ -218,71 +272,23 @@ extern "C" { "http://libreoffice.org", QLatin1String("libreoffice@lists.freedesktop.org") ); - kAboutData->addAuthor( i18n( "Jan-Marek Glogowski" ), + kAboutData->addAuthor( i18n( "Jan-Marek Glogowski" ), i18n( "Original author and maintainer of the KF5 NWF." ), "glo...@fbihome.de" ); - KAboutData::setApplicationData( *kAboutData ); -#endif - int nFakeCmdLineArgs = 2; - const unsigned nParams = osl_getCommandArgCount(); - OString aDisplay; - OUString aParam, aBin; - - for ( unsigned nIdx = 0; nIdx < nParams; ++nIdx ) - { - osl_getCommandArg( nIdx, &aParam.pData ); - if ( !pFreeCmdLineArgs && aParam == "-display" && nIdx + 1 < nParams ) - { - osl_getCommandArg( nIdx + 1, &aParam.pData ); - aDisplay = OUStringToOString( aParam, osl_getThreadTextEncoding() ); - - pFreeCmdLineArgs = new char*[ nFakeCmdLineArgs + 2 ]; - pFreeCmdLineArgs[ nFakeCmdLineArgs + 0 ] = strdup( "-display" ); - pFreeCmdLineArgs[ nFakeCmdLineArgs + 1 ] = strdup( aDisplay.getStr() ); - nFakeCmdLineArgs += 2; - } - } - if ( !pFreeCmdLineArgs ) - pFreeCmdLineArgs = new char*[ nFakeCmdLineArgs ]; - - osl_getExecutableFile( &aParam.pData ); - osl_getSystemPathFromFileURL( aParam.pData, &aBin.pData ); - OString aExec = OUStringToOString( aBin, osl_getThreadTextEncoding() ); - pFreeCmdLineArgs[0] = strdup( aExec.getStr() ); - pFreeCmdLineArgs[1] = strdup( "--nocrashhandler" ); - - pAppCmdLineArgs = new char*[ nFakeCmdLineArgs ]; - for( int i = 0; i < nFakeCmdLineArgs; i++ ) - pAppCmdLineArgs[i] = pFreeCmdLineArgs[i]; - - char* session_manager = nullptr; - if( getenv( "SESSION_MANAGER" ) != nullptr ) - { - session_manager = strdup( getenv( "SESSION_MANAGER" )); - unsetenv( "SESSION_MANAGER" ); - } - - pApplication = new QApplication( nFakeCmdLineArgs, pAppCmdLineArgs ); - - if( session_manager != nullptr ) - { - // coverity[tainted_string] - trusted source for setenv - setenv( "SESSION_MANAGER", session_manager, 1 ); - free( session_manager ); - } + KAboutData::setApplicationData( *kAboutData ); - QApplication::setQuitOnLastWindowClosed(false); + QApplication::setQuitOnLastWindowClosed(false); Kf5Instance* pInstance = new Kf5Instance( new SalYieldMutex() ); // initialize SalData new Kf5Data( pInstance ); - pInstance->m_pApplication.reset( pApplication ); - pInstance->m_pFreeCmdLineArgs.reset( pFreeCmdLineArgs ); - pInstance->m_pAppCmdLineArgs.reset( pAppCmdLineArgs ); - pInstance->m_nFakeCmdLineArgs = nFakeCmdLineArgs; + pInstance->m_pQApplication.reset( pQApplication ); + pInstance->m_pFakeArgvFreeable.reset( pFakeArgvFreeable ); + pInstance->m_pFakeArgv.reset( pFakeArgv ); + pInstance->m_pFakeArgc.reset( pFakeArgc ); return pInstance; } diff --git a/vcl/unx/kf5/Kf5Instance.hxx b/vcl/unx/kf5/Kf5Instance.hxx index 1aa0d2d30b44..98cfa31c1579 100644 --- a/vcl/unx/kf5/Kf5Instance.hxx +++ b/vcl/unx/kf5/Kf5Instance.hxx @@ -41,10 +41,10 @@ class Kf5Instance int m_postUserEventId; public: - std::unique_ptr<QApplication> m_pApplication; - std::unique_ptr<char*[]> m_pFreeCmdLineArgs; - std::unique_ptr<char*[]> m_pAppCmdLineArgs; - int m_nFakeCmdLineArgs; + std::unique_ptr< QApplication > m_pQApplication; + std::unique_ptr< char*[] > m_pFakeArgvFreeable; + std::unique_ptr< char*[] > m_pFakeArgv; + std::unique_ptr< int > m_pFakeArgc; private Q_SLOTS: bool ImplYield( bool bWait, bool bHandleAllCurrentEvents ); diff --git a/vcl/unx/kf5/Kf5Tools.hxx b/vcl/unx/kf5/Kf5Tools.hxx index 8d10cd84360e..40c34d9d4303 100644 --- a/vcl/unx/kf5/Kf5Tools.hxx +++ b/vcl/unx/kf5/Kf5Tools.hxx @@ -61,7 +61,7 @@ inline QImage::Format getBitFormat( sal_uInt16 nBitCount ) { case 1 : return QImage::Format_Mono; case 8 : return QImage::Format_Indexed8; - case 16 : return QImage::Format_RGB555; + case 16 : return QImage::Format_RGB16; case 24 : return QImage::Format_RGB888; case 32 : return QImage::Format_ARGB32; default : @@ -77,10 +77,11 @@ inline sal_uInt16 getFormatBits( QImage::Format eFormat ) { case QImage::Format_Mono : return 1; case QImage::Format_Indexed8 : return 8; - case QImage::Format_RGB555 : return 16; + case QImage::Format_RGB16 : return 16; case QImage::Format_RGB888 : return 24; case QImage::Format_ARGB32 : return 32; - default: + default : + std::abort(); return 0; } } diff --git a/vcl/unx/kf5/Kf5Widget.cxx b/vcl/unx/kf5/Kf5Widget.cxx index 0394c9fc2653..59f2d963a581 100644 --- a/vcl/unx/kf5/Kf5Widget.cxx +++ b/vcl/unx/kf5/Kf5Widget.cxx @@ -33,6 +33,7 @@ Kf5Widget::Kf5Widget( Kf5Frame &rFrame, QWidget *parent, Qt::WindowFlags f ) , m_pFrame( &rFrame ) , m_pObject( nullptr ) { + create(); } Kf5Widget::Kf5Widget( Kf5Object &rObject, QWidget *parent, Qt::WindowFlags f ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits