┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphinmainwindow.cpp19
-rw-r--r--src/dolphinviewcontainer.cpp10
-rw-r--r--src/settings/dolphin_generalsettings.kcfg6
-rw-r--r--src/settings/dolphinsettingsdialog.cpp11
-rw-r--r--src/settings/startup/startupsettingspage.cpp26
-rw-r--r--src/settings/startup/startupsettingspage.h1
6 files changed, 61 insertions, 12 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index b666cacb0..d1358036b 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -285,6 +285,19 @@ void DolphinMainWindow::refreshViews()
}
setActiveViewContainer(activeViewContainer);
+
+ const GeneralSettings* generalSettings = DolphinSettings::instance().generalSettings();
+ if (generalSettings->modifiedStartupSettings()) {
+ // The startup settings have been changed by the user (see bug #254947).
+ // Synchronizethe split-view setting with the active view:
+ const bool splitView = generalSettings->splitView();
+ const ViewTab& activeTab = m_viewTab[m_tabIndex];
+ const bool toggle = ( splitView && (activeTab.secondaryView == 0))
+ || (!splitView && (activeTab.secondaryView != 0));
+ if (toggle) {
+ toggleSplitView();
+ }
+ }
}
void DolphinMainWindow::pasteIntoFolder()
@@ -856,14 +869,14 @@ void DolphinMainWindow::replaceLocation()
void DolphinMainWindow::goBack()
{
clearStatusBar();
-
+
KUrlNavigator* urlNavigator = m_activeViewContainer->urlNavigator();
urlNavigator->goBack();
-
+
if (urlNavigator->locationState().isEmpty()) {
// An empty location state indicates a redirection URL,
// which must be skipped too
- urlNavigator->goBack();
+ urlNavigator->goBack();
}
}
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index be02ef60b..3f3eb91cd 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -219,6 +219,16 @@ bool DolphinViewContainer::isActive() const
void DolphinViewContainer::refresh()
{
+ GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ if (settings->modifiedStartupSettings()) {
+ // The startup settings should only get applied if they have been
+ // modified by the user. Otherwise keep the (possibly) different current
+ // settings of the URL navigator and the filterbar.
+ m_urlNavigator->setUrlEditable(settings->editableUrl());
+ m_urlNavigator->setShowFullPath(settings->showFullPath());
+ showFilterBar(settings->filterBar());
+ }
+
m_view->refresh();
m_statusBar->refresh();
}
diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg
index 4ff4e52fa..b80b90442 100644
--- a/src/settings/dolphin_generalsettings.kcfg
+++ b/src/settings/dolphin_generalsettings.kcfg
@@ -21,9 +21,13 @@
<default>false</default>
</entry>
<entry name="FirstRun" type="Bool">
- <label>Is the application started the first time</label>
+ <label>Is the application started the first time (internal setting not shown in the UI)</label>
<default>true</default>
</entry>
+ <entry name="ModifiedStartupSettings" type="Bool">
+ <label>Have the startup settings been modified (internal setting not shown in the UI)</label>
+ <default>false</default>
+ </entry>
<entry name="HomeUrl" type="String">
<label>Home URL</label>
<default code="true">QDir::homePath()</default>
diff --git a/src/settings/dolphinsettingsdialog.cpp b/src/settings/dolphinsettingsdialog.cpp
index 4762ae457..2a62fc1cf 100644
--- a/src/settings/dolphinsettingsdialog.cpp
+++ b/src/settings/dolphinsettingsdialog.cpp
@@ -22,6 +22,8 @@
#include <dolphinapplication.h>
#include <dolphinmainwindow.h>
+#include "dolphinsettings.h"
+#include "dolphin_generalsettings.h"
#include "general/generalsettingspage.h"
#include "navigation/navigationsettingspage.h"
#include "services/servicessettingspage.h"
@@ -128,6 +130,15 @@ void DolphinSettingsDialog::applySettings()
page->applySettings();
}
DolphinApplication::app()->refreshMainWindows();
+
+ GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ if (settings->modifiedStartupSettings()) {
+ // Reset the modified startup settings hint. The changed startup settings
+ // have been applied already in app()->refreshMainWindows().
+ settings->setModifiedStartupSettings(false);
+ settings->writeConfig();
+ }
+
enableButtonApply(false);
}
diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp
index d891558e1..907b3f2cd 100644
--- a/src/settings/startup/startupsettingspage.cpp
+++ b/src/settings/startup/startupsettingspage.cpp
@@ -88,10 +88,6 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) :
m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), vBox);
m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"), vBox);
m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"), vBox);
- connect(m_splitView, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- connect(m_editableUrl, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- connect(m_showFullPath, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- connect(m_filterBar, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
// Add a dummy widget with no restriction regarding
// a vertical resizing. This assures that the dialog layout
@@ -102,9 +98,12 @@ StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) :
loadSettings();
- // it's important connecting 'textChanged' after loadSettings(), as loadSettings()
- // invokes m_homeUrl->setText()
+ // Connecting the signals must be done after loading the settings
connect(m_homeUrl, SIGNAL(textChanged(const QString&)), this, SIGNAL(changed()));
+ connect(m_splitView, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
+ connect(m_editableUrl, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
+ connect(m_showFullPath, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
+ connect(m_filterBar, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged()));
}
StartupSettingsPage::~StartupSettingsPage()
@@ -139,13 +138,24 @@ void StartupSettingsPage::restoreDefaults()
settings->useDefaults(false);
}
+void StartupSettingsPage::slotSettingsChanged()
+{
+ // Provide a hint that the startup settings have been changed. This allows the views
+ // to apply the startup settings only if they have been explicitely changed by the user
+ // (see bug #254947).
+ GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+ settings->setModifiedStartupSettings(true);
+
+ emit changed();
+}
+
void StartupSettingsPage::selectHomeUrl()
{
const QString homeUrl = m_homeUrl->text();
KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl, this);
if (!url.isEmpty()) {
m_homeUrl->setText(url.prettyUrl());
- emit changed();
+ slotSettingsChanged();
}
}
@@ -156,7 +166,7 @@ void StartupSettingsPage::useCurrentLocation()
void StartupSettingsPage::useDefaultLocation()
{
- KUrl url(QDir::homePath());
+ KUrl url(QDir::homePath());
m_homeUrl->setText(url.prettyUrl());
}
diff --git a/src/settings/startup/startupsettingspage.h b/src/settings/startup/startupsettingspage.h
index 98219a5a4..d749e5e0e 100644
--- a/src/settings/startup/startupsettingspage.h
+++ b/src/settings/startup/startupsettingspage.h
@@ -46,6 +46,7 @@ public:
virtual void restoreDefaults();
private slots:
+ void slotSettingsChanged();
void selectHomeUrl();
void useCurrentLocation();
void useDefaultLocation();