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
{
m_statusBarTimestamp.start();
{
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 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);
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);
}
}
m_statusBar->setMessage(newMessage, DolphinStatusBar::Default);
}
}
* 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.
* 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();
*/
void delayedStatusBarUpdate();