From: Peter Penz Date: Thu, 13 Aug 2009 15:38:24 +0000 (+0000) Subject: Fix infinite recursion if the default text is empty. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/bcc439dd661a709f8ffed4a9420dbd0bcfd79899 Fix infinite recursion if the default text is empty. BUG: 203455 svn path=/trunk/KDE/kdebase/apps/; revision=1010911 --- diff --git a/src/statusbar/dolphinstatusbar.cpp b/src/statusbar/dolphinstatusbar.cpp index fe42011d3..802717423 100644 --- a/src/statusbar/dolphinstatusbar.cpp +++ b/src/statusbar/dolphinstatusbar.cpp @@ -125,13 +125,22 @@ DolphinStatusBar::~DolphinStatusBar() void DolphinStatusBar::setMessage(const QString& msg, Type type) { - if (msg.isEmpty()) { - // show the default text as fallback - clear(); - return; + int timeout = 1000; // Timeout in milliseconds until default + // messages may overwrite other messages. + + QString message = msg; + if (message.isEmpty()) { + // Show the default text as fallback. An empty text indicates + // a clearing of the information message. + if (m_messageLabel->defaultText().isEmpty()) { + return; + } + message = m_messageLabel->defaultText(); + type = Default; + timeout = 0; } - if ((msg == m_messageLabel->text()) && (type == m_messageLabel->type())) { + if ((message == m_messageLabel->text()) && (type == m_messageLabel->type())) { // the message is already shown return; } @@ -139,7 +148,7 @@ void DolphinStatusBar::setMessage(const QString& msg, const QTime currentTime = QTime::currentTime(); const bool skipMessage = (type == Default) && m_messageTimeStamp.isValid() && - (m_messageTimeStamp.msecsTo(currentTime) < 1000); + (m_messageTimeStamp.msecsTo(currentTime) < timeout); if (skipMessage) { // A non-default message is shown just for a very short time. Don't hide // the message by a default message, so that the user gets the chance to @@ -147,7 +156,7 @@ void DolphinStatusBar::setMessage(const QString& msg, return; } - m_messageLabel->setMessage(msg, type); + m_messageLabel->setMessage(message, type); if (type != Default) { m_messageTimeStamp = currentTime; }