mirror of
https://github.com/wxWidgets/wxWidgets.git
synced 2026-08-17 17:02:51 +08:00
Merge branch 'msw-dark-taskdlg'
Add dark mode support to wxMSW task dialog-based dialogs. See #26570.
This commit is contained in:
+28
-8
@@ -5067,7 +5067,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS = \
|
||||
monodll_darkmode.o \
|
||||
monodll_msw_appprogress.o \
|
||||
monodll_taskbarbutton.o \
|
||||
monodll_msw_power.o
|
||||
monodll_msw_power.o \
|
||||
monodll_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS)
|
||||
@@ -5811,7 +5812,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1 = \
|
||||
monodll_darkmode.o \
|
||||
monodll_msw_appprogress.o \
|
||||
monodll_taskbarbutton.o \
|
||||
monodll_msw_power.o
|
||||
monodll_msw_power.o \
|
||||
monodll_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_1 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_1 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS)
|
||||
@@ -6855,7 +6857,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2 = \
|
||||
monolib_darkmode.o \
|
||||
monolib_msw_appprogress.o \
|
||||
monolib_taskbarbutton.o \
|
||||
monolib_msw_power.o
|
||||
monolib_msw_power.o \
|
||||
monolib_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_2 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_2 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS_17)
|
||||
@@ -7599,7 +7602,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3 = \
|
||||
monolib_darkmode.o \
|
||||
monolib_msw_appprogress.o \
|
||||
monolib_taskbarbutton.o \
|
||||
monolib_msw_power.o
|
||||
monolib_msw_power.o \
|
||||
monolib_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_3 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_3 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS_17)
|
||||
@@ -8789,7 +8793,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4 = \
|
||||
coredll_darkmode.o \
|
||||
coredll_msw_appprogress.o \
|
||||
coredll_taskbarbutton.o \
|
||||
coredll_msw_power.o
|
||||
coredll_msw_power.o \
|
||||
coredll_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_4 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_4 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS_1_1)
|
||||
@@ -9533,7 +9538,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5 = \
|
||||
coredll_darkmode.o \
|
||||
coredll_msw_appprogress.o \
|
||||
coredll_taskbarbutton.o \
|
||||
coredll_msw_power.o
|
||||
coredll_msw_power.o \
|
||||
coredll_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_5 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_5 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS_1_1)
|
||||
@@ -10302,7 +10308,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6 = \
|
||||
corelib_darkmode.o \
|
||||
corelib_msw_appprogress.o \
|
||||
corelib_taskbarbutton.o \
|
||||
corelib_msw_power.o
|
||||
corelib_msw_power.o \
|
||||
corelib_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_6 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_6 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS_1_4)
|
||||
@@ -11046,7 +11053,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7 = \
|
||||
corelib_darkmode.o \
|
||||
corelib_msw_appprogress.o \
|
||||
corelib_taskbarbutton.o \
|
||||
corelib_msw_power.o
|
||||
corelib_msw_power.o \
|
||||
corelib_taskdlg.o
|
||||
@COND_TOOLKIT_MSW@__LOWLEVEL_SRC_OBJECTS_7 = $(COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7)
|
||||
@COND_TOOLKIT_OSX_COCOA@__LOWLEVEL_SRC_OBJECTS_7 = \
|
||||
@COND_TOOLKIT_OSX_COCOA@ $(__OSX_LOWLEVEL_SRC_OBJECTS_1_4)
|
||||
@@ -18082,6 +18090,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_power.o: $(srcdir)/src/msw/power.cpp $(MONODLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_taskdlg.o: $(srcdir)/src/msw/taskdlg.cpp $(MONODLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/taskdlg.cpp
|
||||
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@monodll_artmac.o: $(srcdir)/src/osx/artmac.cpp $(MONODLL_ODEP)
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/artmac.cpp
|
||||
|
||||
@@ -22876,6 +22887,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_power.o: $(srcdir)/src/msw/power.cpp $(MONOLIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_taskdlg.o: $(srcdir)/src/msw/taskdlg.cpp $(MONOLIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/taskdlg.cpp
|
||||
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@monolib_artmac.o: $(srcdir)/src/osx/artmac.cpp $(MONOLIB_ODEP)
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/artmac.cpp
|
||||
|
||||
@@ -27733,6 +27747,9 @@ coredll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(COREDLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@coredll_msw_power.o: $(srcdir)/src/msw/power.cpp $(COREDLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@coredll_taskdlg.o: $(srcdir)/src/msw/taskdlg.cpp $(COREDLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/taskdlg.cpp
|
||||
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@coredll_artmac.o: $(srcdir)/src/osx/artmac.cpp $(COREDLL_ODEP)
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/artmac.cpp
|
||||
|
||||
@@ -31489,6 +31506,9 @@ corelib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(CORELIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@corelib_msw_power.o: $(srcdir)/src/msw/power.cpp $(CORELIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/power.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@corelib_taskdlg.o: $(srcdir)/src/msw/taskdlg.cpp $(CORELIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/taskdlg.cpp
|
||||
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@corelib_artmac.o: $(srcdir)/src/osx/artmac.cpp $(CORELIB_ODEP)
|
||||
@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/artmac.cpp
|
||||
|
||||
|
||||
@@ -1765,6 +1765,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
||||
src/msw/appprogress.cpp
|
||||
src/msw/taskbarbutton.cpp
|
||||
src/msw/power.cpp
|
||||
src/msw/taskdlg.cpp
|
||||
</set>
|
||||
<set var="MSW_LOWLEVEL_HDR" hints="files">
|
||||
wx/msw/nonownedwnd.h
|
||||
|
||||
@@ -1641,6 +1641,7 @@ set(MSW_LOWLEVEL_SRC
|
||||
src/msw/appprogress.cpp
|
||||
src/msw/taskbarbutton.cpp
|
||||
src/msw/power.cpp
|
||||
src/msw/taskdlg.cpp
|
||||
)
|
||||
|
||||
set(MSW_LOWLEVEL_HDR
|
||||
|
||||
@@ -1641,6 +1641,7 @@ MSW_LOWLEVEL_SRC =
|
||||
src/msw/sound.cpp
|
||||
src/msw/taskbar.cpp
|
||||
src/msw/taskbarbutton.cpp
|
||||
src/msw/taskdlg.cpp
|
||||
src/msw/textmeasure.cpp
|
||||
src/msw/tooltip.cpp
|
||||
src/msw/toplevel.cpp
|
||||
|
||||
@@ -2145,6 +2145,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
||||
$(OBJS)\monodll_appprogress.o \
|
||||
$(OBJS)\monodll_taskbarbutton.o \
|
||||
$(OBJS)\monodll_power.o \
|
||||
$(OBJS)\monodll_taskdlg.o \
|
||||
$(OBJS)\monodll_clrpickerg.o \
|
||||
$(OBJS)\monodll_collpaneg.o \
|
||||
$(OBJS)\monodll_filepickerg.o \
|
||||
@@ -2498,6 +2499,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
||||
$(OBJS)\monodll_appprogress.o \
|
||||
$(OBJS)\monodll_taskbarbutton.o \
|
||||
$(OBJS)\monodll_power.o \
|
||||
$(OBJS)\monodll_taskdlg.o \
|
||||
$(OBJS)\monodll_generic_accel.o \
|
||||
$(OBJS)\monodll_clrpickerg.o \
|
||||
$(OBJS)\monodll_collpaneg.o \
|
||||
@@ -3015,6 +3017,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
||||
$(OBJS)\monolib_appprogress.o \
|
||||
$(OBJS)\monolib_taskbarbutton.o \
|
||||
$(OBJS)\monolib_power.o \
|
||||
$(OBJS)\monolib_taskdlg.o \
|
||||
$(OBJS)\monolib_clrpickerg.o \
|
||||
$(OBJS)\monolib_collpaneg.o \
|
||||
$(OBJS)\monolib_filepickerg.o \
|
||||
@@ -3368,6 +3371,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
||||
$(OBJS)\monolib_appprogress.o \
|
||||
$(OBJS)\monolib_taskbarbutton.o \
|
||||
$(OBJS)\monolib_power.o \
|
||||
$(OBJS)\monolib_taskdlg.o \
|
||||
$(OBJS)\monolib_generic_accel.o \
|
||||
$(OBJS)\monolib_clrpickerg.o \
|
||||
$(OBJS)\monolib_collpaneg.o \
|
||||
@@ -3760,6 +3764,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
||||
$(OBJS)\coredll_appprogress.o \
|
||||
$(OBJS)\coredll_taskbarbutton.o \
|
||||
$(OBJS)\coredll_power.o \
|
||||
$(OBJS)\coredll_taskdlg.o \
|
||||
$(OBJS)\coredll_clrpickerg.o \
|
||||
$(OBJS)\coredll_collpaneg.o \
|
||||
$(OBJS)\coredll_filepickerg.o \
|
||||
@@ -4113,6 +4118,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
||||
$(OBJS)\coredll_appprogress.o \
|
||||
$(OBJS)\coredll_taskbarbutton.o \
|
||||
$(OBJS)\coredll_power.o \
|
||||
$(OBJS)\coredll_taskdlg.o \
|
||||
$(OBJS)\coredll_generic_accel.o \
|
||||
$(OBJS)\coredll_clrpickerg.o \
|
||||
$(OBJS)\coredll_collpaneg.o \
|
||||
@@ -4461,6 +4467,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
||||
$(OBJS)\corelib_appprogress.o \
|
||||
$(OBJS)\corelib_taskbarbutton.o \
|
||||
$(OBJS)\corelib_power.o \
|
||||
$(OBJS)\corelib_taskdlg.o \
|
||||
$(OBJS)\corelib_clrpickerg.o \
|
||||
$(OBJS)\corelib_collpaneg.o \
|
||||
$(OBJS)\corelib_filepickerg.o \
|
||||
@@ -4814,6 +4821,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
||||
$(OBJS)\corelib_appprogress.o \
|
||||
$(OBJS)\corelib_taskbarbutton.o \
|
||||
$(OBJS)\corelib_power.o \
|
||||
$(OBJS)\corelib_taskdlg.o \
|
||||
$(OBJS)\corelib_generic_accel.o \
|
||||
$(OBJS)\corelib_clrpickerg.o \
|
||||
$(OBJS)\corelib_collpaneg.o \
|
||||
@@ -9297,6 +9305,11 @@ $(OBJS)\monodll_power.o: ../../src/msw/power.cpp
|
||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\monodll_taskdlg.o: ../../src/msw/taskdlg.cpp
|
||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\monodll_clrpickerg.o: ../../src/generic/clrpickerg.cpp
|
||||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
@@ -11925,6 +11938,11 @@ $(OBJS)\monolib_power.o: ../../src/msw/power.cpp
|
||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\monolib_taskdlg.o: ../../src/msw/taskdlg.cpp
|
||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\monolib_clrpickerg.o: ../../src/generic/clrpickerg.cpp
|
||||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
@@ -14493,6 +14511,11 @@ $(OBJS)\coredll_power.o: ../../src/msw/power.cpp
|
||||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\coredll_taskdlg.o: ../../src/msw/taskdlg.cpp
|
||||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\coredll_clrpickerg.o: ../../src/generic/clrpickerg.cpp
|
||||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
@@ -16278,6 +16301,11 @@ $(OBJS)\corelib_power.o: ../../src/msw/power.cpp
|
||||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\corelib_taskdlg.o: ../../src/msw/taskdlg.cpp
|
||||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\corelib_clrpickerg.o: ../../src/generic/clrpickerg.cpp
|
||||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
@@ -2531,6 +2531,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
||||
$(OBJS)\monodll_appprogress.obj \
|
||||
$(OBJS)\monodll_taskbarbutton.obj \
|
||||
$(OBJS)\monodll_power.obj \
|
||||
$(OBJS)\monodll_taskdlg.obj \
|
||||
$(OBJS)\monodll_clrpickerg.obj \
|
||||
$(OBJS)\monodll_collpaneg.obj \
|
||||
$(OBJS)\monodll_filepickerg.obj \
|
||||
@@ -2882,6 +2883,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
||||
$(OBJS)\monodll_appprogress.obj \
|
||||
$(OBJS)\monodll_taskbarbutton.obj \
|
||||
$(OBJS)\monodll_power.obj \
|
||||
$(OBJS)\monodll_taskdlg.obj \
|
||||
$(OBJS)\monodll_generic_accel.obj \
|
||||
$(OBJS)\monodll_clrpickerg.obj \
|
||||
$(OBJS)\monodll_collpaneg.obj \
|
||||
@@ -3401,6 +3403,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
||||
$(OBJS)\monolib_appprogress.obj \
|
||||
$(OBJS)\monolib_taskbarbutton.obj \
|
||||
$(OBJS)\monolib_power.obj \
|
||||
$(OBJS)\monolib_taskdlg.obj \
|
||||
$(OBJS)\monolib_clrpickerg.obj \
|
||||
$(OBJS)\monolib_collpaneg.obj \
|
||||
$(OBJS)\monolib_filepickerg.obj \
|
||||
@@ -3752,6 +3755,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
||||
$(OBJS)\monolib_appprogress.obj \
|
||||
$(OBJS)\monolib_taskbarbutton.obj \
|
||||
$(OBJS)\monolib_power.obj \
|
||||
$(OBJS)\monolib_taskdlg.obj \
|
||||
$(OBJS)\monolib_generic_accel.obj \
|
||||
$(OBJS)\monolib_clrpickerg.obj \
|
||||
$(OBJS)\monolib_collpaneg.obj \
|
||||
@@ -4196,6 +4200,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
||||
$(OBJS)\coredll_appprogress.obj \
|
||||
$(OBJS)\coredll_taskbarbutton.obj \
|
||||
$(OBJS)\coredll_power.obj \
|
||||
$(OBJS)\coredll_taskdlg.obj \
|
||||
$(OBJS)\coredll_clrpickerg.obj \
|
||||
$(OBJS)\coredll_collpaneg.obj \
|
||||
$(OBJS)\coredll_filepickerg.obj \
|
||||
@@ -4547,6 +4552,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
||||
$(OBJS)\coredll_appprogress.obj \
|
||||
$(OBJS)\coredll_taskbarbutton.obj \
|
||||
$(OBJS)\coredll_power.obj \
|
||||
$(OBJS)\coredll_taskdlg.obj \
|
||||
$(OBJS)\coredll_generic_accel.obj \
|
||||
$(OBJS)\coredll_clrpickerg.obj \
|
||||
$(OBJS)\coredll_collpaneg.obj \
|
||||
@@ -4895,6 +4901,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
||||
$(OBJS)\corelib_appprogress.obj \
|
||||
$(OBJS)\corelib_taskbarbutton.obj \
|
||||
$(OBJS)\corelib_power.obj \
|
||||
$(OBJS)\corelib_taskdlg.obj \
|
||||
$(OBJS)\corelib_clrpickerg.obj \
|
||||
$(OBJS)\corelib_collpaneg.obj \
|
||||
$(OBJS)\corelib_filepickerg.obj \
|
||||
@@ -5246,6 +5253,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
||||
$(OBJS)\corelib_appprogress.obj \
|
||||
$(OBJS)\corelib_taskbarbutton.obj \
|
||||
$(OBJS)\corelib_power.obj \
|
||||
$(OBJS)\corelib_taskdlg.obj \
|
||||
$(OBJS)\corelib_generic_accel.obj \
|
||||
$(OBJS)\corelib_clrpickerg.obj \
|
||||
$(OBJS)\corelib_collpaneg.obj \
|
||||
@@ -9799,6 +9807,11 @@ $(OBJS)\monodll_power.obj: ..\..\src\msw\power.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\power.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\monodll_taskdlg.obj: ..\..\src\msw\taskdlg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\taskdlg.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\monodll_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\clrpickerg.cpp
|
||||
@@ -12427,6 +12440,11 @@ $(OBJS)\monolib_power.obj: ..\..\src\msw\power.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\power.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\monolib_taskdlg.obj: ..\..\src\msw\taskdlg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\taskdlg.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\monolib_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\clrpickerg.cpp
|
||||
@@ -14995,6 +15013,11 @@ $(OBJS)\coredll_power.obj: ..\..\src\msw\power.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\power.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\coredll_taskdlg.obj: ..\..\src\msw\taskdlg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\taskdlg.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\coredll_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\generic\clrpickerg.cpp
|
||||
@@ -16780,6 +16803,11 @@ $(OBJS)\corelib_power.obj: ..\..\src\msw\power.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\power.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\corelib_taskdlg.obj: ..\..\src\msw\taskdlg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\taskdlg.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\corelib_clrpickerg.obj: ..\..\src\generic\clrpickerg.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\generic\clrpickerg.cpp
|
||||
|
||||
@@ -1706,6 +1706,7 @@
|
||||
<ClCompile Include="..\..\src\common\curbndl.cpp" />
|
||||
<ClCompile Include="..\..\src\common\imagwebp.cpp" />
|
||||
<ClCompile Include="..\..\src\common\webpdecoder.cpp" />
|
||||
<ClCompile Include="..\..\src\msw\taskdlg.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\src\msw\version.rc">
|
||||
|
||||
@@ -1044,6 +1044,9 @@
|
||||
<ClCompile Include="..\..\src\msw\taskbarbutton.cpp">
|
||||
<Filter>MSW Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\msw\taskdlg.cpp">
|
||||
<Filter>MSW Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\msw\textctrl.cpp">
|
||||
<Filter>MSW Sources</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@@ -195,6 +195,23 @@ struct WinStruct : public T
|
||||
}
|
||||
};
|
||||
|
||||
// Life wouldn't be fun if Windows didn't call the size member differently in
|
||||
// different structs, so define the equivalent of the above for the ones where
|
||||
// it's called dwSize.
|
||||
//
|
||||
// When we can require C++17 or preferably C++20 we could merge this with
|
||||
// WinStruct by detecting the presence of cbSize/dwSize member using SFINAE,
|
||||
// but for now just define it separately to keep things simple.
|
||||
template <class T>
|
||||
struct WinStructWordSize : public T
|
||||
{
|
||||
WinStructWordSize()
|
||||
{
|
||||
wxZeroMemory(*this);
|
||||
|
||||
this->dwSize = sizeof(T);
|
||||
}
|
||||
};
|
||||
|
||||
// Macros for converting wxString to the type expected by API functions.
|
||||
//
|
||||
@@ -313,6 +330,12 @@ extern HICON wxBitmapToHICON(const wxBitmap& bmp);
|
||||
extern
|
||||
HCURSOR wxBitmapToHCURSOR(const wxBitmap& bmp, int hotSpotX, int hotSpotY);
|
||||
|
||||
// Return DPI for the given window.
|
||||
//
|
||||
// Implemented in src/msw/window.cpp.
|
||||
wxSize wxGetWindowDPI(HWND hwnd);
|
||||
|
||||
// Also implemented in src/msw/window.cpp.
|
||||
extern int wxGetSystemMetrics(int nIndex, const wxWindow* win);
|
||||
|
||||
extern bool wxSystemParametersInfo(UINT uiAction, UINT uiParam,
|
||||
@@ -1165,6 +1188,21 @@ inline wxLayoutDirection wxGetEditLayoutDirection(WXHWND hWnd)
|
||||
: wxLayout_LeftToRight;
|
||||
}
|
||||
|
||||
// Check if WM_SETTINGCHANGE notifies about the system colours change.
|
||||
inline bool wxIsSystemColourChange(LPARAM lParam)
|
||||
{
|
||||
// Note that "ImmersiveColorSet" is set both when switching between
|
||||
// light and dark themes and also when changing high contrast mode,
|
||||
// for which an additional message with "WindowsThemeElement" is
|
||||
// also sent, but we don't need to check for it as handling this
|
||||
// one is enough
|
||||
if ( !lParam )
|
||||
return false;
|
||||
|
||||
auto* const what = reinterpret_cast<const TCHAR*>(lParam);
|
||||
return wxStrcmp(what, wxT("ImmersiveColorSet")) == 0;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// functions mapping HWND to wxWindow
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@@ -31,6 +31,11 @@ bool HasChanged();
|
||||
// Enable or disable dark mode for the given TLW if appropriate.
|
||||
void ConfigureTLW(HWND hwnd);
|
||||
|
||||
// Helper function: call SetWindowTheme() and log a debug error if it fails.
|
||||
void SetTheme(HWND hwnd,
|
||||
const wchar_t* themeName,
|
||||
const wchar_t* themeId = nullptr);
|
||||
|
||||
// Set dark theme for the given (child) window if appropriate.
|
||||
//
|
||||
// Optional theme name and ID can be specified if something other than the
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/msw/private/taskdlg.h
|
||||
// Purpose: Dark mode support for native TaskDialog.
|
||||
// Author: Mohmed Abdel-Fattah (memoarfaa)
|
||||
// Created: 2026-06-07
|
||||
// Copyright: (c) 2026 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_MSW_PRIVATE_TASKDLG_H_
|
||||
#define _WX_MSW_PRIVATE_TASKDLG_H_
|
||||
|
||||
#include "wx/msw/wrapcctl.h"
|
||||
|
||||
namespace wxMSWDarkMode
|
||||
{
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// TaskDialog dark mode helpers
|
||||
// ----------------------------------------------------------------------------
|
||||
//
|
||||
// These two functions bracket the lifetime of dark-mode theming for any
|
||||
// TaskDialog-based dialog (wxMessageDialog, wxRichMessageDialog,
|
||||
// wxProgressDialog, wxAboutBox).
|
||||
//
|
||||
// Typical usage inside a PFTASKDIALOGCALLBACK:
|
||||
//
|
||||
// case TDN_CREATED:
|
||||
// wxMSWDarkMode::ApplyToTaskDialog(hwnd, pCfg);
|
||||
// break;
|
||||
// case TDN_DESTROYED:
|
||||
// wxMSWDarkMode::RemoveFromTaskDialog(hwnd);
|
||||
// break;
|
||||
//
|
||||
// Both functions are no-ops when IsActive() returns false, so no guard is
|
||||
// needed at the call site.
|
||||
|
||||
// Apply dark mode theming to an existing TaskDialog window.
|
||||
//
|
||||
// Must be called from TDN_CREATED (not TDN_DIALOG_CONSTRUCTED) so that the
|
||||
// complete child-window hierarchy exists and UI Automation can walk it.
|
||||
//
|
||||
// pCfg may be nullptr; when provided it enables correct icon overdraw on
|
||||
// Windows 10 where there is no native dark TaskDialog theme.
|
||||
void AllowForTaskDialog(HWND hwnd, const TASKDIALOGCONFIG* pCfg = nullptr);
|
||||
|
||||
// Remove all subclasses and free all GDI/theme resources installed by
|
||||
// ApplyToTaskDialog().
|
||||
//
|
||||
// Must be called from TDN_DESTROYED or WM_DESTROY.
|
||||
// Safe to call even if ApplyToTaskDialog() was never called for this HWND.
|
||||
void RemoveFromTaskDialog(HWND hwnd);
|
||||
|
||||
} // namespace wxMSWDarkMode
|
||||
|
||||
#endif // _WX_MSW_PRIVATE_TASKDLG_H_
|
||||
+45
-14
@@ -204,9 +204,14 @@ public:
|
||||
return NewAtStdDPI(0, classes, classesDark);
|
||||
}
|
||||
|
||||
// Default ctor, use move assignment to really initialize this object later.
|
||||
wxUxThemeHandle() = default;
|
||||
|
||||
// wxWindow pointer here must be valid and its DPI is always used.
|
||||
// If classesDark is non-nullptr and the dark mode is active, it's used
|
||||
// instead of classes.
|
||||
//
|
||||
// Prefer using factory functions above instead of this ctor for clarity.
|
||||
wxUxThemeHandle(const wxWindowMSW* win,
|
||||
const wchar_t* classes,
|
||||
const wchar_t* classesDark = nullptr);
|
||||
@@ -217,14 +222,20 @@ public:
|
||||
other.m_hTheme = 0;
|
||||
}
|
||||
|
||||
wxUxThemeHandle& operator=(wxUxThemeHandle&& other)
|
||||
{
|
||||
Free();
|
||||
m_hTheme = other.m_hTheme;
|
||||
other.m_hTheme = 0;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
operator HTHEME() const { return m_hTheme; }
|
||||
|
||||
~wxUxThemeHandle()
|
||||
{
|
||||
if ( m_hTheme )
|
||||
{
|
||||
::CloseThemeData(m_hTheme);
|
||||
}
|
||||
Free();
|
||||
}
|
||||
|
||||
// Return the colour for the given part, property and state.
|
||||
@@ -236,21 +247,34 @@ public:
|
||||
// Return the size of a theme element, either "as is" (TS_TRUE size) or as
|
||||
// it would be used for drawing (TS_DRAW size).
|
||||
//
|
||||
// For now we don't allow specifying the HDC or rectangle as they don't
|
||||
// seem to be useful.
|
||||
wxSize GetTrueSize(int part, int state = 0) const
|
||||
// For now we don't allow specifying the rectangle as it doesn't seem to be
|
||||
// useful.
|
||||
wxSize GetTrueSize(int part, int state = 0, HDC hdc = 0) const
|
||||
{
|
||||
return DoGetSize(part, state, TS_TRUE);
|
||||
return DoGetSize(hdc, part, state, TS_TRUE);
|
||||
}
|
||||
|
||||
wxSize GetDrawSize(int part, int state = 0) const
|
||||
wxSize GetDrawSize(int part, int state = 0, HDC hdc = 0) const
|
||||
{
|
||||
return DoGetSize(part, state, TS_DRAW);
|
||||
return DoGetSize(hdc, part, state, TS_DRAW);
|
||||
}
|
||||
|
||||
// Get the margins of a theme element in the output parameter.
|
||||
//
|
||||
// The output parameter is not modified if the function fails, so it can be
|
||||
// initialized with some default values before calling this function.
|
||||
bool
|
||||
GetMargins(MARGINS& margins,
|
||||
int part, int prop, int state = 0, HDC hdc = 0) const;
|
||||
|
||||
// Get the font of a theme element.
|
||||
bool GetFont(LOGFONTW& lf, HDC hdc, int part, int state = 0) const;
|
||||
|
||||
|
||||
// Draw theme background: if the caller already has a RECT, it can be
|
||||
// provided directly, otherwise wxRect is converted to it.
|
||||
void DrawBackground(HDC hdc, const RECT& rc, int part, int state = 0);
|
||||
void DrawBackground(HDC hdc, const RECT& rc, int part, int state = 0,
|
||||
const RECT* rcClip = nullptr);
|
||||
void DrawBackground(HDC hdc, const wxRect& rect, int part, int state = 0);
|
||||
|
||||
private:
|
||||
@@ -270,11 +294,18 @@ private:
|
||||
{
|
||||
}
|
||||
|
||||
wxSize DoGetSize(int part, int state, THEMESIZE ts) const;
|
||||
void Free()
|
||||
{
|
||||
if ( m_hTheme )
|
||||
{
|
||||
::CloseThemeData(m_hTheme);
|
||||
}
|
||||
}
|
||||
|
||||
wxSize DoGetSize(HDC hdc, int part, int state, THEMESIZE ts) const;
|
||||
|
||||
|
||||
// This is almost, but not quite, const: it's only reset in move ctor.
|
||||
HTHEME m_hTheme;
|
||||
HTHEME m_hTheme = 0;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxUxThemeHandle);
|
||||
};
|
||||
|
||||
@@ -1433,19 +1433,11 @@ public:
|
||||
|
||||
Known limitations of dark mode support include:
|
||||
|
||||
- Anything based on `TaskDialog()` Win32 API doesn't support dark mode:
|
||||
wxMessageBox(), wxMessageDialog, wxRichMessageDialog, wxProgressDialog
|
||||
and simple (i.e., without hyperlink or licence) wxAboutBox(). Consider
|
||||
using generic versions (e.g. wxGenericMessageDialog or wxGenericProgressDialog)
|
||||
if dark mode support is more important than using the native dialog.
|
||||
- The following dialogs wrapping common windows dialogs don't support
|
||||
dark mode: wxColourDialog, wxFindReplaceDialog, wxFontDialog,
|
||||
wxPageSetupDialog, wxPrintDialog.
|
||||
- wxTimePickerCtrl, wxDatePickerCtrl and wxCalendarCtrl don't support dark mode
|
||||
and use the same (light) background as by default in it.
|
||||
- Toolbar items for which wxToolBar::SetDropdownMenu() was called
|
||||
don't draw the menu drop-down correctly, making it almost
|
||||
invisible.
|
||||
|
||||
@param flags Can include @c wxApp::DarkMode_Always to force enabling
|
||||
dark mode for the application, even if the system doesn't use the
|
||||
|
||||
+12
-8
@@ -492,6 +492,16 @@ void ConfigureTLW(HWND hwnd)
|
||||
wxMSWImpl::AllowDarkModeForWindow(hwnd, true);
|
||||
}
|
||||
|
||||
void SetTheme(HWND hwnd, const wchar_t* themeName, const wchar_t* themeId)
|
||||
{
|
||||
HRESULT hr = ::SetWindowTheme(hwnd, themeName, themeId);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(wxString::Format("SetWindowTheme(%p, %s, %s)",
|
||||
hwnd, themeName, themeId), hr);
|
||||
}
|
||||
}
|
||||
|
||||
void AllowForWindow(HWND hwnd, const wchar_t* themeName, const wchar_t* themeId)
|
||||
{
|
||||
if ( wxMSWImpl::AllowDarkModeForWindow(hwnd, true) )
|
||||
@@ -499,12 +509,7 @@ void AllowForWindow(HWND hwnd, const wchar_t* themeName, const wchar_t* themeId)
|
||||
|
||||
if ( themeName || themeId )
|
||||
{
|
||||
HRESULT hr = ::SetWindowTheme(hwnd, themeName, themeId);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(wxString::Format("SetWindowTheme(%p, %s, %s)",
|
||||
hwnd, themeName, themeId), hr);
|
||||
}
|
||||
SetTheme(hwnd, themeName, themeId);
|
||||
}
|
||||
|
||||
// Some native controls need this message to switch themes, such as
|
||||
@@ -769,8 +774,7 @@ HandleMenuMessage(WXLRESULT* result,
|
||||
// We have to specify the text colour explicitly as by default
|
||||
// black would be used, making the menu label unreadable on the
|
||||
// (almost) black background.
|
||||
DTTOPTS textOpts;
|
||||
textOpts.dwSize = sizeof(textOpts);
|
||||
WinStructWordSize<DTTOPTS> textOpts;
|
||||
textOpts.dwFlags = DTT_TEXTCOLOR;
|
||||
textOpts.crText = wxColourToRGB(GetMenuColour(colText));
|
||||
|
||||
|
||||
@@ -51,8 +51,7 @@ bool wxMSWDateControls::CheckInitialization()
|
||||
// it's enough to give the error only once
|
||||
s_initResult = false;
|
||||
|
||||
INITCOMMONCONTROLSEX icex;
|
||||
icex.dwSize = sizeof(icex);
|
||||
WinStructWordSize<INITCOMMONCONTROLSEX> icex;
|
||||
icex.dwICC = ICC_DATE_CLASSES;
|
||||
|
||||
// see comment in wxApp::GetComCtl32Version() explaining the
|
||||
|
||||
+5
-10
@@ -266,9 +266,8 @@ bool wxJoystick::GetButtonState(unsigned id) const
|
||||
int wxJoystick::GetPOVPosition() const
|
||||
{
|
||||
#ifndef NO_JOYGETPOSEX
|
||||
JOYINFOEX joyInfo;
|
||||
WinStructWordSize<JOYINFOEX> joyInfo;
|
||||
joyInfo.dwFlags = JOY_RETURNPOV;
|
||||
joyInfo.dwSize = sizeof(joyInfo);
|
||||
MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
|
||||
if (res == JOYERR_NOERROR )
|
||||
{
|
||||
@@ -288,9 +287,8 @@ int wxJoystick::GetPOVPosition() const
|
||||
int wxJoystick::GetPOVCTSPosition() const
|
||||
{
|
||||
#ifndef NO_JOYGETPOSEX
|
||||
JOYINFOEX joyInfo;
|
||||
WinStructWordSize<JOYINFOEX> joyInfo;
|
||||
joyInfo.dwFlags = JOY_RETURNPOVCTS;
|
||||
joyInfo.dwSize = sizeof(joyInfo);
|
||||
MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
|
||||
if (res == JOYERR_NOERROR )
|
||||
{
|
||||
@@ -306,9 +304,8 @@ int wxJoystick::GetPOVCTSPosition() const
|
||||
int wxJoystick::GetRudderPosition() const
|
||||
{
|
||||
#ifndef NO_JOYGETPOSEX
|
||||
JOYINFOEX joyInfo;
|
||||
WinStructWordSize<JOYINFOEX> joyInfo;
|
||||
joyInfo.dwFlags = JOY_RETURNR;
|
||||
joyInfo.dwSize = sizeof(joyInfo);
|
||||
MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
|
||||
if (res == JOYERR_NOERROR )
|
||||
{
|
||||
@@ -324,9 +321,8 @@ int wxJoystick::GetRudderPosition() const
|
||||
int wxJoystick::GetUPosition() const
|
||||
{
|
||||
#ifndef NO_JOYGETPOSEX
|
||||
JOYINFOEX joyInfo;
|
||||
WinStructWordSize<JOYINFOEX> joyInfo;
|
||||
joyInfo.dwFlags = JOY_RETURNU;
|
||||
joyInfo.dwSize = sizeof(joyInfo);
|
||||
MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
|
||||
if (res == JOYERR_NOERROR )
|
||||
{
|
||||
@@ -342,9 +338,8 @@ int wxJoystick::GetUPosition() const
|
||||
int wxJoystick::GetVPosition() const
|
||||
{
|
||||
#ifndef NO_JOYGETPOSEX
|
||||
JOYINFOEX joyInfo;
|
||||
WinStructWordSize<JOYINFOEX> joyInfo;
|
||||
joyInfo.dwFlags = JOY_RETURNV;
|
||||
joyInfo.dwSize = sizeof(joyInfo);
|
||||
MMRESULT res = joyGetPosEx(m_joystick, & joyInfo);
|
||||
if (res == JOYERR_NOERROR )
|
||||
{
|
||||
|
||||
+27
-3
@@ -27,6 +27,7 @@
|
||||
#include "wx/msw/private/darkmode.h"
|
||||
#include "wx/msw/private/metrics.h"
|
||||
#include "wx/msw/private/msgdlg.h"
|
||||
#include "wx/msw/private/taskdlg.h"
|
||||
#include "wx/modalhook.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/textbuf.h"
|
||||
@@ -588,12 +589,34 @@ namespace
|
||||
{
|
||||
|
||||
HRESULT CALLBACK
|
||||
wxTaskDialogCallback(HWND hwnd, UINT msg, WPARAM, LPARAM, LONG_PTR)
|
||||
wxTaskDialogCallback(HWND hwnd,
|
||||
UINT msg,
|
||||
WPARAM wParam,
|
||||
LPARAM WXUNUSED(lParam),
|
||||
LONG_PTR refData)
|
||||
{
|
||||
const auto* const
|
||||
config = reinterpret_cast<const TASKDIALOGCONFIG*>(refData);
|
||||
|
||||
switch ( msg )
|
||||
{
|
||||
case TDN_DIALOG_CONSTRUCTED:
|
||||
wxMSWDarkMode::ConfigureTLW(hwnd);
|
||||
case TDN_CREATED:
|
||||
// The dialog is fully constructed now, so we can enable dark mode
|
||||
// for it if necessary (doing it on TDN_DIALOG_CONSTRUCTED wouldn't
|
||||
// work because all dialog elements wouldn't be constructed yet).
|
||||
wxMSWDarkMode::AllowForTaskDialog(hwnd, config);
|
||||
break;
|
||||
|
||||
case TDN_EXPANDO_BUTTON_CLICKED:
|
||||
// Store the expanded state as a window property so the subclassed
|
||||
// TaskPage panel can read it during WM_PAINT without a UIA call.
|
||||
SetProp(hwnd, L"IsExpanded",
|
||||
reinterpret_cast<HANDLE>(static_cast<ULONG_PTR>(wParam)));
|
||||
break;
|
||||
|
||||
case TDN_DESTROYED:
|
||||
// Clean up all resources allocated by AllowForTaskDialog().
|
||||
wxMSWDarkMode::RemoveFromTaskDialog(hwnd);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -757,6 +780,7 @@ void wxMSWTaskDialogConfig::MSWCommonTaskDialogInit(TASKDIALOGCONFIG &tdc)
|
||||
}
|
||||
|
||||
tdc.pfCallback = wxTaskDialogCallback;
|
||||
tdc.lpCallbackData = (LONG_PTR) &tdc;
|
||||
}
|
||||
|
||||
void wxMSWTaskDialogConfig::AddTaskDialogButton(TASKDIALOGCONFIG &tdc,
|
||||
|
||||
+20
-1
@@ -30,8 +30,10 @@
|
||||
#include "wx/msw/private.h"
|
||||
#endif
|
||||
|
||||
#include "wx/msw/private/msgdlg.h"
|
||||
#include "wx/evtloop.h"
|
||||
#include "wx/msw/private/darkmode.h"
|
||||
#include "wx/msw/private/msgdlg.h"
|
||||
#include "wx/msw/private/taskdlg.h"
|
||||
|
||||
using namespace wxMSWMessageDialog;
|
||||
|
||||
@@ -1144,6 +1146,11 @@ wxProgressDialogTaskRunner::TaskDialogCallbackProc
|
||||
switch ( uNotification )
|
||||
{
|
||||
case TDN_CREATED:
|
||||
// The dialog is fully constructed now, so we can enable dark mode
|
||||
// for it if necessary (doing it on TDN_DIALOG_CONSTRUCTED wouldn't
|
||||
// work because all dialog elements wouldn't be constructed yet).
|
||||
wxMSWDarkMode::AllowForTaskDialog(hwnd);
|
||||
|
||||
// Let the main thread know that the dialog can be used.
|
||||
sharedData->m_status = wxProgressDialogStatus::Initialized;
|
||||
|
||||
@@ -1166,6 +1173,18 @@ wxProgressDialogTaskRunner::TaskDialogCallbackProc
|
||||
EnableCloseButtons(hwnd, false);
|
||||
break;
|
||||
|
||||
case TDN_EXPANDO_BUTTON_CLICKED:
|
||||
// Store the expanded state as a window property so the subclassed
|
||||
// TaskPage panel can read it during WM_PAINT without a UIA call.
|
||||
SetProp(hwnd, L"IsExpanded",
|
||||
reinterpret_cast<HANDLE>(static_cast<ULONG_PTR>(wParam)));
|
||||
break;
|
||||
|
||||
case TDN_DESTROYED:
|
||||
// Clean up all resources allocated by AllowForTaskDialog().
|
||||
wxMSWDarkMode::RemoveFromTaskDialog(hwnd);
|
||||
break;
|
||||
|
||||
case TDN_BUTTON_CLICKED:
|
||||
switch ( wParam )
|
||||
{
|
||||
|
||||
@@ -956,8 +956,7 @@ void wxRendererXP::DrawItemText(wxWindow* win,
|
||||
{
|
||||
RECT rc = ConvertToRECT(dc, rect);
|
||||
|
||||
DTTOPTS textOpts;
|
||||
textOpts.dwSize = sizeof(textOpts);
|
||||
WinStructWordSize<DTTOPTS> textOpts;
|
||||
textOpts.dwFlags = DTT_STATEID;
|
||||
textOpts.iStateId = itemState;
|
||||
|
||||
|
||||
+1
-9
@@ -599,15 +599,7 @@ void wxStaticBox::PaintForeground(wxDC& dc, const RECT&)
|
||||
if ( hTheme )
|
||||
{
|
||||
LOGFONTW themeFont;
|
||||
if ( ::GetThemeFont
|
||||
(
|
||||
hTheme,
|
||||
hdc,
|
||||
BP_GROUPBOX,
|
||||
GBS_NORMAL,
|
||||
TMT_FONT,
|
||||
&themeFont
|
||||
) == S_OK )
|
||||
if ( hTheme.GetFont(themeFont, hdc, BP_GROUPBOX, GBS_NORMAL) )
|
||||
{
|
||||
font.Init(themeFont);
|
||||
if ( font )
|
||||
|
||||
+1344
File diff suppressed because it is too large
Load Diff
+1
-2
@@ -725,8 +725,7 @@ void wxToolBar::MSWSetDarkOrLightMode(SetMode setmode)
|
||||
|
||||
// Update the separator above the toolbar which is drawn partially in
|
||||
// white by default and so looks very ugly in dark mode.
|
||||
COLORSCHEME colScheme;
|
||||
colScheme.dwSize = sizeof(COLORSCHEME);
|
||||
WinStructWordSize<COLORSCHEME> colScheme;
|
||||
colScheme.clrBtnHighlight =
|
||||
colScheme.clrBtnShadow = wxSysColourToRGB(wxSYS_COLOUR_WINDOW);
|
||||
::SendMessage(GetHwnd(), TB_SETCOLORSCHEME, 0, (LPARAM)&colScheme);
|
||||
|
||||
+1
-3
@@ -818,9 +818,7 @@ int wxKillAllChildren(long pid, wxSignal sig, wxKillError *krc, int flags)
|
||||
}
|
||||
|
||||
//Fill in the size of the structure before using it.
|
||||
PROCESSENTRY32 pe;
|
||||
wxZeroMemory(pe);
|
||||
pe.dwSize = sizeof(PROCESSENTRY32);
|
||||
WinStructWordSize<PROCESSENTRY32> pe;
|
||||
|
||||
// Walk the snapshot of the processes, and for each process,
|
||||
// kill it if its parent is pid.
|
||||
|
||||
+47
-5
@@ -110,10 +110,11 @@ wxColour wxUxThemeHandle::GetColour(int part, int prop, int state) const
|
||||
return wxRGBToColour(col);
|
||||
}
|
||||
|
||||
wxSize wxUxThemeHandle::DoGetSize(int part, int state, THEMESIZE ts) const
|
||||
wxSize
|
||||
wxUxThemeHandle::DoGetSize(HDC hdc, int part, int state, THEMESIZE ts) const
|
||||
{
|
||||
SIZE size;
|
||||
HRESULT hr = ::GetThemePartSize(m_hTheme, nullptr, part, state, nullptr, ts,
|
||||
HRESULT hr = ::GetThemePartSize(m_hTheme, hdc, part, state, nullptr, ts,
|
||||
&size);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
@@ -127,10 +128,51 @@ wxSize wxUxThemeHandle::DoGetSize(int part, int state, THEMESIZE ts) const
|
||||
return wxSize{size.cx, size.cy};
|
||||
}
|
||||
|
||||
void
|
||||
wxUxThemeHandle::DrawBackground(HDC hdc, const RECT& rc, int part, int state)
|
||||
bool
|
||||
wxUxThemeHandle::GetMargins(MARGINS& margins,
|
||||
int part,
|
||||
int prop,
|
||||
int state,
|
||||
HDC hdc) const
|
||||
{
|
||||
HRESULT hr = ::DrawThemeBackground(m_hTheme, hdc, part, state, &rc, nullptr);
|
||||
HRESULT hr = ::GetThemeMargins(m_hTheme, hdc, part, state, prop, nullptr,
|
||||
&margins);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(
|
||||
wxString::Format("GetThemeMargins(%i, %i, %i)", part, state, prop),
|
||||
hr
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
wxUxThemeHandle::GetFont(LOGFONTW& lf, HDC hdc, int part, int state) const
|
||||
{
|
||||
HRESULT hr = ::GetThemeFont(m_hTheme, hdc, part, state, TMT_FONT, &lf);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(
|
||||
wxString::Format("GetThemeFont(%i, %i)", part, state),
|
||||
hr
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
wxUxThemeHandle::DrawBackground(HDC hdc,
|
||||
const RECT& rc,
|
||||
int part,
|
||||
int state,
|
||||
const RECT* rcClip)
|
||||
{
|
||||
HRESULT hr = ::DrawThemeBackground(m_hTheme, hdc, part, state, &rc, rcClip);
|
||||
if ( FAILED(hr) )
|
||||
{
|
||||
wxLogApiError(
|
||||
|
||||
+3
-13
@@ -3555,12 +3555,7 @@ wxWindowMSW::MSWHandleMessage(WXLRESULT *result,
|
||||
case WM_SETTINGCHANGE:
|
||||
// Check for the special case of the message which notifies about
|
||||
// the colours change.
|
||||
// Note that "ImmersiveColorSet" is set both when switching between
|
||||
// light and dark themes and also when changing high contrast mode,
|
||||
// for which an additional message with "WindowsThemeElement" is
|
||||
// also sent, but we don't need to check for it as handling this
|
||||
// one is enough
|
||||
if ( lParam && wxStrcmp((TCHAR*)lParam, wxT("ImmersiveColorSet")) == 0 )
|
||||
if ( wxIsSystemColourChange(lParam) )
|
||||
processed = HandleSysColorChange();
|
||||
else
|
||||
processed = HandleSettingChange(wParam, lParam);
|
||||
@@ -4839,10 +4834,7 @@ wxWindowMSW::MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *itemStruct)
|
||||
// DPI
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
static wxSize GetWindowDPI(HWND hwnd)
|
||||
wxSize wxGetWindowDPI(HWND hwnd)
|
||||
{
|
||||
typedef UINT (WINAPI *GetDpiForWindow_t)(HWND hwnd);
|
||||
static GetDpiForWindow_t s_pfnGetDpiForWindow = nullptr;
|
||||
@@ -4864,8 +4856,6 @@ static wxSize GetWindowDPI(HWND hwnd)
|
||||
return wxSize();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*extern*/
|
||||
int wxGetSystemMetrics(int nIndex, const wxWindow* window)
|
||||
{
|
||||
@@ -4956,7 +4946,7 @@ wxSize wxWindowMSW::GetDPI() const
|
||||
}
|
||||
}
|
||||
|
||||
wxSize dpi = GetWindowDPI(hwnd);
|
||||
wxSize dpi = wxGetWindowDPI(hwnd);
|
||||
|
||||
if ( !dpi.x || !dpi.y )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user