From 875424f71f45ee8336f493f145342a3d28d61a85 Mon Sep 17 00:00:00 2001 From: Soren Stoutner Date: Thu, 9 Apr 2026 09:50:42 -0700 Subject: [PATCH] Maintain bookmark scroll position on bookmark move. https://redmine.stoutner.com/issues/1321 --- doc/index.docbook | 2 +- src/dialogs/BookmarksDialog.cpp | 11 +++++++++-- src/helpers/FilterListHelper.cpp | 6 +++++- src/helpers/UserAgentHelper.cpp | 12 ++++++------ 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/doc/index.docbook b/doc/index.docbook index dbbe8eb..532ab16 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -2077,7 +2077,7 @@ Fanboy’s Annoyance List is released under the Creative Commons Attribution 3.0 Unported license, which is - compatible with the GPLv3+. This lists is included unchanged in Privacy Browser. + compatible with the GPLv3+. This list is included unchanged in Privacy Browser. diff --git a/src/dialogs/BookmarksDialog.cpp b/src/dialogs/BookmarksDialog.cpp index d4349aa..1845df2 100644 --- a/src/dialogs/BookmarksDialog.cpp +++ b/src/dialogs/BookmarksDialog.cpp @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-3.0-or-later - * SPDX-FileCopyrightText: 2023-2024 Soren Stoutner + * SPDX-FileCopyrightText: 2023-2024, 2026 Soren Stoutner * * This file is part of Privacy Browser PC . * @@ -31,6 +31,7 @@ // Qt toolkit headers. #include +#include #include // Construct the class. @@ -141,6 +142,9 @@ void BookmarksDialog::deleteItems() const void BookmarksDialog::populateBookmarks() const { + // Store the current vertical scroll value. + int verticalScrollValue = draggableTreeViewPointer->verticalScrollBar()->value(); + // Clear the current contents of the tree model. treeModelPointer->clear(); @@ -196,9 +200,12 @@ void BookmarksDialog::populateBookmarks() const // Populate the subfolders, starting with the root folder ID (`0`). populateSubfolders(rootItemNamePointer, 0); - // Expand all the folder. + // Expand all the folders. draggableTreeViewPointer->expandAll(); + // Restore the vertical scroll value. + draggableTreeViewPointer->verticalScrollBar()->setValue(verticalScrollValue); + // Update the UI. updateUi(); } diff --git a/src/helpers/FilterListHelper.cpp b/src/helpers/FilterListHelper.cpp index 40e508b..1f60c8c 100644 --- a/src/helpers/FilterListHelper.cpp +++ b/src/helpers/FilterListHelper.cpp @@ -861,7 +861,11 @@ FilterListStruct* FilterListHelper::populateFilterList(const QString &filterList QFile filterListFile(filterListFileName); // Open the filter list file. - filterListFile.open(QIODevice::ReadOnly); + bool fileOpenSuccessful = filterListFile.open(QIODevice::ReadOnly); + + // Exit here if the file open was not successful. + if (!fileOpenSuccessful) + return new FilterListStruct; // Create a filter list text stream. QTextStream filterListTextStream(&filterListFile); diff --git a/src/helpers/UserAgentHelper.cpp b/src/helpers/UserAgentHelper.cpp index 576b267..f673485 100644 --- a/src/helpers/UserAgentHelper.cpp +++ b/src/helpers/UserAgentHelper.cpp @@ -38,12 +38,12 @@ const QString UserAgentHelper::SAFARI_MACOS_DATABASE = QLatin1String("Safari mac // Define the public user agent constants. const QString UserAgentHelper::PRIVACY_BROWSER_USER_AGENT = QLatin1String("PrivacyBrowser/1.0"); -const QString UserAgentHelper::FIREFOX_LINUX_USER_AGENT = QLatin1String("Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"); -const QString UserAgentHelper::CHROMIUM_LINUX_USER_AGENT = QLatin1String("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"); -const QString UserAgentHelper::FIREFOX_WINDOWS_USER_AGENT = QLatin1String("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0"); -const QString UserAgentHelper::CHROME_WINDOWS_USER_AGENT = QLatin1String("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"); -const QString UserAgentHelper::EDGE_WINDOWS_USER_AGENT = QLatin1String("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0"); -const QString UserAgentHelper::SAFARI_MACOS_USER_AGENT = QLatin1String("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_Z) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15"); +const QString UserAgentHelper::FIREFOX_LINUX_USER_AGENT = QLatin1String("Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"); +const QString UserAgentHelper::CHROMIUM_LINUX_USER_AGENT = QLatin1String("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"); +const QString UserAgentHelper::FIREFOX_WINDOWS_USER_AGENT = QLatin1String("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:148.0) Gecko/20100101 Firefox/148.0"); +const QString UserAgentHelper::CHROME_WINDOWS_USER_AGENT = QLatin1String("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"); +const QString UserAgentHelper::EDGE_WINDOWS_USER_AGENT = QLatin1String("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0"); +const QString UserAgentHelper::SAFARI_MACOS_USER_AGENT = QLatin1String("macOS: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Safari/605.1.15"); // Construct the class. UserAgentHelper::UserAgentHelper() { -- 2.53.0