diff options
| -rw-r--r-- | src/views/dolphinview.cpp | 15 | ||||
| -rw-r--r-- | src/views/dolphinview.h | 9 |
2 files changed, 19 insertions, 5 deletions
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 303ee34af..e879f67fc 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -248,9 +248,12 @@ void DolphinView::setMode(Mode mode) if (mode != m_mode) { ViewProperties props(viewPropertiesUrl()); props.setViewMode(mode); - props.save(); - applyViewProperties(); + // We pass the new ViewProperties to applyViewProperties, rather than + // storing them on disk and letting applyViewProperties() read them + // from there, to prevent that changing the view mode fails if the + // .directory file is not writable (see bug 318534). + applyViewProperties(props); } } @@ -1508,9 +1511,13 @@ void DolphinView::loadDirectory(const KUrl& url, bool reload) void DolphinView::applyViewProperties() { - m_view->beginTransaction(); - const ViewProperties props(viewPropertiesUrl()); + applyViewProperties(props); +} + +void DolphinView::applyViewProperties(const ViewProperties& props) +{ + m_view->beginTransaction(); const Mode mode = props.viewMode(); if (m_mode != mode) { diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index e5e9834b9..86bc5c159 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -709,11 +709,18 @@ private: /** * Applies the view properties which are defined by the current URL - * to the DolphinView properties. + * to the DolphinView properties. The view properties are read from a + * .directory file either in the current directory, or in the + * share/apps/dolphin/view_properties/ subfolder of the user's .kde folder. */ void applyViewProperties(); /** + * Applies the given view properties to the DolphinView. + */ + void applyViewProperties(const ViewProperties& props); + + /** * Applies the m_mode property to the corresponding * itemlayout-property of the KItemListView. */ |
