Merge branch 'msw-overlay'
Add native wxOverlay implementation using layered windows to wxMSW. See #23261.
This commit is contained in:
commit
f932046a5c
11 changed files with 289 additions and 17 deletions
36
Makefile.in
36
Makefile.in
|
|
@ -5037,7 +5037,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS = \
|
|||
monodll_uuid.o \
|
||||
monodll_msw_evtloop.o \
|
||||
monodll_access.o \
|
||||
monodll_msw_bmpbndl.o
|
||||
monodll_msw_bmpbndl.o \
|
||||
monodll_msw_overlay.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)
|
||||
|
|
@ -5765,7 +5766,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1 = \
|
|||
monodll_uuid.o \
|
||||
monodll_msw_evtloop.o \
|
||||
monodll_access.o \
|
||||
monodll_msw_bmpbndl.o
|
||||
monodll_msw_bmpbndl.o \
|
||||
monodll_msw_overlay.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)
|
||||
|
|
@ -6795,7 +6797,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2 = \
|
|||
monolib_uuid.o \
|
||||
monolib_msw_evtloop.o \
|
||||
monolib_access.o \
|
||||
monolib_msw_bmpbndl.o
|
||||
monolib_msw_bmpbndl.o \
|
||||
monolib_msw_overlay.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)
|
||||
|
|
@ -7523,7 +7526,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3 = \
|
|||
monolib_uuid.o \
|
||||
monolib_msw_evtloop.o \
|
||||
monolib_access.o \
|
||||
monolib_msw_bmpbndl.o
|
||||
monolib_msw_bmpbndl.o \
|
||||
monolib_msw_overlay.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)
|
||||
|
|
@ -8705,7 +8709,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4 = \
|
|||
coredll_uuid.o \
|
||||
coredll_msw_evtloop.o \
|
||||
coredll_access.o \
|
||||
coredll_msw_bmpbndl.o
|
||||
coredll_msw_bmpbndl.o \
|
||||
coredll_msw_overlay.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)
|
||||
|
|
@ -9433,7 +9438,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5 = \
|
|||
coredll_uuid.o \
|
||||
coredll_msw_evtloop.o \
|
||||
coredll_access.o \
|
||||
coredll_msw_bmpbndl.o
|
||||
coredll_msw_bmpbndl.o \
|
||||
coredll_msw_overlay.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)
|
||||
|
|
@ -10191,7 +10197,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6 = \
|
|||
corelib_uuid.o \
|
||||
corelib_msw_evtloop.o \
|
||||
corelib_access.o \
|
||||
corelib_msw_bmpbndl.o
|
||||
corelib_msw_bmpbndl.o \
|
||||
corelib_msw_overlay.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)
|
||||
|
|
@ -10919,7 +10926,8 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7 = \
|
|||
corelib_uuid.o \
|
||||
corelib_msw_evtloop.o \
|
||||
corelib_access.o \
|
||||
corelib_msw_bmpbndl.o
|
||||
corelib_msw_bmpbndl.o \
|
||||
corelib_msw_overlay.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)
|
||||
|
|
@ -17485,6 +17493,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
|
|||
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_bmpbndl.o: $(srcdir)/src/msw/bmpbndl.cpp $(MONODLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/bmpbndl.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_overlay.o: $(srcdir)/src/msw/overlay.cpp $(MONODLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/overlay.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
|
||||
|
||||
|
|
@ -22249,6 +22260,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
|
|||
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_bmpbndl.o: $(srcdir)/src/msw/bmpbndl.cpp $(MONOLIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/bmpbndl.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_overlay.o: $(srcdir)/src/msw/overlay.cpp $(MONOLIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/overlay.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
|
||||
|
||||
|
|
@ -27112,6 +27126,9 @@ coredll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(COREDLL_ODEP)
|
|||
@COND_TOOLKIT_MSW_USE_GUI_1@coredll_msw_bmpbndl.o: $(srcdir)/src/msw/bmpbndl.cpp $(COREDLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/bmpbndl.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@coredll_msw_overlay.o: $(srcdir)/src/msw/overlay.cpp $(COREDLL_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/overlay.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
|
||||
|
||||
|
|
@ -30847,6 +30864,9 @@ corelib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(CORELIB_ODEP)
|
|||
@COND_TOOLKIT_MSW_USE_GUI_1@corelib_msw_bmpbndl.o: $(srcdir)/src/msw/bmpbndl.cpp $(CORELIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/bmpbndl.cpp
|
||||
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@corelib_msw_overlay.o: $(srcdir)/src/msw/overlay.cpp $(CORELIB_ODEP)
|
||||
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/overlay.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
|
||||
|
||||
|
|
|
|||
|
|
@ -1764,6 +1764,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||
src/msw/evtloop.cpp
|
||||
src/msw/ole/access.cpp
|
||||
src/msw/bmpbndl.cpp
|
||||
src/msw/overlay.cpp
|
||||
</set>
|
||||
<set var="MSW_LOWLEVEL_HDR" hints="files">
|
||||
wx/msw/nonownedwnd.h
|
||||
|
|
|
|||
|
|
@ -1640,6 +1640,7 @@ set(MSW_LOWLEVEL_SRC
|
|||
src/msw/evtloop.cpp
|
||||
src/msw/ole/access.cpp
|
||||
src/msw/bmpbndl.cpp
|
||||
src/msw/overlay.cpp
|
||||
)
|
||||
|
||||
set(MSW_LOWLEVEL_HDR
|
||||
|
|
|
|||
|
|
@ -1626,6 +1626,7 @@ MSW_LOWLEVEL_SRC =
|
|||
src/msw/ole/oleutils.cpp
|
||||
src/msw/ole/safearray.cpp
|
||||
src/msw/ole/uuid.cpp
|
||||
src/msw/overlay.cpp
|
||||
src/msw/palette.cpp
|
||||
src/msw/pen.cpp
|
||||
src/msw/popupwin.cpp
|
||||
|
|
|
|||
|
|
@ -1939,6 +1939,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_evtloop.o \
|
||||
$(OBJS)\monodll_access.o \
|
||||
$(OBJS)\monodll_msw_bmpbndl.o \
|
||||
$(OBJS)\monodll_overlay.o \
|
||||
$(OBJS)\monodll_clrpickerg.o \
|
||||
$(OBJS)\monodll_collpaneg.o \
|
||||
$(OBJS)\monodll_filepickerg.o \
|
||||
|
|
@ -2287,6 +2288,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_evtloop.o \
|
||||
$(OBJS)\monodll_access.o \
|
||||
$(OBJS)\monodll_msw_bmpbndl.o \
|
||||
$(OBJS)\monodll_overlay.o \
|
||||
$(OBJS)\monodll_generic_accel.o \
|
||||
$(OBJS)\monodll_clrpickerg.o \
|
||||
$(OBJS)\monodll_collpaneg.o \
|
||||
|
|
@ -2791,6 +2793,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_evtloop.o \
|
||||
$(OBJS)\monolib_access.o \
|
||||
$(OBJS)\monolib_msw_bmpbndl.o \
|
||||
$(OBJS)\monolib_overlay.o \
|
||||
$(OBJS)\monolib_clrpickerg.o \
|
||||
$(OBJS)\monolib_collpaneg.o \
|
||||
$(OBJS)\monolib_filepickerg.o \
|
||||
|
|
@ -3139,6 +3142,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_evtloop.o \
|
||||
$(OBJS)\monolib_access.o \
|
||||
$(OBJS)\monolib_msw_bmpbndl.o \
|
||||
$(OBJS)\monolib_overlay.o \
|
||||
$(OBJS)\monolib_generic_accel.o \
|
||||
$(OBJS)\monolib_clrpickerg.o \
|
||||
$(OBJS)\monolib_collpaneg.o \
|
||||
|
|
@ -3522,6 +3526,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||
$(OBJS)\coredll_evtloop.o \
|
||||
$(OBJS)\coredll_access.o \
|
||||
$(OBJS)\coredll_msw_bmpbndl.o \
|
||||
$(OBJS)\coredll_overlay.o \
|
||||
$(OBJS)\coredll_clrpickerg.o \
|
||||
$(OBJS)\coredll_collpaneg.o \
|
||||
$(OBJS)\coredll_filepickerg.o \
|
||||
|
|
@ -3870,6 +3875,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||
$(OBJS)\coredll_evtloop.o \
|
||||
$(OBJS)\coredll_access.o \
|
||||
$(OBJS)\coredll_msw_bmpbndl.o \
|
||||
$(OBJS)\coredll_overlay.o \
|
||||
$(OBJS)\coredll_generic_accel.o \
|
||||
$(OBJS)\coredll_clrpickerg.o \
|
||||
$(OBJS)\coredll_collpaneg.o \
|
||||
|
|
@ -4210,6 +4216,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||
$(OBJS)\corelib_evtloop.o \
|
||||
$(OBJS)\corelib_access.o \
|
||||
$(OBJS)\corelib_msw_bmpbndl.o \
|
||||
$(OBJS)\corelib_overlay.o \
|
||||
$(OBJS)\corelib_clrpickerg.o \
|
||||
$(OBJS)\corelib_collpaneg.o \
|
||||
$(OBJS)\corelib_filepickerg.o \
|
||||
|
|
@ -4558,6 +4565,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||
$(OBJS)\corelib_evtloop.o \
|
||||
$(OBJS)\corelib_access.o \
|
||||
$(OBJS)\corelib_msw_bmpbndl.o \
|
||||
$(OBJS)\corelib_overlay.o \
|
||||
$(OBJS)\corelib_generic_accel.o \
|
||||
$(OBJS)\corelib_clrpickerg.o \
|
||||
$(OBJS)\corelib_collpaneg.o \
|
||||
|
|
@ -8500,6 +8508,11 @@ $(OBJS)\monodll_msw_bmpbndl.o: ../../src/msw/bmpbndl.cpp
|
|||
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\monodll_overlay.o: ../../src/msw/overlay.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) $<
|
||||
|
|
@ -11087,6 +11100,11 @@ $(OBJS)\monolib_msw_bmpbndl.o: ../../src/msw/bmpbndl.cpp
|
|||
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\monolib_overlay.o: ../../src/msw/overlay.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) $<
|
||||
|
|
@ -13635,6 +13653,11 @@ $(OBJS)\coredll_msw_bmpbndl.o: ../../src/msw/bmpbndl.cpp
|
|||
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\coredll_overlay.o: ../../src/msw/overlay.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) $<
|
||||
|
|
@ -15388,6 +15411,11 @@ $(OBJS)\corelib_msw_bmpbndl.o: ../../src/msw/bmpbndl.cpp
|
|||
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GUI),1)
|
||||
$(OBJS)\corelib_overlay.o: ../../src/msw/overlay.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) $<
|
||||
|
|
|
|||
|
|
@ -2272,6 +2272,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_evtloop.obj \
|
||||
$(OBJS)\monodll_access.obj \
|
||||
$(OBJS)\monodll_msw_bmpbndl.obj \
|
||||
$(OBJS)\monodll_overlay.obj \
|
||||
$(OBJS)\monodll_clrpickerg.obj \
|
||||
$(OBJS)\monodll_collpaneg.obj \
|
||||
$(OBJS)\monodll_filepickerg.obj \
|
||||
|
|
@ -2618,6 +2619,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
|
|||
$(OBJS)\monodll_evtloop.obj \
|
||||
$(OBJS)\monodll_access.obj \
|
||||
$(OBJS)\monodll_msw_bmpbndl.obj \
|
||||
$(OBJS)\monodll_overlay.obj \
|
||||
$(OBJS)\monodll_generic_accel.obj \
|
||||
$(OBJS)\monodll_clrpickerg.obj \
|
||||
$(OBJS)\monodll_collpaneg.obj \
|
||||
|
|
@ -3124,6 +3126,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_evtloop.obj \
|
||||
$(OBJS)\monolib_access.obj \
|
||||
$(OBJS)\monolib_msw_bmpbndl.obj \
|
||||
$(OBJS)\monolib_overlay.obj \
|
||||
$(OBJS)\monolib_clrpickerg.obj \
|
||||
$(OBJS)\monolib_collpaneg.obj \
|
||||
$(OBJS)\monolib_filepickerg.obj \
|
||||
|
|
@ -3470,6 +3473,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
|
|||
$(OBJS)\monolib_evtloop.obj \
|
||||
$(OBJS)\monolib_access.obj \
|
||||
$(OBJS)\monolib_msw_bmpbndl.obj \
|
||||
$(OBJS)\monolib_overlay.obj \
|
||||
$(OBJS)\monolib_generic_accel.obj \
|
||||
$(OBJS)\monolib_clrpickerg.obj \
|
||||
$(OBJS)\monolib_collpaneg.obj \
|
||||
|
|
@ -3905,6 +3909,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||
$(OBJS)\coredll_evtloop.obj \
|
||||
$(OBJS)\coredll_access.obj \
|
||||
$(OBJS)\coredll_msw_bmpbndl.obj \
|
||||
$(OBJS)\coredll_overlay.obj \
|
||||
$(OBJS)\coredll_clrpickerg.obj \
|
||||
$(OBJS)\coredll_collpaneg.obj \
|
||||
$(OBJS)\coredll_filepickerg.obj \
|
||||
|
|
@ -4251,6 +4256,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
|
|||
$(OBJS)\coredll_evtloop.obj \
|
||||
$(OBJS)\coredll_access.obj \
|
||||
$(OBJS)\coredll_msw_bmpbndl.obj \
|
||||
$(OBJS)\coredll_overlay.obj \
|
||||
$(OBJS)\coredll_generic_accel.obj \
|
||||
$(OBJS)\coredll_clrpickerg.obj \
|
||||
$(OBJS)\coredll_collpaneg.obj \
|
||||
|
|
@ -4591,6 +4597,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||
$(OBJS)\corelib_evtloop.obj \
|
||||
$(OBJS)\corelib_access.obj \
|
||||
$(OBJS)\corelib_msw_bmpbndl.obj \
|
||||
$(OBJS)\corelib_overlay.obj \
|
||||
$(OBJS)\corelib_clrpickerg.obj \
|
||||
$(OBJS)\corelib_collpaneg.obj \
|
||||
$(OBJS)\corelib_filepickerg.obj \
|
||||
|
|
@ -4937,6 +4944,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
|
|||
$(OBJS)\corelib_evtloop.obj \
|
||||
$(OBJS)\corelib_access.obj \
|
||||
$(OBJS)\corelib_msw_bmpbndl.obj \
|
||||
$(OBJS)\corelib_overlay.obj \
|
||||
$(OBJS)\corelib_generic_accel.obj \
|
||||
$(OBJS)\corelib_clrpickerg.obj \
|
||||
$(OBJS)\corelib_collpaneg.obj \
|
||||
|
|
@ -8957,6 +8965,11 @@ $(OBJS)\monodll_msw_bmpbndl.obj: ..\..\src\msw\bmpbndl.cpp
|
|||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\bmpbndl.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\monodll_overlay.obj: ..\..\src\msw\overlay.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\overlay.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
|
||||
|
|
@ -11544,6 +11557,11 @@ $(OBJS)\monolib_msw_bmpbndl.obj: ..\..\src\msw\bmpbndl.cpp
|
|||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\bmpbndl.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\monolib_overlay.obj: ..\..\src\msw\overlay.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\overlay.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
|
||||
|
|
@ -14092,6 +14110,11 @@ $(OBJS)\coredll_msw_bmpbndl.obj: ..\..\src\msw\bmpbndl.cpp
|
|||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\bmpbndl.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\coredll_overlay.obj: ..\..\src\msw\overlay.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\overlay.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
|
||||
|
|
@ -15845,6 +15868,11 @@ $(OBJS)\corelib_msw_bmpbndl.obj: ..\..\src\msw\bmpbndl.cpp
|
|||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\bmpbndl.cpp
|
||||
!endif
|
||||
|
||||
!if "$(USE_GUI)" == "1"
|
||||
$(OBJS)\corelib_overlay.obj: ..\..\src\msw\overlay.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\overlay.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
|
||||
|
|
|
|||
|
|
@ -1079,6 +1079,7 @@
|
|||
<ClCompile Include="..\..\src\common\bmpcboxcmn.cpp" />
|
||||
<ClCompile Include="..\..\src\generic\rowheightcache.cpp" />
|
||||
<ClCompile Include="..\..\src\generic\creddlgg.cpp" />
|
||||
<ClCompile Include="..\..\src\msw\overlay.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\..\src\msw\version.rc">
|
||||
|
|
|
|||
|
|
@ -942,6 +942,9 @@
|
|||
<ClCompile Include="..\..\src\msw\ole\uuid.cpp">
|
||||
<Filter>MSW Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\msw\overlay.cpp">
|
||||
<Filter>MSW Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\msw\ownerdrw.cpp">
|
||||
<Filter>MSW Sources</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#elif defined(__WXOSX__) && wxOSX_USE_COCOA
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#elif defined(__WXMSW__)
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#elif defined(__WXGTK3__)
|
||||
#define wxHAS_NATIVE_OVERLAY 1
|
||||
#define wxHAS_GENERIC_OVERLAY 1
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ public:
|
|||
void OnMouseMove(wxMouseEvent &event);
|
||||
void OnMouseDown(wxMouseEvent &event);
|
||||
void OnMouseUp(wxMouseEvent &event);
|
||||
void OnMouseCaptureLost(wxMouseCaptureLostEvent &event);
|
||||
|
||||
void ToShow(int show) { m_show = show; Refresh(); }
|
||||
int GetPage() { return m_show; }
|
||||
|
|
@ -160,6 +161,10 @@ protected:
|
|||
|
||||
void DrawRegionsHelper(wxDC& dc, wxCoord x, bool firstTime);
|
||||
|
||||
// Remove the rubber band if it's currently shown and return true or just
|
||||
// return false if we're not showing it.
|
||||
bool StopRubberBanding();
|
||||
|
||||
private:
|
||||
MyFrame *m_owner;
|
||||
|
||||
|
|
@ -503,6 +508,7 @@ wxBEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
|
|||
EVT_MOTION (MyCanvas::OnMouseMove)
|
||||
EVT_LEFT_DOWN (MyCanvas::OnMouseDown)
|
||||
EVT_LEFT_UP (MyCanvas::OnMouseUp)
|
||||
EVT_MOUSE_CAPTURE_LOST (MyCanvas::OnMouseCaptureLost)
|
||||
wxEND_EVENT_TABLE()
|
||||
|
||||
#include "smile.xpm"
|
||||
|
|
@ -2097,19 +2103,28 @@ void MyCanvas::OnMouseDown(wxMouseEvent &event)
|
|||
CaptureMouse() ;
|
||||
}
|
||||
|
||||
bool MyCanvas::StopRubberBanding()
|
||||
{
|
||||
if ( !m_rubberBand )
|
||||
return false;
|
||||
|
||||
{
|
||||
wxClientDC dc( this );
|
||||
PrepareDC( dc );
|
||||
wxDCOverlay overlaydc( m_overlay, &dc );
|
||||
overlaydc.Clear();
|
||||
}
|
||||
m_overlay.Reset();
|
||||
m_rubberBand = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void MyCanvas::OnMouseUp(wxMouseEvent &event)
|
||||
{
|
||||
if ( m_rubberBand )
|
||||
if ( StopRubberBanding() )
|
||||
{
|
||||
ReleaseMouse();
|
||||
{
|
||||
wxClientDC dc( this );
|
||||
PrepareDC( dc );
|
||||
wxDCOverlay overlaydc( m_overlay, &dc );
|
||||
overlaydc.Clear();
|
||||
}
|
||||
m_overlay.Reset();
|
||||
m_rubberBand = false;
|
||||
|
||||
wxPoint endpoint = CalcUnscrolledPosition(event.GetPosition());
|
||||
|
||||
|
|
@ -2123,6 +2138,13 @@ void MyCanvas::OnMouseUp(wxMouseEvent &event)
|
|||
}
|
||||
}
|
||||
|
||||
void MyCanvas::OnMouseCaptureLost(wxMouseCaptureLostEvent& WXUNUSED(event))
|
||||
{
|
||||
StopRubberBanding();
|
||||
|
||||
wxLogStatus(m_owner, "Mouse capture lost");
|
||||
}
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
void MyCanvas::UseGraphicRenderer(wxGraphicsRenderer* renderer)
|
||||
{
|
||||
|
|
|
|||
165
src/msw/overlay.cpp
Normal file
165
src/msw/overlay.cpp
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/msw/overlay.cpp
|
||||
// Author: Ali Kettab
|
||||
// Copyright: (c) 2022 Ali Kettab
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#include "wx/private/overlay.h"
|
||||
#include "wx/dcclient.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/msw/dc.h"
|
||||
#include "wx/msw/private.h"
|
||||
|
||||
namespace // anonymous
|
||||
{
|
||||
|
||||
wxWindow* wxCreateOverlayWindow(const wxRect& rect)
|
||||
{
|
||||
auto overlayWin = new wxWindow();
|
||||
|
||||
overlayWin->MSWCreate
|
||||
(
|
||||
overlayWin->GetMSWClassName(0),
|
||||
nullptr, // No title
|
||||
rect.GetPosition(),
|
||||
rect.GetSize(),
|
||||
WS_POPUP,
|
||||
WS_EX_LAYERED |
|
||||
WS_EX_TRANSPARENT |
|
||||
WS_EX_NOACTIVATE
|
||||
);
|
||||
|
||||
overlayWin->SetBackgroundStyle(wxBG_STYLE_PAINT);
|
||||
|
||||
if ( !::SetLayeredWindowAttributes(GetHwndOf(overlayWin), 0, 128,
|
||||
LWA_COLORKEY | LWA_ALPHA) )
|
||||
{
|
||||
wxLogLastError(wxS("SetLayeredWindowAttributes()"));
|
||||
}
|
||||
|
||||
// We intentionally don't use WS_VISIBLE when creating this window to avoid
|
||||
// stealing activation from the parent, so show it using SWP_NOACTIVATE now.
|
||||
::SetWindowPos(GetHwndOf(overlayWin), nullptr, 0, 0, 0, 0,
|
||||
SWP_NOSIZE |
|
||||
SWP_NOMOVE |
|
||||
SWP_NOREDRAW |
|
||||
SWP_NOOWNERZORDER |
|
||||
SWP_NOACTIVATE |
|
||||
SWP_SHOWWINDOW);
|
||||
|
||||
return overlayWin;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
class wxOverlayImpl : public wxOverlay::Impl
|
||||
{
|
||||
public:
|
||||
wxOverlayImpl() = default;
|
||||
~wxOverlayImpl() = default;
|
||||
|
||||
virtual bool IsNative() const override { return true; }
|
||||
virtual void Reset() override;
|
||||
virtual bool IsOk() override;
|
||||
virtual void Init(wxDC* dc, int x , int y , int width , int height) override;
|
||||
virtual void BeginDrawing(wxDC* dc) override;
|
||||
virtual void EndDrawing(wxDC* dc) override;
|
||||
virtual void Clear(wxDC* dc) override;
|
||||
|
||||
public:
|
||||
// window the overlay is associated with
|
||||
wxWindow* m_window = nullptr;
|
||||
// the overlay window itself. doesn't have to be child of any window
|
||||
// and is totally managed by this class
|
||||
wxWindow* m_overlayWindow = nullptr;
|
||||
|
||||
wxRect m_rect;
|
||||
|
||||
// Drawing on the overlay window is achieved by hijacking the existing wxDC.
|
||||
// i.e. any drawing done through wxDC should go to the offscreen bitmap m_bitmap
|
||||
// which will eventually be drawn on the overlay window.
|
||||
wxBitmap m_bitmap;
|
||||
wxMemoryDC m_memDC; // for memory dc construction only.
|
||||
WXHDC m_hdc = 0; // the original HDC
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxOverlayImpl);
|
||||
};
|
||||
|
||||
bool wxOverlayImpl::IsOk()
|
||||
{
|
||||
return m_overlayWindow != nullptr;
|
||||
}
|
||||
|
||||
void wxOverlayImpl::Init(wxDC* dc, int , int , int , int )
|
||||
{
|
||||
if ( IsOk() )
|
||||
return;
|
||||
|
||||
m_window = dc->GetWindow();
|
||||
|
||||
m_rect.SetSize(m_window->GetClientSize());
|
||||
m_rect.SetPosition(m_window->GetScreenPosition());
|
||||
|
||||
m_bitmap.CreateWithDIPSize(m_rect.GetSize(), m_window->GetDPIScaleFactor());
|
||||
|
||||
m_overlayWindow = wxCreateOverlayWindow(m_rect);
|
||||
}
|
||||
|
||||
void wxOverlayImpl::BeginDrawing(wxDC* dc)
|
||||
{
|
||||
wxCHECK_RET( IsOk(), wxS("overlay not initialized") );
|
||||
|
||||
m_memDC.SelectObject(m_bitmap);
|
||||
|
||||
auto impl = dc->GetImpl();
|
||||
auto msw_impl = static_cast<wxMSWDCImpl*>(impl);
|
||||
|
||||
m_hdc = GetHdcOf(*msw_impl); // save the original hdc
|
||||
|
||||
msw_impl->SetHDC(GetHdcOf(m_memDC));
|
||||
msw_impl->UpdateClipBox();
|
||||
}
|
||||
|
||||
void wxOverlayImpl::EndDrawing(wxDC* dc)
|
||||
{
|
||||
wxCHECK_RET( IsOk(), wxS("overlay not initialized") );
|
||||
|
||||
m_memDC.SelectObject(wxNullBitmap);
|
||||
|
||||
auto impl = dc->GetImpl();
|
||||
auto msw_impl = static_cast<wxMSWDCImpl*>(impl);
|
||||
|
||||
msw_impl->SetHDC(m_hdc); // restore the original hdc
|
||||
msw_impl->UpdateClipBox();
|
||||
|
||||
wxWindowDC winDC(m_overlayWindow);
|
||||
winDC.DrawBitmap(m_bitmap, wxPoint(0, 0));
|
||||
}
|
||||
|
||||
void wxOverlayImpl::Clear(wxDC* WXUNUSED(dc))
|
||||
{
|
||||
wxCHECK_RET( IsOk(), wxS("overlay not initialized") );
|
||||
|
||||
// Note that the colour used here is the same one that we specify as
|
||||
// LWA_COLORKEY when creating the layered window, so it is actually
|
||||
// transparent.
|
||||
m_memDC.SetBackground(*wxBLACK);
|
||||
m_memDC.Clear();
|
||||
}
|
||||
|
||||
void wxOverlayImpl::Reset()
|
||||
{
|
||||
if ( IsOk() )
|
||||
{
|
||||
m_overlayWindow->Destroy();
|
||||
m_overlayWindow = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
wxOverlay::Impl* wxOverlay::Create()
|
||||
{
|
||||
return new wxOverlayImpl;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue