diff options
| author | Emirald Mateli <[email protected]> | 2017-11-11 15:05:15 +0100 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2017-11-11 15:06:13 +0100 |
| commit | 99e80c1c7e6e77aa26ccbca4fbb0430b35974544 (patch) | |
| tree | be2f13eb7b687cdead75488e4324e5f821214871 /src/tests | |
| parent | fa04e37569a316b3aaab3ca9fc42d50501347fd8 (diff) | |
Prevent folders from drag and dropping onto themselves in dolphin main view
Summary:
This patch aims to improve user experience by not allowing the user to drag and drop a folder into itself.
The current behavior shows a red message at the top which can then be closed by the user, instead of relying on that, this patch disables the option of dropping onto self and uses the "Invalid drop target cursor" to highlight the behavior.
BUG: 307747
Since spectacle is unable to screenshot the cursor overlay, find attached a photo of the screen.
{F3787651}
Test Plan:
1. Drag a folder.
2. Drop it onto itself.
Reviewers: #dolphin, elvisangelaccio, ngraham, rkflx, dfaure
Reviewed By: #dolphin, elvisangelaccio, rkflx, dfaure
Subscribers: rkflx, ngraham, elvisangelaccio, dfaure, anthonyfieroni, #konqueror
Tags: #dolphin
Differential Revision: https://phabricator.kde.org/D6281
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/tests/draganddrophelpertest.cpp | 81 |
2 files changed, 83 insertions, 0 deletions
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 1c2335cbf..13bd963f9 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -57,3 +57,5 @@ LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test) ecm_add_test(dolphinmainwindowtest.cpp TEST_NAME dolphinmainwindowtest LINK_LIBRARIES dolphinprivate dolphinstatic Qt5::Test) + +ecm_add_test(draganddrophelpertest.cpp LINK_LIBRARIES dolphinprivate Qt5::Test)
\ No newline at end of file diff --git a/src/tests/draganddrophelpertest.cpp b/src/tests/draganddrophelpertest.cpp new file mode 100644 index 000000000..8166b5bf2 --- /dev/null +++ b/src/tests/draganddrophelpertest.cpp @@ -0,0 +1,81 @@ +/*************************************************************************** + * Copyright (C) 2017 by Emirald Mateli <[email protected]> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +#include <QTest> +#include <views/draganddrophelper.h> + +class DragAndDropHelperTest : public QObject +{ + Q_OBJECT + +private slots: + void testUrlListMatchesUrl_data(); + void testUrlListMatchesUrl(); +}; + +void DragAndDropHelperTest::testUrlListMatchesUrl_data() +{ + QTest::addColumn<QList<QUrl>>("urlList"); + QTest::addColumn<QUrl>("url"); + QTest::addColumn<bool>("expected"); + + QTest::newRow("test_equal") + << QList<QUrl> {QUrl::fromLocalFile("/root")} + << QUrl::fromLocalFile("/root") + << true; + + QTest::newRow("test_trailing_slash") + << QList<QUrl> {QUrl::fromLocalFile("/root/")} + << QUrl::fromLocalFile("/root") + << true; + + QTest::newRow("test_ftp_scheme") + << QList<QUrl> {QUrl("ftp://server:2211/dir")} + << QUrl("ftp://server:2211/dir") + << true; + + QTest::newRow("test_not_matched") + << QList<QUrl> {QUrl::fromLocalFile("/usr/share"), QUrl::fromLocalFile("/usr/local/bin")} + << QUrl::fromLocalFile("/usr/bin") + << false; + + QTest::newRow("test_empty_target") + << QList<QUrl> {QUrl::fromLocalFile("/usr/share"), QUrl::fromLocalFile("/usr/local/bin")} + << QUrl() + << false; + + QTest::newRow("test_empty_list") + << QList<QUrl>() + << QUrl::fromLocalFile("/usr/bin") + << false; +} + +void DragAndDropHelperTest::testUrlListMatchesUrl() +{ + QFETCH(QList<QUrl>, urlList); + QFETCH(QUrl, url); + QFETCH(bool, expected); + + QCOMPARE(DragAndDropHelper::urlListMatchesUrl(urlList, url), expected); +} + + +QTEST_MAIN(DragAndDropHelperTest) + +#include "draganddrophelpertest.moc" |
