-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor Database and Database widgets #2491
Conversation
03b853f
to
c457363
Compare
c457363
to
eee05f1
Compare
e686220
to
76d7353
Compare
1667143
to
1e68822
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Round 1: Got up to Database.h
d870d20
to
228bea3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some general comments:
Group - The database should be held as a QWeakPointer instead of QPointer.
Still need to review DatabaseWidget and DatabaseTabWidget
I don't know if we should really use a QWeakPointer instead of a QPointer. Yes, it does guarantee that the object is not deleted while you are using it (which is unlikely, because everything runs on the same thread), but it has the overhead of requiring you to promote it to a QSharedPointer before you can use it. QPointer is much simpler to use. It does not guarantee that the object goes out of scope while you are using it, but it still guarantees that the pointer is reset to nullptr if the object is deleted, so no dangling pointers. |
Ah, I forgot QPointer sets to nullptr. We are good to go on that front then, please ignore my comment. |
Which is why I am converting all raw pointer member variables of a QObject type to QPointers when I see them. ;-) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Final batch of comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ready for merging!
The database refactor in #2491 removed auto-open functionality.
- New Database Wizard [#1952] - Advanced Search [#1797] - Automatic update checker [#2648] - KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739] - Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439] - Remove KeePassHttp support [#1752] - CLI: output info to stderr for easier scripting [#2558] - CLI: Add --quiet option [#2507] - CLI: Add create command [#2540] - CLI: Add recursive listing of entries [#2345] - CLI: Fix stdin/stdout encoding on Windows [#2425] - SSH Agent: Support OpenSSH for Windows [#1994] - macOS: TouchID Quick Unlock [#1851] - macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583] - Linux: Prevent Klipper from storing secrets in clipboard [#1969] - Linux: Use polling based file watching for NFS [#2171] - Linux: Enable use of browser plugin in Snap build [#2802] - TOTP QR Code Generator [#1167] - High-DPI Scaling for 4k screens [#2404] - Make keyboard shortcuts more consistent [#2431] - Warn user if deleting referenced entries [#1744] - Allow toolbar to be hidden and repositioned [#1819, #2357] - Increase max allowed database timeout to 12 hours [#2173] - Password generator uses existing password length by default [#2318] - Improve alert message box button labels [#2376] - Show message when a database merge makes no changes [#2551] - Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790] - Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
Description
This is the long-overdue refactoring of the Database internals.
The core changes are:
This patch is also the first major step towards solving issues #476 and #2322.
How has this been tested?
Tests pass, behaviour is the same as before (only slightly less buggy).
Types of changes
Checklist:
-DWITH_ASAN=ON
. [REQUIRED]