From 24d859cf19e90fa22ed687b36a68231625c1bd80 Mon Sep 17 00:00:00 2001 From: lzwind lzwind Date: Tue, 26 Aug 2025 09:24:52 +0000 Subject: Make create folder use selected directory This change makes `Ctrl+Shift+N` behavior consistent with right-click context menu: - If a single directory is selected, create inside it - Otherwise, create in current working directory BUG: 508196 --- src/dolphinmainwindow.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/dolphinmainwindow.cpp') diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index ba2b51323..917aa42ce 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -826,7 +826,16 @@ void DolphinMainWindow::createDirectory() // just check if we are already running one. This prevents opening multiple // dialogs. BUG:481401 if (!m_newFileMenu->isCreateDirectoryRunning()) { - m_newFileMenu->setWorkingDirectory(activeViewContainer()->url()); + QUrl targetDirectory = activeViewContainer()->url(); + + // Check if there's a single selected directory to create the new folder inside + // This makes Ctrl+Shift+N behavior consistent with right-click context menu + const KFileItemList selectedItems = m_activeViewContainer->view()->selectedItems(); + if (selectedItems.count() == 1 && selectedItems.first().isDir()) { + targetDirectory = selectedItems.first().url(); + } + + m_newFileMenu->setWorkingDirectory(targetDirectory); m_newFileMenu->createDirectory(); } } @@ -835,7 +844,16 @@ void DolphinMainWindow::createFile() { // Use the same logic as in createDirectory() if (!m_newFileMenu->isCreateFileRunning()) { - m_newFileMenu->setWorkingDirectory(activeViewContainer()->url()); + QUrl targetDirectory = activeViewContainer()->url(); + + // Check if there's a single selected directory to create the new file inside + // This makes the create file action consistent with create directory + const KFileItemList selectedItems = m_activeViewContainer->view()->selectedItems(); + if (selectedItems.count() == 1 && selectedItems.first().isDir()) { + targetDirectory = selectedItems.first().url(); + } + + m_newFileMenu->setWorkingDirectory(targetDirectory); m_newFileMenu->createFile(); } } -- cgit v1.3