diff --git a/src/view/katestatusbar.cpp b/src/view/katestatusbar.cpp --- a/src/view/katestatusbar.cpp +++ b/src/view/katestatusbar.cpp @@ -201,6 +201,7 @@ connect(m_view, &KTextEditor::View::selectionChanged, this, &KateStatusBar::selectionChanged); connect(m_view->document(), &KTextEditor::DocumentPrivate::modifiedChanged, this, &KateStatusBar::modifiedChanged); connect(m_view->doc(), &KTextEditor::DocumentPrivate::modifiedOnDisk, this, &KateStatusBar::modifiedChanged); + connect(m_view->doc(), &KTextEditor::DocumentPrivate::readWriteChanged, this, &KateStatusBar::modifiedChanged); connect(m_view->doc(), &KTextEditor::DocumentPrivate::configChanged, this, &KateStatusBar::documentConfigChanged); connect(m_view->document(), &KTextEditor::DocumentPrivate::modeChanged, this, &KateStatusBar::modeChanged); connect(m_view, &KTextEditor::ViewPrivate::configChanged, this, &KateStatusBar::configChanged); @@ -347,35 +348,44 @@ { const bool mod = m_view->doc()->isModified(); const bool modOnHD = m_view->doc()->isModifiedOnDisc(); + const bool readOnly = !m_view->doc()->isReadWrite(); /** * combine to modified status, update only if changed */ - unsigned int newStatus = (unsigned int)mod | ((unsigned int)modOnHD << 1); + unsigned int newStatus = (unsigned int)mod | ((unsigned int)modOnHD << 1) | ((unsigned int)readOnly << 2); if (m_modifiedStatus == newStatus) return; m_modifiedStatus = newStatus; switch (m_modifiedStatus) { + case 0x0: + m_modified->setIcon(QIcon::fromTheme(QStringLiteral("text-plain"))); + m_modified->setWhatsThis(i18n("Meaning of current icon: Document was not modified since it was loaded")); + break; + case 0x1: + case 0x5: m_modified->setIcon(QIcon::fromTheme(QStringLiteral("document-save"))); m_modified->setWhatsThis(i18n("Meaning of current icon: Document was modified since it was loaded")); break; case 0x2: + case 0x6: m_modified->setIcon(QIcon::fromTheme(QStringLiteral("dialog-warning"))); m_modified->setWhatsThis(i18n("Meaning of current icon: Document was modified or deleted by another program")); break; case 0x3: + case 0x7: m_modified->setIcon(QIcon(KIconUtils::addOverlay(QIcon::fromTheme(QStringLiteral("document-save")), QIcon(QStringLiteral("emblem-important")), Qt::TopLeftCorner))); m_modified->setWhatsThis(QString()); break; default: - m_modified->setIcon(QIcon::fromTheme(QStringLiteral("text-plain"))); - m_modified->setWhatsThis(i18n("Meaning of current icon: Document was not modified since it was loaded")); + m_modified->setIcon(QIcon::fromTheme(QStringLiteral("lock"))); + m_modified->setWhatsThis(i18n("Meaning of current icon: Document is in read-only mode")); break; } }