mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
folderspanel context-menu option "Limit to Home Directory" should be always visible
Summary: Only by chance I discovered that this option is visible but only when inside home. Before that I always edited dolphinrc to reenable it. I think it's less confusing to always show it but toggle its enabled state Test Plan: compile and run show folderspanel context-menu in different places Reviewers: #dolphin, emmanuelp, ngraham Reviewed By: #dolphin, ngraham Subscribers: elvisangelaccio Tags: #dolphin, #kde_applications Differential Revision: https://phabricator.kde.org/D9662
This commit is contained in:
parent
65c0997164
commit
3cb3d58fbf
|
@ -137,7 +137,7 @@ bool FoldersPanel::urlChanged()
|
|||
void FoldersPanel::reloadTree()
|
||||
{
|
||||
if (m_controller) {
|
||||
loadTree(url());
|
||||
loadTree(url(), true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -316,34 +316,42 @@ void FoldersPanel::startFadeInAnimation()
|
|||
anim->setDuration(200);
|
||||
}
|
||||
|
||||
void FoldersPanel::loadTree(const QUrl& url)
|
||||
void FoldersPanel::loadTree(const QUrl& url, bool allowJumpHome)
|
||||
{
|
||||
Q_ASSERT(m_controller);
|
||||
|
||||
m_updateCurrentItem = false;
|
||||
bool jumpHome = false;
|
||||
|
||||
QUrl baseUrl;
|
||||
if (url.isLocalFile()) {
|
||||
const bool isInHomeFolder = Dolphin::homeUrl().isParentOf(url) || (Dolphin::homeUrl() == url);
|
||||
if (FoldersPanelSettings::limitFoldersPanelToHome() && isInHomeFolder) {
|
||||
if (!url.isLocalFile()) {
|
||||
// Clear the path for non-local URLs and use it as base
|
||||
baseUrl = url;
|
||||
baseUrl.setPath(QString('/'));
|
||||
} else if (Dolphin::homeUrl().isParentOf(url) || (Dolphin::homeUrl() == url)) {
|
||||
if (FoldersPanelSettings::limitFoldersPanelToHome() ) {
|
||||
baseUrl = Dolphin::homeUrl();
|
||||
} else {
|
||||
// Use the root directory as base for local URLs (#150941)
|
||||
baseUrl = QUrl::fromLocalFile(QDir::rootPath());
|
||||
}
|
||||
} else if (FoldersPanelSettings::limitFoldersPanelToHome() && allowJumpHome) {
|
||||
baseUrl = Dolphin::homeUrl();
|
||||
jumpHome = true;
|
||||
} else {
|
||||
// Clear the path for non-local URLs and use it as base
|
||||
baseUrl = url;
|
||||
baseUrl.setPath(QString('/'));
|
||||
// Use the root directory as base for local URLs (#150941)
|
||||
baseUrl = QUrl::fromLocalFile(QDir::rootPath());
|
||||
}
|
||||
|
||||
if (m_model->directory() != baseUrl) {
|
||||
if (m_model->directory() != baseUrl && !jumpHome) {
|
||||
m_updateCurrentItem = true;
|
||||
m_model->refreshDirectory(baseUrl);
|
||||
}
|
||||
|
||||
const int index = m_model->index(url);
|
||||
if (index >= 0) {
|
||||
if (jumpHome == true) {
|
||||
emit folderActivated(baseUrl);
|
||||
} else if (index >= 0) {
|
||||
updateCurrentItem(index);
|
||||
} else if (url == baseUrl) {
|
||||
// clear the selection when visiting the base url
|
||||
|
|
|
@ -89,8 +89,9 @@ private:
|
|||
* Initializes the base URL of the tree and expands all
|
||||
* directories until \a url.
|
||||
* @param url URL of the leaf directory that should get expanded.
|
||||
* @param allowJumpHome indicate context menu got checked.
|
||||
*/
|
||||
void loadTree(const QUrl& url);
|
||||
void loadTree(const QUrl& url, bool allowJumpHome = false);
|
||||
|
||||
void reloadTree();
|
||||
|
||||
|
|
|
@ -127,14 +127,13 @@ void TreeViewContextMenu::open()
|
|||
|
||||
// insert 'Limit to Home Directory'
|
||||
const QUrl url = m_fileItem.url();
|
||||
const bool showLimitToHomeDirectory = url.isLocalFile() && (Dolphin::homeUrl().isParentOf(url) || (Dolphin::homeUrl() == url));
|
||||
if (showLimitToHomeDirectory) {
|
||||
QAction* limitFoldersPanelToHomeAction = new QAction(i18nc("@action:inmenu", "Limit to Home Directory"), this);
|
||||
limitFoldersPanelToHomeAction->setCheckable(true);
|
||||
limitFoldersPanelToHomeAction->setChecked(m_parent->limitFoldersPanelToHome());
|
||||
popup->addAction(limitFoldersPanelToHomeAction);
|
||||
connect(limitFoldersPanelToHomeAction, &QAction::toggled, this, &TreeViewContextMenu::setLimitFoldersPanelToHome);
|
||||
}
|
||||
const bool enableLimitToHomeDirectory = url.isLocalFile();
|
||||
QAction* limitFoldersPanelToHomeAction = new QAction(i18nc("@action:inmenu", "Limit to Home Directory"), this);
|
||||
limitFoldersPanelToHomeAction->setCheckable(true);
|
||||
limitFoldersPanelToHomeAction->setEnabled(enableLimitToHomeDirectory);
|
||||
limitFoldersPanelToHomeAction->setChecked(m_parent->limitFoldersPanelToHome());
|
||||
popup->addAction(limitFoldersPanelToHomeAction);
|
||||
connect(limitFoldersPanelToHomeAction, &QAction::toggled, this, &TreeViewContextMenu::setLimitFoldersPanelToHome);
|
||||
|
||||
// insert 'Automatic Scrolling'
|
||||
QAction* autoScrollingAction = new QAction(i18nc("@action:inmenu", "Automatic Scrolling"), this);
|
||||
|
|
Loading…
Reference in a new issue