]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/windows/BrowserWindow.cpp
Add a default folder icon to the edit folder dialog. https://redmine.stoutner.com...
[PrivacyBrowserPC.git] / src / windows / BrowserWindow.cpp
index f0cd4dfc76e33223e4d75c44deacefd08b3c72ce..fe3b5939e86ea73d157d4ee87adf7165c59e839d 100644 (file)
@@ -543,12 +543,12 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer)
     // Add a separator to the bookmarks menu.
     bookmarksMenuPointer->addSeparator();
 
-    // Initialize the current bookmarks lists.
-    finalBookmarkFolderMenuActionList = QList<QPair<QMenu *, QAction *> *>();
+    // Initialize the bookmark action lists.
+    bookmarkFolderFinalActionList = QList<QPair<QMenu *, QAction *> *>();
     bookmarksMenuActionList = QList<QPair<QMenu *, QAction *> *>();
     bookmarksMenuSubmenuList = QList<QPair<QMenu *, QMenu *> *>();
     bookmarksToolBarActionList = QList<QAction*>();
-    bookmarksToolBarSubfolderActionList = QList<QPair<QMenu *, QAction * > *>();
+    bookmarksToolBarSubfolderActionList = QList<QPair<QMenu *, QAction *> *>();
 
     // Set the bookmarks toolbar context menu policy.
     bookmarksToolBarPointer->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -580,7 +580,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer)
     }
 }
 
-void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double folderId)
+// If actions are part of a context menu they do not need to be added to the list as they will be deleted automatically when the context menu closes.
+void BrowserWindow::addBookmarkFolderFinalActions(QMenu *menuPointer, const double folderId, const bool addToList)
 {
     // Get the database ID.
     int folderDatabaseId = BookmarksDatabase::getFolderDatabaseId(folderId);
@@ -688,8 +689,9 @@ void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double
             }
         );
 
-        // Add the action to the beginning of the final bookmark folder menu action list.
-        finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, editFolderActionPointer));
+        // Add the action to the beginning of the bookmark folder final action list if requsted.
+        if (addToList)
+            bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, editFolderActionPointer));
     }
 
     // Add the delete folder action to the menu.
@@ -760,13 +762,15 @@ void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double
         actionCollectionPointer->setDefaultShortcut(addFolderActionPointer, metaFKeySequence);
     }
 
-    // Add the actions to the beginning of the final bookmark folder menu action list.
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addBookmarkActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addFolderActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewTabsActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInBackgroundTabsActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewWindowActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, deleteFolderActionPointer));
+    // Add the actions to the beginning of the bookmark folder final action list if requested.
+    if (addToList) {
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addBookmarkActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addFolderActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewTabsActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInBackgroundTabsActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewWindowActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, deleteFolderActionPointer));
+    }
 }
 
 void BrowserWindow::addOrEditDomainSettings()
@@ -1091,10 +1095,10 @@ void BrowserWindow::populateBookmarksInAllWindows() const
 void BrowserWindow::populateBookmarksInThisWindow()
 {
     // Remove all the final bookmark folder menu actions.
-    for (QPair<QMenu *, QAction *> *finalBookmarkFolderMenuActionPair : finalBookmarkFolderMenuActionList)
+    for (QPair<QMenu *, QAction *> *bookmarkFolderFinalActionPairPointer : bookmarkFolderFinalActionList)
     {
         // Remove the action.
-        finalBookmarkFolderMenuActionPair->first->removeAction(finalBookmarkFolderMenuActionPair->second);
+        bookmarkFolderFinalActionPairPointer->first->removeAction(bookmarkFolderFinalActionPairPointer->second);
     }
 
     // Remove all the current menu bookmarks.
@@ -1125,11 +1129,12 @@ void BrowserWindow::populateBookmarksInThisWindow()
         bookmarksToolBarPointer->removeAction(bookmarkAction);
     }
 
-    // Clear the current bookmark lists.
+    // Clear the action lists.
+    bookmarkFolderFinalActionList.clear();
     bookmarksMenuActionList.clear();
     bookmarksMenuSubmenuList.clear();
-    bookmarksToolBarActionList.clear();
     bookmarksToolBarSubfolderActionList.clear();
+    bookmarksToolBarActionList.clear();
 
     // Populate the bookmarks subfolders, beginning with the root folder (`0`);
     populateBookmarksMenuSubfolders(0, bookmarksMenuPointer);
@@ -1189,8 +1194,8 @@ void BrowserWindow::populateBookmarksMenuSubfolders(const double folderId, QMenu
         }
     }
 
-    // Add the extra items at the bottom of the menu.
-    addFinalBookmarkFolderMenuActions(menuPointer, folderId);
+    // Add the extra items at the bottom of the menu.  `true` adds them to the list of actions to be deleted on repopulate.
+    addBookmarkFolderFinalActions(menuPointer, folderId, true);
 }
 
 void BrowserWindow::populateBookmarksToolBar()
@@ -1252,8 +1257,8 @@ void BrowserWindow::populateBookmarksToolBar()
     // Add the extra items to the toolbar folder menus.  The first item in the pair is the menu pointer.  The second is the folder ID.
     for (QPair<QMenu *, const double> *menuAndFolderIdPairPointer : bookmarksToolBarMenuList)
     {
-        // Populate the final bookmarks menu entries.
-        addFinalBookmarkFolderMenuActions(menuAndFolderIdPairPointer->first, menuAndFolderIdPairPointer->second);
+        // Populate the final bookmarks menu entries.  `true` adds them to the list of actions to be deleted on repopulate.
+        addBookmarkFolderFinalActions(menuAndFolderIdPairPointer->first, menuAndFolderIdPairPointer->second, true);
     }
 }
 
@@ -1346,8 +1351,8 @@ void BrowserWindow::showBookmarkContextMenu(const QPoint &point)
         // Create the menu according to the type.
         if (BookmarksDatabase::isFolder(databaseId))  // A folder was clicked.
         {
-            // Populate the final bookmarks menu entries.
-            addFinalBookmarkFolderMenuActions(bookmarkContextMenuPointer, BookmarksDatabase::getFolderId(databaseId));
+            // Populate the final bookmarks menu entries.  `false` does not add the actions to the delete list, as they will be automatically deleted when the menu closes.
+            addBookmarkFolderFinalActions(bookmarkContextMenuPointer, BookmarksDatabase::getFolderId(databaseId), false);
         }
         else  // A bookmark was clicked.
         {