]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Return editable URL navigator to breadcrumb mode if it has focus and everything is...
authorNate Graham <nate@kde.org>
Sun, 16 Dec 2018 20:49:57 +0000 (13:49 -0700)
committerNate Graham <nate@kde.org>
Sun, 16 Dec 2018 20:57:19 +0000 (13:57 -0700)
Summary:
This patch makes an editable location bar return to breadcrumb mode when {key Ctrl L} is pressed, but only if the location bar currently has focus and everything is selected. Otherwise, it will simply return focus to it as before.

This provides a slightly easier way to make the location bar return to breadcrumbs mode

Test Plan:
- Compile and deploy and make the location bar be breadcrumbs
- Hit {key Ctrl L} twice in a row -> location field turns to being in breadcrumb mode. Focus is correctly returned to the main view.
- Hit {key Ctrl L}, move focus elsewhere, then hit {key Ctrl L} again -> Location bar is editable and focused with everything selected.
- Hit {key Ctrl L}, deselect some of the text, then hit {key Ctrl L} again -> Location bar selects everything.

Reviewers: #dolphin, elvisangelaccio, dhaumann

Reviewed By: elvisangelaccio, dhaumann

Subscribers: elvisangelaccio, dhaumann, kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D16980

src/dolphinmainwindow.cpp

index ff2ea900ccd822831afc9192689207bd6926014f..98920c00128d215ee5a700ca675048ce03c46af6 100644 (file)
@@ -621,12 +621,19 @@ void DolphinMainWindow::toggleEditLocation()
 void DolphinMainWindow::replaceLocation()
 {
     KUrlNavigator* navigator = m_activeViewContainer->urlNavigator();
-    navigator->setUrlEditable(true);
-    navigator->setFocus();
-
-    // select the whole text of the combo box editor
     QLineEdit* lineEdit = navigator->editor()->lineEdit();
-    lineEdit->selectAll();
+
+    // If the text field currently has focus and everything is selected,
+    // pressing the keyboard shortcut returns the whole thing to breadcrumb mode
+    if (navigator->isUrlEditable()
+        && lineEdit->hasFocus()
+        && lineEdit->selectedText() == lineEdit->text() ) {
+        navigator->setUrlEditable(false);
+    } else {
+        navigator->setUrlEditable(true);
+        navigator->setFocus();
+        lineEdit->selectAll();
+    }
 }
 
 void DolphinMainWindow::togglePanelLockState()