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
index f044d22d4d..a78b9aa1e9 100644
index 4ed7b264ef..195d776aeb 100644
--- a/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(wxBUILD_SHARED)
- set(lib_suffix "_dll")
@ -12,35 +12,34 @@ index f044d22d4d..a78b9aa1e9 100644
- set(lib_suffix "_lib")
+ # set(lib_suffix "_lib")
endif()
- set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}")
+ # set(wxPLATFORM_LIB_DIR "${wxCOMPILER_PREFIX}${wxARCH_SUFFIX}${lib_suffix}")
# Generator expression to not create different Debug and Release directories
set(GEN_EXPR_DIR "$<1:/>")
set(wxINSTALL_INCLUDE_DIR "${include_dir}")
else()
wx_get_flavour(lib_flavour "-")
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
+++ b/build/cmake/install.cmake
@@ -63,7 +63,7 @@ else()
install(DIRECTORY DESTINATION "bin")
@@ -66,7 +66,7 @@ else()
wx_get_install_platform_dir(runtime)
install(DIRECTORY DESTINATION "${runtime_dir}")
install(CODE "execute_process( \
- COMMAND ${CMAKE_COMMAND} -E create_symlink \
+ COMMAND ${CMAKE_COMMAND} -E copy \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/wx/config/${wxBUILD_FILE_ID}\" \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wx-config\" \
\"${CMAKE_INSTALL_PREFIX}/${library_dir}/wx/config/${wxBUILD_FILE_ID}\" \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${runtime_dir}/wx-config\" \
)"
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
+++ 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.
install(CODE "execute_process( \
- COMMAND ${CMAKE_COMMAND} -E create_symlink \
+ COMMAND ${CMAKE_COMMAND} -E copy \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/${wxrc_output_name}${EXE_SUFFIX}\" \
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/wxrc${EXE_SUFFIX}\" \
\"${CMAKE_INSTALL_PREFIX}/${runtime_dir}/${wxrc_output_name}${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
index b251109..60cf762 100644
index 2f3a735d92..c134900764 100644
--- a/build/cmake/wxWidgetsConfig.cmake.in
+++ b/build/cmake/wxWidgetsConfig.cmake.in
@@ -1,5 +1,8 @@
@PACKAGE_INIT@
@@ -155,6 +155,7 @@ foreach(libname @wxLIB_TARGETS@)
endforeach()
+include(CMakeFindDependencyMacro)
include(CMakeFindDependencyMacro)
+find_dependency(NanoSVG CONFIG)
+
cmake_policy(PUSH)
# Set policies to prevent warnings
if(POLICY CMP0057)
if(TARGET wx::wxnet AND @wxUSE_WEBREQUEST_CURL@)
# make sure CURL targets are available:

View file

@ -1,8 +1,8 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO wxWidgets/wxWidgets
REF "v${VERSION}"
SHA512 8ad17582c4ba721ffe76ada4bb8bd7bc4b050491220aca335fd0506a51354fb789d5bc3d965f0f459dc81784d6427c88272e2acc2099cddf73730231b5a16f62
REF "f3da561"
SHA512 04e273b83ec683ed18ff5278371441b5ecf5897d34a896307cb59c58fb7adf68a70f6af3b3193bb1c63b9985edd5e6807202c05af3202a54c4142518ed15a71b
HEAD_REF master
PATCHES
install-layout.patch
@ -123,7 +123,7 @@ vcpkg_cmake_configure(
)
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.
file(REMOVE_RECURSE
@ -218,12 +218,30 @@ endif()
if("example" IN_LIST FEATURES)
file(INSTALL
"${CMAKE_CURRENT_LIST_DIR}/example/CMakeLists.txt"
"${SOURCE_PATH}/samples/popup/popup.cpp"
"${SOURCE_PATH}/samples/sample.xpm"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/example"
"${CMAKE_CURRENT_LIST_DIR}/minimal_example/CMakeLists.txt"
"${SOURCE_PATH}/samples/minimal/minimal.cpp"
"${SOURCE_PATH}/samples/sample.xpm"
"${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()
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
index 5447d33..f5440b4 100644
index 4ed7b264ef..9abf7c9d5d 100644
--- a/build/cmake/init.cmake
+++ b/build/cmake/init.cmake
@@ -530,7 +530,9 @@ if(wxUSE_GUI)
@@ -667,7 +667,9 @@ if(wxUSE_GUI)
endif()
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 "")
if(NOT SDL2_FOUND)
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
index 60cf762..202a8c3 100644
index c134900764..7bcb691074 100644
--- a/build/cmake/wxWidgetsConfig.cmake.in
+++ b/build/cmake/wxWidgetsConfig.cmake.in
@@ -2,6 +2,9 @@
@@ -156,6 +156,9 @@ endforeach()
include(CMakeFindDependencyMacro)
find_dependency(NanoSVG CONFIG)
@ -25,5 +25,5 @@ index 60cf762..202a8c3 100644
+ find_dependency(SDL2 CONFIG)
+endif()
cmake_policy(PUSH)
# Set policies to prevent warnings
if(TARGET wx::wxnet AND @wxUSE_WEBREQUEST_CURL@)
# make sure CURL targets are available: