From 4d81aabd1ee78c2fca61452ef3a866cfad0c88a5 Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Tue, 9 Aug 2022 16:02:55 +0200 Subject: Fix item highlighting through DBus Before this commit, even items that are distant children of currently open views were considered selectable. This lead to the bug that items meant to be highlighted through DBus would not be highlighted if any ancestor of the item was open in any view. This was fixed by only considering items in view if they can be seen by scrolling. Main difficulty here was to make this also work for the details view mode which allows expanding. To implement this cleanly, some refactoring seemed necessary because the logic to determine if an item is already in view was previously intertwined with the logic to identify already open directories. This commit also contains the following refactorings aiming to make the code more readable: - A magic value (-1) is replaced using std::optional. - A boolean trap is removed. - A QPair is replaced by a struct with named variables. - More and improved documentation --- src/dolphinmainwindow.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/dolphinmainwindow.h') diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index e7355e3ed..6f922168c 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -153,13 +153,11 @@ public Q_SLOTS: bool isUrlOpen(const QString &url); /** - * Determines if a URL or it's parent is open in any tab. + * @return Whether the item with @p url can be found in any view only by switching + * between already open tabs and scrolling in their primary or secondary view. * @note Use of QString instead of QUrl is required to be callable via DBus. - * - * @param url URL to look for - * @returns true if url or it's parent is currently open in a tab, false otherwise. */ - bool isUrlOrParentOpen(const QString &url); + bool isItemVisibleInAnyView(const QString &urlOfItem); /** -- cgit v1.3