Use improved, upstreamed version of dark mode fix

See https://github.com/wxWidgets/wxWidgets/pull/25950 for the various fixes.
This commit is contained in:
Crementif 2025-11-17 15:35:42 +01:00
parent bdbaccd542
commit 474e97454e
5 changed files with 56 additions and 65 deletions

View file

@ -1,25 +0,0 @@
diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp
index 2b9e0d7f7e..7eab8b37df 100644
--- a/src/msw/listctrl.cpp
+++ b/src/msw/listctrl.cpp
@@ -3110,6 +3110,11 @@ bool HandleSubItemPrepaint(wxListCtrl* listctrl, LPNMLVCUSTOMDRAW pLVCD, HFONT h
if ( it.iImage != -1 )
{
+ if ( !listctrl->HasCheckBoxes() )
+ {
+ rc.left -= 6;
+ }
+
const int yImage = rc.top + ((rc.bottom - rc.top) / 2 - hImage / 2);
ImageList_Draw(himl, it.iImage, hdc, rc.left, yImage,
nmcd.uItemState & CDIS_SELECTED ? ILD_SELECTED
@@ -3235,7 +3240,7 @@ void HandleItemPaint(wxListCtrl* listctrl, LPNMLVCUSTOMDRAW pLVCD, HFONT hfont)
// do not draw item background colour under the checkbox/image
RECT rcIcon;
wxGetListCtrlItemRect(nmcd.hdr.hwndFrom, nmcd.dwItemSpec, LVIR_ICON, rcIcon);
- if ( !::IsRectEmpty(&rcIcon) )
+ if ( !::IsRectEmpty(&rcIcon) && listctrl->HasCheckBoxes() )
rc.left = rcIcon.right + listctrl->FromDIP(GAP_BETWEEN_CHECKBOX_AND_TEXT);
}

View file

@ -1,9 +1,9 @@
diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake
index f044d22d4d..a78b9aa1e9 100644 index 4ed7b264ef..195d776aeb 100644
--- a/build/cmake/init.cmake --- a/build/cmake/init.cmake
+++ b/build/cmake/init.cmake +++ b/build/cmake/init.cmake
@@ -200,12 +200,12 @@ endif() @@ -201,11 +201,11 @@ endif()
wx_get_install_dir(include)
if(WIN32_MSVC_NAMING) if(WIN32_MSVC_NAMING)
if(wxBUILD_SHARED) if(wxBUILD_SHARED)
- set(lib_suffix "_dll") - set(lib_suffix "_dll")
@ -12,35 +12,34 @@ index f044d22d4d..a78b9aa1e9 100644
- set(lib_suffix "_lib") - set(lib_suffix "_lib")
+ # set(lib_suffix "_lib") + # set(lib_suffix "_lib")
endif() endif()
- set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}") - set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}")
+ # set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}") + # set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}")
set(wxINSTALL_INCLUDE_DIR "${include_dir}")
# Generator expression to not create different Debug and Release directories else()
set(GEN_EXPR_DIR "$<1:/>") wx_get_flavour(lib_flavour "-")
diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake diff --git a/build/cmake/install.cmake b/build/cmake/install.cmake
index a373983043..2e1ace7bf9 100644 index cbbefdebe9..8f2759d5ad 100644
--- a/build/cmake/install.cmake --- a/build/cmake/install.cmake
+++ b/build/cmake/install.cmake +++ b/build/cmake/install.cmake
@@ -63,7 +63,7 @@ else() @@ -66,7 +66,7 @@ else()
wx_get_install_platform_dir(runtime)
install(DIRECTORY DESTINATION "bin") install(DIRECTORY DESTINATION "${runtime_dir}")
install(CODE "execute_process( \ install(CODE "execute_process( \
- COMMAND ${CMAKE_COMMAND} -E create_symlink \ - COMMAND ${CMAKE_COMMAND} -E create_symlink \
+ COMMAND ${CMAKE_COMMAND} -E copy \ + COMMAND ${CMAKE_COMMAND} -E copy \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/wx/config/${wxBUILD_FILE_ID}\" \ \"${CMAKE_INSTALL_PREFIX}/${library_dir}/wx/config/${wxBUILD_FILE_ID}\" \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wx-config\" \ \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config\" \
)" )"
diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt diff --git a/build/cmake/utils/CMakeLists.txt b/build/cmake/utils/CMakeLists.txt
index 15f4339ef9..f93849e025 100644 index 608351ac42..d8110f9148 100644
--- a/build/cmake/utils/CMakeLists.txt --- a/build/cmake/utils/CMakeLists.txt
+++ b/build/cmake/utils/CMakeLists.txt +++ b/build/cmake/utils/CMakeLists.txt
@@ -39,7 +39,7 @@ if(wxUSE_XRC) @@ -40,7 +40,7 @@ if(wxUSE_XRC)
# Don't use wx_install() here to preserve escaping. # Don't use wx_install() here to preserve escaping.
install(CODE "execute_process( \ install(CODE "execute_process( \
- COMMAND ${CMAKE_COMMAND} -E create_symlink \ - COMMAND ${CMAKE_COMMAND} -E create_symlink \
+ COMMAND ${CMAKE_COMMAND} -E copy \ + COMMAND ${CMAKE_COMMAND} -E copy \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/${wxrc_output_name}${EXE_SUFFIX}\" \ \"${CMAKE_INSTALL_PREFIX}/${runtime_dir}/${wxrc_output_name}${EXE_SUFFIX}\" \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX}\" \ \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wxrc${EXE_SUFFIX}\" \
)" )"

View file

@ -1,13 +1,12 @@
diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in
index b251109..60cf762 100644 index 2f3a735d92..c134900764 100644
--- a/build/cmake/wxWidgetsConfig.cmake.in --- a/build/cmake/wxWidgetsConfig.cmake.in
+++ b/build/cmake/wxWidgetsConfig.cmake.in +++ b/build/cmake/wxWidgetsConfig.cmake.in
@@ -1,5 +1,8 @@ @@ -155,6 +155,7 @@ foreach(libname @wxLIB_TARGETS@)
@PACKAGE_INIT@ endforeach()
+include(CMakeFindDependencyMacro) include(CMakeFindDependencyMacro)
+find_dependency(NanoSVG CONFIG) +find_dependency(NanoSVG CONFIG)
+
cmake_policy(PUSH) if(TARGET wx::wxnet AND @wxUSE_WEBREQUEST_CURL@)
# Set policies to prevent warnings # make sure CURL targets are available:
if(POLICY CMP0057)

View file

@ -1,8 +1,8 @@
vcpkg_from_github( vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH OUT_SOURCE_PATH SOURCE_PATH
REPO wxWidgets/wxWidgets REPO wxWidgets/wxWidgets
REF "v${VERSION}" REF "f3da561"
SHA512 8ad17582c4ba721ffe76ada4bb8bd7bc4b050491220aca335fd0506a51354fb789d5bc3d965f0f459dc81784d6427c88272e2acc2099cddf73730231b5a16f62 SHA512 04e273b83ec683ed18ff5278371441b5ecf5897d34a896307cb59c58fb7adf68a70f6af3b3193bb1c63b9985edd5e6807202c05af3202a54c4142518ed15a71b
HEAD_REF master HEAD_REF master
PATCHES PATCHES
install-layout.patch install-layout.patch
@ -123,7 +123,7 @@ vcpkg_cmake_configure(
) )
vcpkg_cmake_install() vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/wxWidgets) vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/wxWidgets-3.3)
# The CMake export is not ready for use: It lacks a config file. # The CMake export is not ready for use: It lacks a config file.
file(REMOVE_RECURSE file(REMOVE_RECURSE
@ -218,12 +218,30 @@ endif()
if("example" IN_LIST FEATURES) if("example" IN_LIST FEATURES)
file(INSTALL file(INSTALL
"${CMAKE_CURRENT_LIST_DIR}/example/CMakeLists.txt" "${CMAKE_CURRENT_LIST_DIR}/minimal_example/CMakeLists.txt"
"${SOURCE_PATH}/samples/popup/popup.cpp" "${SOURCE_PATH}/samples/minimal/minimal.cpp"
"${SOURCE_PATH}/samples/sample.xpm" "${SOURCE_PATH}/samples/sample.xpm"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/example" "${SOURCE_PATH}/samples/sample.rc"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/minimal_example"
) )
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/example/popup.cpp" "../sample.xpm" "sample.xpm")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/minimal_example/minimal.cpp" "../sample.xpm" "sample.xpm")
endif()
if("example" IN_LIST FEATURES)
file(INSTALL
"${CMAKE_CURRENT_LIST_DIR}/listctrl_example/CMakeLists.txt"
"${SOURCE_PATH}/samples/listctrl/listtest.cpp"
"${SOURCE_PATH}/samples/listctrl/listtest.h"
"${SOURCE_PATH}/samples/listctrl/listtest.rc"
"${SOURCE_PATH}/samples/sample.xpm"
"${SOURCE_PATH}/samples/sample.rc"
"${SOURCE_PATH}/samples/listctrl/bitmaps"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/listctrl_example"
)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/listctrl_example/listtest.cpp" "../sample.xpm" "sample.xpm")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/listctrl_example/listtest.rc" "../sample.rc" "sample.rc")
endif() endif()
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)

View file

@ -1,8 +1,8 @@
diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake
index 5447d33..f5440b4 100644 index 4ed7b264ef..9abf7c9d5d 100644
--- a/build/cmake/init.cmake --- a/build/cmake/init.cmake
+++ b/build/cmake/init.cmake +++ b/build/cmake/init.cmake
@@ -530,7 +530,9 @@ if(wxUSE_GUI) @@ -667,7 +667,9 @@ if(wxUSE_GUI)
endif() endif()
if(wxUSE_SOUND AND wxUSE_LIBSDL AND UNIX AND NOT APPLE) if(wxUSE_SOUND AND wxUSE_LIBSDL AND UNIX AND NOT APPLE)
@ -12,12 +12,12 @@ index 5447d33..f5440b4 100644
+ set(SDL2_LIBRARY SDL2::SDL2 CACHE INTERNAL "") + set(SDL2_LIBRARY SDL2::SDL2 CACHE INTERNAL "")
if(NOT SDL2_FOUND) if(NOT SDL2_FOUND)
find_package(SDL) find_package(SDL)
endif() mark_as_advanced(SDL_INCLUDE_DIR SDLMAIN_LIBRARY)
diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in
index 60cf762..202a8c3 100644 index c134900764..7bcb691074 100644
--- a/build/cmake/wxWidgetsConfig.cmake.in --- a/build/cmake/wxWidgetsConfig.cmake.in
+++ b/build/cmake/wxWidgetsConfig.cmake.in +++ b/build/cmake/wxWidgetsConfig.cmake.in
@@ -2,6 +2,9 @@ @@ -156,6 +156,9 @@ endforeach()
include(CMakeFindDependencyMacro) include(CMakeFindDependencyMacro)
find_dependency(NanoSVG CONFIG) find_dependency(NanoSVG CONFIG)
@ -25,5 +25,5 @@ index 60cf762..202a8c3 100644
+ find_dependency(SDL2 CONFIG) + find_dependency(SDL2 CONFIG)
+endif() +endif()
cmake_policy(PUSH) if(TARGET wx::wxnet AND @wxUSE_WEBREQUEST_CURL@)
# Set policies to prevent warnings # make sure CURL targets are available: