Commit Graph

49 Commits

Author SHA1 Message Date
Yuhang Zhao bbd20b6476 win32: minor improvements
1. Adds some more comments
2. Fixed a typo in QMainWindow example
3. Commented out a block of code that may cause issues
4. Return WVR_REDRAW by default in WM_NCCALCSIZE
5. Other minor tweaks

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-03-09 10:21:52 +08:00
Yuhang Zhao 39ec7efcf3 win32: minor refactor
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-03-07 11:45:54 +08:00
Yuhang Zhao 824b0746c1 Win32: remove unnecessary code
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-02-21 11:05:00 +08:00
Yuhang Zhao a9256ba4b3 QtQuick demo: work-around a QtQuick bug
See https://bugreports.qt.io/browse/QTBUG-69711
Also some minor tweaks of the constexpr variables.

Fixes: #35

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-02-10 10:14:54 +08:00
Yuhang Zhao ebe7da1a9f Win32: use Win32 APIs instead of Qt APIs
Our native event filter happens before QPA's internal
handling, so the window state won't change if we query
for them in the native event filter. To fix this, use
Win32 API instead.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-01-20 13:16:45 +08:00
Yuhang Zhao e85e3f891e Example: special case for Win11
1. On Win11 we don't need to paint the frame border, the OS will always draw one for us.
2. Fix the wrong coordinate of the right and bottom frame border of the widget example.
3. Improve the Qt Quick example.
4. Correctly detect the OS version when building against Qt below 5.9.
5. Other minor tweaks.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-01-07 11:10:28 +08:00
Yuhang Zhao e3adb917a6 Fix build on Qt before 5.14
1. The QWinRegistryKey class was introduced in 5.14.0. The implementation is quite clean, so just copy the sources files from Qt repo in case the user is linking against a version older than 5.14.
2. Fixes the rounding error of the self-painted frame border of the examples.
3. Other minor tweaks.

Fixes: #95
Task-number: #94

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2022-01-06 11:18:33 +08:00
Yuhang Zhao 17601f386f Code refactor
1. Load dwmapi.dll and winmm.dll dynamically at runtime, to remove the dependency on those dlls
2. Use QSystemLibrary to load dlls, it can make the loading of system dlls safer, and avoid duplicating the code
3. Use QWinRegistryKey to access registry, no need to use QSettings in such scenarios
4. Adapt to new code when building against Qt 6.3 and newer.
5. Other minor tweaks.

Fixes: #94
2022-01-05 11:00:31 +08:00
Yuhang Zhao 2fafa7a433 Fix the border width of the examples
Amends commit 3aba956d66

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-11-19 14:29:44 +08:00
Yuhang Zhao 3aba956d66 Minor improvements
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-11-19 14:11:55 +08:00
Yuhang Zhao 330669e34a Quality improvements
1. Use native frame color in the MainWindow example, just like the Widget example. Fixes #87
2. Rename setHitTestVisibleInChrome() to setHitTestVisible(): This name was taken from Microsoft's WindowChrome class in WPF. Now they removed the legacy "Chrome" suffix in their new products, so we removed it as well.
3. Fix build with Qt older than 5.15: Q_NAMESPACE_EXPORT was introduced in Qt 5.14
4. Removed code that supports native frame: they are just leftovers of the previous refactoring.
4. Correctly detect SetWindowLongPtrW() and GetWindowLongPtrW() 's operation result: they won't modify the Last Error state on success, so we have to set Last Error state to ERROR_SUCCESS before calling them to make sure we get the correct error code.
5. Remove implicitly conversions, use explicit casts where possible
6. Fixed FormatMessage() usage, correctly retrieve the error message: According to MSDN, we should pass the address of a LPWSTR, not the LPWSTR itself.
7. Removed the special handing of WM_SIZE: It turns out that this handling is not needed at all and it's causing new issues, so just remove it.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-10-08 15:43:33 +08:00
Yuhang Zhao 138a2b90cb Minor refactor
1. Remove compiler specific flags
2. Build shared library by default
3. Remove unused functions
4. Minor tweaks of some internal logic, the final behavior is not affected

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-09-06 14:24:43 +08:00
Yuhang Zhao 8367331278 Win32: move all win32 staff to one header
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-09-05 13:24:12 +08:00
Yuhang Zhao d64b38a8db Improve the widget example
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-09-05 12:27:16 +08:00
Yuhang Zhao a5a5942d80 Win32: Add some useful functions back
1. Also rename some leftovers to more appropriate names
2. Be more verbose to help debugging

TODO: improve widget example, make use of the these functions

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-09-05 09:20:19 +08:00
Yuhang Zhao bc8a70dbb2 Win32: Fix window content will be cut-off for some pixels when window is fullscreened
1. Fix that bug
2. Some adjustments of the variable names to make them more clear
3. Some tweaks to the title bar height value

TODO: Add a button to switch between fullscreen and windowed mode for the widget example
TODO: Add a title text to the widget example

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-09-04 22:40:13 +08:00
Yuhang Zhao 2c106ffef9 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-09-01 15:26:36 +08:00
Yuhang Zhao 2b6d0fccb6 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-07-23 11:04:48 +08:00
Yuhang Zhao 233ebba3ec Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-07-20 09:58:00 +08:00
Yuhang Zhao f30339ff54 Minor cleanup
1. Remove unneeded functions
2. Rename some functions and variables to match their real functionality

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-07-19 10:43:10 +08:00
Yuhang Zhao bdbfc96eb0 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-07-17 15:35:55 +08:00
Yuhang Zhao fe2d5716e2 Fix old Qt build
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-06-25 16:35:32 +08:00
Yuhang Zhao 5938fcb475 Internal refactor
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-06-25 14:17:32 +08:00
Yuhang Zhao 28144b1e74 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-06-09 13:27:11 +08:00
Yuhang Zhao cdb7b87eb4 Remove acrylic related things
They'll be moved to a separate repo instead

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-04-02 12:02:46 +08:00
Yuhang Zhao 97d9009500 Utils: Win32: Fix API usage
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-04-02 09:06:32 +08:00
Yuhang Zhao ef34a7c699 Minor fixes
1. Fix MainWindow example issue
2. Add a comment about the inverted argument
3. Fix some memory leaks

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-04-01 09:52:38 +08:00
Yuhang Zhao d4a5239d26 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-26 09:27:43 +08:00
Yuhang Zhao 399b1cef1c Minor tweaks
1. Fix compilation error for QMake.
2. Fix some warning messages are in the wrong place.
3. Fix the IActiveDesktop can't get wallpaper.
4. Other minor tweaks.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-22 09:38:48 +08:00
Yuhang Zhao 43d0e5f95d Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-21 20:38:33 +08:00
Yuhang Zhao 85edd9abbd Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-21 15:47:18 +08:00
Yuhang Zhao 42ee3f8a91 Minor improvements
1. QScopedPointer's get() function was introduced in Qt 5.11, too new, don't use it, use data() instead. They are the same.
2. Fixed a typo.
3. Use QGuiApplication::isRightToLeft() to simplify the code.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-20 11:19:10 +08:00
Yuhang Zhao b62dabcc68 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-19 15:44:55 +08:00
Yuhang Zhao 356c11960d Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-19 10:19:47 +08:00
Yuhang Zhao 6bc6ed63cc Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-18 09:48:55 +08:00
Yuhang Zhao 6adbefa814 Simplify code
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-18 09:12:19 +08:00
Yuhang Zhao 2823cbe34a Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-18 09:06:12 +08:00
Yuhang Zhao 0a5e5aa67b Minor improvement
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-17 22:03:10 +08:00
Yuhang Zhao c19a4f7f74 Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-11 21:07:06 +08:00
Yuhang Zhao bd05c66e23 Switch to traditional blur if the user disabled extra processing
Amends commit 070e8edc52

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-11 10:22:20 +08:00
Yuhang Zhao 76fd19211d Win32: Utilities: Add more enums learned from other repos
We may not need it, but we record it here in case it become usable in the future.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-11 09:43:19 +08:00
Yuhang Zhao b9ad74b81c Win32: Code tidies
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-11 09:38:50 +08:00
Yuhang Zhao c9be4858ec Use the official Acrylic blur whenever possible
And switch back to the wallpaper blur when the window is being moved or resized.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-10 17:28:48 +08:00
Yuhang Zhao a183a6d4a1 Make the wallpaper blur dynamic update
The window background will update dynamically once
it's being moved.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-10 14:18:08 +08:00
Yuhang Zhao 0931b73671 Some refactor
Rename some functions to make it more clear.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-10 10:05:23 +08:00
Yuhang Zhao bc9edaf78a Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-09 20:24:51 +08:00
Yuhang Zhao 44ed5fcf3d Minor tweaks
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-09 11:32:30 +08:00
Yuhang Zhao 21f1f69684 Use wallpaper blur by default
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-08 21:10:11 +08:00
Yuhang Zhao f70158a276 Add cross-platform Acrylic Effect
Currently still lacking Linux and macOS support,
but will be added sooner.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
2021-03-08 14:10:55 +08:00