From 4b0dc69070af505e2bc620dd1be8fd3e7dff7718 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20D=C3=B6rner?= Date: Thu, 24 Mar 2011 00:45:14 +0100 Subject: [PATCH] Make cursor keys always trigger a statusbar update When the selection is changed using the cursor keys, the statusbar should be updated. Until now, this didn't actually happen directly after an operation ending in a OperationCompletedMessage, because the OperationCompletedMessage was protected. This patch changes the behaviour to only protect ErrorMessages in the ViewContainer. When an OperationCompletedMessage was issued very recently, it keeps being protected by DolphinStatusbar itself. Statusbar updates in the ViewContainer are only triggered by a) user actions (move keyboard focus, enter something in the filter bar) b) finished filed jobs In case a), the update is desired, also overriding OperationCompletedMessages. In case b), the OperationCompletedMessage issued by the file command is issues so shortly before the call to updateStatusBar, that the DolphinStatusBar skips the message anyway (see DolphinStatusBar::setMessage). BUG: 193847 FIXED-IN: 4.7.0 REVIEW: 100939 --- src/dolphinviewcontainer.cpp | 15 +++------------ src/dolphinviewcontainer.h | 3 +++ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 540f38954..6deb7b846 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -288,21 +288,12 @@ void DolphinViewContainer::updateStatusBar() { m_statusBarTimestamp.start(); - // As the item count information is less important - // in comparison with other messages, it should only - // be shown if: - // - the status bar is empty or - // - shows already the item count information or - // - shows only a not very important information const QString newMessage = m_view->statusBarText(); - const QString currentMessage = m_statusBar->message(); - const bool updateStatusBarMsg = currentMessage.isEmpty() - || (currentMessage == m_statusBar->defaultText()) - || (m_statusBar->type() == DolphinStatusBar::Information); - m_statusBar->setDefaultText(newMessage); - if (updateStatusBarMsg) { + // We don't want to override errors. Other messages are only protected by + // the Statusbar itself depending on timings (see DolphinStatusBar::setMessage). + if (m_statusBar->type() != DolphinStatusBar::Error) { m_statusBar->setMessage(newMessage, DolphinStatusBar::Default); } } diff --git a/src/dolphinviewcontainer.h b/src/dolphinviewcontainer.h index 8ddc9d059..82b105a4a 100644 --- a/src/dolphinviewcontainer.h +++ b/src/dolphinviewcontainer.h @@ -139,6 +139,9 @@ private slots: * of selected files and the sum of the filesize is shown. The update * is done asynchronously, as getting the sum of the * filesizes can be an expensive operation. + * Unless a previous OperationCompletedMessage was set very shortly before + * calling this method, it will be overwritten (see DolphinStatusBar::setMessage). + * Previous ErrorMessages however are always preserved. */ void delayedStatusBarUpdate(); -- 2.47.3