From d20fa38526368d808a18d9558c25747bb731c38a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 4 Jan 2013 00:32:18 +0100 Subject: [PATCH] Workaround crash caused by KMessageWidget bug --- src/recmonitor.cpp | 8 ++++++++ src/renderwidget.cpp | 13 +++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/recmonitor.cpp b/src/recmonitor.cpp index b0a72c94..b0ff2eac 100644 --- a/src/recmonitor.cpp +++ b/src/recmonitor.cpp @@ -234,7 +234,11 @@ void RecMonitor::slotVideoDeviceChanged(int ix) QString capturefile; QString capturename; #if KDE_IS_VERSION(4,7,0) +#if KDE_IS_VERSION(4,10,0) m_infoMessage->animatedHide(); +#else + QTimer::singleShot(0, m_infoMessage, SLOT(animatedHide())); +#endif #endif m_previewSettings->setEnabled(ix == VIDEO4LINUX || ix == BLACKMAGIC); control_frame->setVisible(ix == VIDEO4LINUX); @@ -794,7 +798,11 @@ void RecMonitor::showMessage(const QString &text, const QString &icon, bool logA connect(manualAction, SIGNAL(triggered()), this, SLOT(slotShowLog())); m_infoMessage->addAction(manualAction); } +#if KDE_IS_VERSION(4,10,0) m_infoMessage->animatedShow(); +#else + QTimer::singleShot(0, m_infoMessage, SLOT(animatedShow())); +#endif #else if (!logAction) { video_frame->setPixmap(mergeSideBySide(KIcon(icon).pixmap(QSize(50, 50)), text)); diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index bdb822ad..d0d486e5 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -2149,15 +2149,16 @@ void RenderWidget::missingClips(bool hasMissing) void RenderWidget::errorMessage(const QString &message) { -#if KDE_VERSION == KDE_MAKE_VERSION(4,9,4) - // Workaround crash in KDE: #311336 - show(); -#endif if (!message.isEmpty()) { #if KDE_IS_VERSION(4,7,0) m_infoMessage->setMessageType(KMessageWidget::Warning); m_infoMessage->setText(message); +#if KDE_IS_VERSION(4,10,0) m_infoMessage->animatedShow(); +#else + // Workaround KDE bug in KMessageWidget + QTimer::singleShot(0, m_infoMessage, SLOT(animatedShow())); +#endif #else m_view.errorLabel->setText(message); m_view.errorBox->setHidden(false); @@ -2165,7 +2166,11 @@ void RenderWidget::errorMessage(const QString &message) } else { #if KDE_IS_VERSION(4,7,0) +#if KDE_IS_VERSION(4,10,0) m_infoMessage->animatedHide(); +#else + QTimer::singleShot(0, m_infoMessage, SLOT(animatedHide())); +#endif #else m_view.errorBox->setHidden(true); m_view.errorLabel->setText(QString()); -- 2.39.2