diff --git a/Makefile.in b/Makefile.in
index eac11c8bd2..347fbe8970 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -3195,6 +3195,7 @@ COND_TOOLKIT_MSW_GUI_HDR = \
wx/msw/accel.h \
wx/msw/anybutton.h \
wx/msw/app.h \
+ wx/msw/appprogress.h \
wx/msw/bitmap.h \
wx/msw/bmpbuttn.h \
wx/msw/brush.h \
@@ -3639,6 +3640,7 @@ COND_TOOLKIT_WINCE_GUI_HDR = \
wx/msw/accel.h \
wx/msw/anybutton.h \
wx/msw/app.h \
+ wx/msw/appprogress.h \
wx/msw/bitmap.h \
wx/msw/bmpbuttn.h \
wx/msw/brush.h \
@@ -3893,6 +3895,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
wx/tipdlg.h \
wx/treelist.h \
wx/wizard.h \
+ wx/addremovectrl.h \
$(ADVANCED_PLATFORM_HDR) \
$(ADVANCED_PLATFORM_NATIVE_HDR)
@COND_WXUNIV_0@ADVANCED_HDR = $(COND_WXUNIV_0_ADVANCED_HDR)
@@ -3946,6 +3949,7 @@ COND_WXUNIV_1_ADVANCED_HDR = \
wx/tipdlg.h \
wx/treelist.h \
wx/wizard.h \
+ wx/addremovectrl.h \
$(ADVANCED_PLATFORM_HDR) \
wx/generic/animate.h
@COND_WXUNIV_1@ADVANCED_HDR = $(COND_WXUNIV_1_ADVANCED_HDR)
@@ -5828,8 +5832,8 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS = \
monodll_prntdlgg.o \
monodll_msw_accel.o \
monodll_msw_anybutton.o \
- monodll_artmsw.o \
monodll_appprogress.o \
+ monodll_artmsw.o \
monodll_msw_bmpbuttn.o \
monodll_msw_button.o \
monodll_msw_checkbox.o \
@@ -5986,8 +5990,8 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS = \
monodll_prntdlgg.o \
monodll_msw_accel.o \
monodll_msw_anybutton.o \
- monodll_artmsw.o \
monodll_appprogress.o \
+ monodll_artmsw.o \
monodll_msw_bmpbuttn.o \
monodll_msw_button.o \
monodll_msw_checkbox.o \
@@ -6495,6 +6499,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
monodll_tipdlg.o \
monodll_treelist.o \
monodll_wizard.o \
+ monodll_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS) \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS)
@@ -6532,6 +6537,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
monodll_tipdlg.o \
monodll_treelist.o \
monodll_wizard.o \
+ monodll_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_1) \
$(__ADVANCED_UNIV_SRC_OBJECTS)
@COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS)
@@ -8185,8 +8191,8 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_1 = \
monolib_prntdlgg.o \
monolib_msw_accel.o \
monolib_msw_anybutton.o \
- monolib_artmsw.o \
monolib_appprogress.o \
+ monolib_artmsw.o \
monolib_msw_bmpbuttn.o \
monolib_msw_button.o \
monolib_msw_checkbox.o \
@@ -8343,8 +8349,8 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_1 = \
monolib_prntdlgg.o \
monolib_msw_accel.o \
monolib_msw_anybutton.o \
- monolib_artmsw.o \
monolib_appprogress.o \
+ monolib_artmsw.o \
monolib_msw_bmpbuttn.o \
monolib_msw_button.o \
monolib_msw_checkbox.o \
@@ -8852,6 +8858,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
monolib_tipdlg.o \
monolib_treelist.o \
monolib_wizard.o \
+ monolib_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_2) \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_1)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_1 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1)
@@ -8889,6 +8896,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
monolib_tipdlg.o \
monolib_treelist.o \
monolib_wizard.o \
+ monolib_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_3) \
$(__ADVANCED_UNIV_SRC_OBJECTS_1)
@COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_1 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1)
@@ -10699,8 +10707,8 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_2 = \
coredll_prntdlgg.o \
coredll_msw_accel.o \
coredll_msw_anybutton.o \
- coredll_artmsw.o \
coredll_appprogress.o \
+ coredll_artmsw.o \
coredll_msw_bmpbuttn.o \
coredll_msw_button.o \
coredll_msw_checkbox.o \
@@ -10857,8 +10865,8 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_2 = \
coredll_prntdlgg.o \
coredll_msw_accel.o \
coredll_msw_anybutton.o \
- coredll_artmsw.o \
coredll_appprogress.o \
+ coredll_artmsw.o \
coredll_msw_bmpbuttn.o \
coredll_msw_button.o \
coredll_msw_checkbox.o \
@@ -12477,8 +12485,8 @@ COND_TOOLKIT_MSW___GUI_SRC_OBJECTS_3 = \
corelib_prntdlgg.o \
corelib_msw_accel.o \
corelib_msw_anybutton.o \
- corelib_artmsw.o \
corelib_appprogress.o \
+ corelib_artmsw.o \
corelib_msw_bmpbuttn.o \
corelib_msw_button.o \
corelib_msw_checkbox.o \
@@ -12635,8 +12643,8 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_3 = \
corelib_prntdlgg.o \
corelib_msw_accel.o \
corelib_msw_anybutton.o \
- corelib_artmsw.o \
corelib_appprogress.o \
+ corelib_artmsw.o \
corelib_msw_bmpbuttn.o \
corelib_msw_button.o \
corelib_msw_checkbox.o \
@@ -13213,6 +13221,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
advdll_tipdlg.o \
advdll_treelist.o \
advdll_wizard.o \
+ advdll_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_4) \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_2)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2)
@@ -13250,6 +13259,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
advdll_tipdlg.o \
advdll_treelist.o \
advdll_wizard.o \
+ advdll_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_5) \
$(__ADVANCED_UNIV_SRC_OBJECTS_2)
@COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_2 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2)
@@ -13546,6 +13556,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
advlib_tipdlg.o \
advlib_treelist.o \
advlib_wizard.o \
+ advlib_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_6) \
$(__ADVANCED_PLATFORM_NATIVE_SRC_OBJECTS_3)
@COND_WXUNIV_0@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3)
@@ -13583,6 +13594,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
advlib_tipdlg.o \
advlib_treelist.o \
advlib_wizard.o \
+ advlib_addremovectrl.o \
$(__ADVANCED_PLATFORM_SRC_OBJECTS_7) \
$(__ADVANCED_UNIV_SRC_OBJECTS_3)
@COND_WXUNIV_1@__ADVANCED_SRC_OBJECTS_3 = $(COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3)
@@ -21362,18 +21374,18 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_msw_anybutton.o: $(srcdir)/src/msw/anybutton.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/anybutton.cpp
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monodll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_msw_bmpbuttn.o: $(srcdir)/src/msw/bmpbuttn.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/bmpbuttn.cpp
@@ -22760,6 +22772,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@monodll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+@COND_USE_GUI_1@monodll_addremovectrl.o: $(srcdir)/src/common/addremovectrl.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/addremovectrl.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@@ -27248,18 +27263,18 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_msw_anybutton.o: $(srcdir)/src/msw/anybutton.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/anybutton.cpp
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@monolib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_msw_bmpbuttn.o: $(srcdir)/src/msw/bmpbuttn.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/bmpbuttn.cpp
@@ -28646,6 +28661,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@monolib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+@COND_USE_GUI_1@monolib_addremovectrl.o: $(srcdir)/src/common/addremovectrl.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/addremovectrl.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@@ -33248,18 +33266,18 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_msw_anybutton.o: $(srcdir)/src/msw/anybutton.cpp $(COREDLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/anybutton.cpp
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(COREDLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(COREDLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@coredll_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(COREDLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@coredll_msw_bmpbuttn.o: $(srcdir)/src/msw/bmpbuttn.cpp $(COREDLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/bmpbuttn.cpp
@@ -37646,18 +37664,18 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_msw_anybutton.o: $(srcdir)/src/msw/anybutton.cpp $(CORELIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/anybutton.cpp
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
-
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(CORELIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_appprogress.o: $(srcdir)/src/msw/appprogress.cpp $(CORELIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/appprogress.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@corelib_artmsw.o: $(srcdir)/src/msw/artmsw.cpp $(CORELIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/artmsw.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@corelib_msw_bmpbuttn.o: $(srcdir)/src/msw/bmpbuttn.cpp $(CORELIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/bmpbuttn.cpp
@@ -39050,6 +39068,9 @@ advdll_treelist.o: $(srcdir)/src/generic/treelist.cpp $(ADVDLL_ODEP)
advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+advdll_addremovectrl.o: $(srcdir)/src/common/addremovectrl.cpp $(ADVDLL_ODEP)
+ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/addremovectrl.cpp
+
@COND_TOOLKIT_MSW@advdll_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
@@ -39545,6 +39566,9 @@ advlib_treelist.o: $(srcdir)/src/generic/treelist.cpp $(ADVLIB_ODEP)
advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/wizard.cpp
+advlib_addremovectrl.o: $(srcdir)/src/common/addremovectrl.cpp $(ADVLIB_ODEP)
+ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/addremovectrl.cpp
+
@COND_TOOLKIT_MSW@advlib_taskbarcmn.o: $(srcdir)/src/common/taskbarcmn.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/taskbarcmn.cpp
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 861fb6a39a..0e75dd9cd4 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -2971,6 +2971,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/generic/tipdlg.cpp
src/generic/treelist.cpp
src/generic/wizard.cpp
+ src/common/addremovectrl.cpp
@@ -3023,6 +3024,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/tipdlg.h
wx/treelist.h
wx/wizard.h
+ wx/addremovectrl.h
diff --git a/build/files b/build/files
index a202dce467..c3606424b8 100644
--- a/build/files
+++ b/build/files
@@ -2512,6 +2512,7 @@ UNIV_HDR =
# wxAdvanced
ADVANCED_CMN_SRC =
+ src/common/addremovectrl.cpp
src/common/animatecmn.cpp
src/common/bmpcboxcmn.cpp
src/common/calctrlcmn.cpp
@@ -2548,6 +2549,7 @@ ADVANCED_CMN_SRC =
ADVANCED_CMN_HDR =
wx/aboutdlg.h
+ wx/addremovectrl.h
wx/animate.h
wx/bannerwindow.h
wx/bmpcbox.h
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index 2d919b0b49..8f72d78dc5 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -1820,8 +1820,8 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_prntdlgg.obj \
$(OBJS)\monodll_msw_accel.obj \
$(OBJS)\monodll_msw_anybutton.obj \
- $(OBJS)\monodll_artmsw.obj \
$(OBJS)\monodll_appprogress.obj \
+ $(OBJS)\monodll_artmsw.obj \
$(OBJS)\monodll_msw_bmpbuttn.obj \
$(OBJS)\monodll_msw_button.obj \
$(OBJS)\monodll_msw_checkbox.obj \
@@ -2351,6 +2351,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_addremovectrl.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
@@ -2403,6 +2404,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_addremovectrl.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
@@ -2633,8 +2635,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_prntdlgg.obj \
$(OBJS)\monolib_msw_accel.obj \
$(OBJS)\monolib_msw_anybutton.obj \
- $(OBJS)\monolib_artmsw.obj \
$(OBJS)\monolib_appprogress.obj \
+ $(OBJS)\monolib_artmsw.obj \
$(OBJS)\monolib_msw_bmpbuttn.obj \
$(OBJS)\monolib_msw_button.obj \
$(OBJS)\monolib_msw_checkbox.obj \
@@ -3164,6 +3166,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_addremovectrl.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
@@ -3216,6 +3219,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_addremovectrl.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
@@ -3322,8 +3326,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_prntdlgg.obj \
$(OBJS)\coredll_msw_accel.obj \
$(OBJS)\coredll_msw_anybutton.obj \
- $(OBJS)\coredll_artmsw.obj \
$(OBJS)\coredll_appprogress.obj \
+ $(OBJS)\coredll_artmsw.obj \
$(OBJS)\coredll_msw_bmpbuttn.obj \
$(OBJS)\coredll_msw_button.obj \
$(OBJS)\coredll_msw_checkbox.obj \
@@ -3887,8 +3891,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_prntdlgg.obj \
$(OBJS)\corelib_msw_accel.obj \
$(OBJS)\corelib_msw_anybutton.obj \
- $(OBJS)\corelib_artmsw.obj \
$(OBJS)\corelib_appprogress.obj \
+ $(OBJS)\corelib_artmsw.obj \
$(OBJS)\corelib_msw_bmpbuttn.obj \
$(OBJS)\corelib_msw_button.obj \
$(OBJS)\corelib_msw_checkbox.obj \
@@ -4428,6 +4432,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_addremovectrl.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
@@ -4480,6 +4485,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_addremovectrl.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
@@ -4528,6 +4534,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_addremovectrl.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
@@ -4580,6 +4587,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_addremovectrl.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
@@ -5119,7 +5127,7 @@ $(LIBDIRNAME)\wxscintilla$(WXDEBUGFLAG).lib: $(WXSCINTILLA_OBJECTS)
!if "$(MONOLITHIC)" == "1" && "$(SHARED)" == "1"
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG).dll: $(OBJS)\monodll_dummy.obj $(MONODLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\monodll_version.res $(__wxscintilla_library_link_DEP)
ilink32 -Tpd -q -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) @&&|
- c0d32.obj $(MONODLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) ole2w32.lib oleacc.lib $(__wxscintilla) import32.lib cw32$(__THREADSFLAG_14)$(__RUNTIME_LIBS_5).lib,, $(OBJS)\monodll_version.res
+ c0d32.obj $(MONODLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) ole2w32.lib oleacc.lib $(__wxscintilla) import32.lib cw32$(__THREADSFLAG_14)$(__RUNTIME_LIBS_5).lib,, $(OBJS)\monodll_version.res
|
implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) $@
!endif
@@ -5255,7 +5263,7 @@ wxhtml: $(____wxhtml_namedll_DEP) $(____wxhtml_namelib_DEP)
!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_WEBVIEW)" == "1"
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG).dll: $(OBJS)\webviewdll_dummy.obj $(WEBVIEWDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\webviewdll_version.res $(__coredll___depname) $(__basedll___depname)
ilink32 -Tpd -q -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) @&&|
- c0d32.obj $(WEBVIEWDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_14)$(__RUNTIME_LIBS_5).lib,, $(OBJS)\webviewdll_version.res
+ c0d32.obj $(WEBVIEWDLL_OBJECTS),$@,, $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) ole2w32.lib oleacc.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib import32.lib cw32$(__THREADSFLAG_14)$(__RUNTIME_LIBS_5).lib,, $(OBJS)\webviewdll_version.res
|
implib -f $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview $@
!endif
@@ -6654,12 +6662,12 @@ $(OBJS)\monodll_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\monodll_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\monodll_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\monodll_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\monodll_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\monodll_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -8712,6 +8720,11 @@ $(OBJS)\monodll_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\wizard.cpp
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
@@ -9139,12 +9152,12 @@ $(OBJS)\monolib_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\monolib_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\monolib_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\monolib_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\monolib_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\monolib_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -11197,6 +11210,11 @@ $(OBJS)\monolib_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\wizard.cpp
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
@@ -12032,12 +12050,12 @@ $(OBJS)\coredll_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\coredll_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\coredll_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\coredll_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\coredll_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\coredll_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -13493,12 +13511,12 @@ $(OBJS)\corelib_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\corelib_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\corelib_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\corelib_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\corelib_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\corelib_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -15053,6 +15071,9 @@ $(OBJS)\advdll_treelist.obj: ..\..\src\generic\treelist.cpp
$(OBJS)\advdll_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\wizard.cpp
+$(OBJS)\advdll_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+
$(OBJS)\advdll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
@@ -15203,6 +15224,9 @@ $(OBJS)\advlib_treelist.obj: ..\..\src\generic\treelist.cpp
$(OBJS)\advlib_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\wizard.cpp
+$(OBJS)\advlib_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+
$(OBJS)\advlib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index c28100ed03..882998e8f0 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -1839,8 +1839,8 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_prntdlgg.o \
$(OBJS)\monodll_msw_accel.o \
$(OBJS)\monodll_msw_anybutton.o \
- $(OBJS)\monodll_artmsw.o \
$(OBJS)\monodll_appprogress.o \
+ $(OBJS)\monodll_artmsw.o \
$(OBJS)\monodll_msw_bmpbuttn.o \
$(OBJS)\monodll_msw_button.o \
$(OBJS)\monodll_msw_checkbox.o \
@@ -2373,6 +2373,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_tipdlg.o \
$(OBJS)\monodll_treelist.o \
$(OBJS)\monodll_wizard.o \
+ $(OBJS)\monodll_addremovectrl.o \
$(OBJS)\monodll_taskbarcmn.o \
$(OBJS)\monodll_aboutdlg.o \
$(OBJS)\monodll_notifmsg.o \
@@ -2425,6 +2426,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_tipdlg.o \
$(OBJS)\monodll_treelist.o \
$(OBJS)\monodll_wizard.o \
+ $(OBJS)\monodll_addremovectrl.o \
$(OBJS)\monodll_taskbarcmn.o \
$(OBJS)\monodll_aboutdlg.o \
$(OBJS)\monodll_notifmsg.o \
@@ -2658,8 +2660,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_prntdlgg.o \
$(OBJS)\monolib_msw_accel.o \
$(OBJS)\monolib_msw_anybutton.o \
- $(OBJS)\monolib_artmsw.o \
$(OBJS)\monolib_appprogress.o \
+ $(OBJS)\monolib_artmsw.o \
$(OBJS)\monolib_msw_bmpbuttn.o \
$(OBJS)\monolib_msw_button.o \
$(OBJS)\monolib_msw_checkbox.o \
@@ -3192,6 +3194,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_tipdlg.o \
$(OBJS)\monolib_treelist.o \
$(OBJS)\monolib_wizard.o \
+ $(OBJS)\monolib_addremovectrl.o \
$(OBJS)\monolib_taskbarcmn.o \
$(OBJS)\monolib_aboutdlg.o \
$(OBJS)\monolib_notifmsg.o \
@@ -3244,6 +3247,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_tipdlg.o \
$(OBJS)\monolib_treelist.o \
$(OBJS)\monolib_wizard.o \
+ $(OBJS)\monolib_addremovectrl.o \
$(OBJS)\monolib_taskbarcmn.o \
$(OBJS)\monolib_aboutdlg.o \
$(OBJS)\monolib_notifmsg.o \
@@ -3363,8 +3367,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_prntdlgg.o \
$(OBJS)\coredll_msw_accel.o \
$(OBJS)\coredll_msw_anybutton.o \
- $(OBJS)\coredll_artmsw.o \
$(OBJS)\coredll_appprogress.o \
+ $(OBJS)\coredll_artmsw.o \
$(OBJS)\coredll_msw_bmpbuttn.o \
$(OBJS)\coredll_msw_button.o \
$(OBJS)\coredll_msw_checkbox.o \
@@ -3936,8 +3940,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_prntdlgg.o \
$(OBJS)\corelib_msw_accel.o \
$(OBJS)\corelib_msw_anybutton.o \
- $(OBJS)\corelib_artmsw.o \
$(OBJS)\corelib_appprogress.o \
+ $(OBJS)\corelib_artmsw.o \
$(OBJS)\corelib_msw_bmpbuttn.o \
$(OBJS)\corelib_msw_button.o \
$(OBJS)\corelib_msw_checkbox.o \
@@ -4484,6 +4488,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_tipdlg.o \
$(OBJS)\advdll_treelist.o \
$(OBJS)\advdll_wizard.o \
+ $(OBJS)\advdll_addremovectrl.o \
$(OBJS)\advdll_taskbarcmn.o \
$(OBJS)\advdll_aboutdlg.o \
$(OBJS)\advdll_notifmsg.o \
@@ -4536,6 +4541,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_tipdlg.o \
$(OBJS)\advdll_treelist.o \
$(OBJS)\advdll_wizard.o \
+ $(OBJS)\advdll_addremovectrl.o \
$(OBJS)\advdll_taskbarcmn.o \
$(OBJS)\advdll_aboutdlg.o \
$(OBJS)\advdll_notifmsg.o \
@@ -4588,6 +4594,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_tipdlg.o \
$(OBJS)\advlib_treelist.o \
$(OBJS)\advlib_wizard.o \
+ $(OBJS)\advlib_addremovectrl.o \
$(OBJS)\advlib_taskbarcmn.o \
$(OBJS)\advlib_aboutdlg.o \
$(OBJS)\advlib_notifmsg.o \
@@ -4640,6 +4647,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_tipdlg.o \
$(OBJS)\advlib_treelist.o \
$(OBJS)\advlib_wizard.o \
+ $(OBJS)\advlib_addremovectrl.o \
$(OBJS)\advlib_taskbarcmn.o \
$(OBJS)\advlib_aboutdlg.o \
$(OBJS)\advlib_notifmsg.o \
@@ -5201,7 +5209,7 @@ endif
ifeq ($(MONOLITHIC),1)
ifeq ($(SHARED),1)
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG).dll: $(MONODLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\libwxexpat$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxzlib$(WXDEBUGFLAG).a $(LIBDIRNAME)\libwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).a $(OBJS)\monodll_version_rc.o $(__wxscintilla_library_link_DEP)
- $(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ $(MONODLL_OBJECTS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--out-implib=$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).a $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lwininet $(__wxscintilla)
+ $(CXX) $(LINK_DLL_FLAGS) -fPIC -o $@ $(MONODLL_OBJECTS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--out-implib=$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).a $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lwininet $(__wxscintilla)
endif
endif
@@ -6829,10 +6837,10 @@ $(OBJS)\monodll_msw_accel.o: ../../src/msw/accel.cpp
$(OBJS)\monodll_msw_anybutton.o: ../../src/msw/anybutton.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\monodll_artmsw.o: ../../src/msw/artmsw.cpp
+$(OBJS)\monodll_appprogress.o: ../../src/msw/appprogress.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\monodll_appprogress.o: ../../src/msw/appprogress.cpp
+$(OBJS)\monodll_artmsw.o: ../../src/msw/artmsw.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monodll_msw_bmpbuttn.o: ../../src/msw/bmpbuttn.cpp
@@ -8887,6 +8895,11 @@ $(OBJS)\monodll_wizard.o: ../../src/generic/wizard.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_addremovectrl.o: ../../src/common/addremovectrl.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -9314,10 +9327,10 @@ $(OBJS)\monolib_msw_accel.o: ../../src/msw/accel.cpp
$(OBJS)\monolib_msw_anybutton.o: ../../src/msw/anybutton.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\monolib_artmsw.o: ../../src/msw/artmsw.cpp
+$(OBJS)\monolib_appprogress.o: ../../src/msw/appprogress.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\monolib_appprogress.o: ../../src/msw/appprogress.cpp
+$(OBJS)\monolib_artmsw.o: ../../src/msw/artmsw.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monolib_msw_bmpbuttn.o: ../../src/msw/bmpbuttn.cpp
@@ -11372,6 +11385,11 @@ $(OBJS)\monolib_wizard.o: ../../src/generic/wizard.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_addremovectrl.o: ../../src/common/addremovectrl.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -12207,10 +12225,10 @@ $(OBJS)\coredll_msw_accel.o: ../../src/msw/accel.cpp
$(OBJS)\coredll_msw_anybutton.o: ../../src/msw/anybutton.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\coredll_artmsw.o: ../../src/msw/artmsw.cpp
+$(OBJS)\coredll_appprogress.o: ../../src/msw/appprogress.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\coredll_appprogress.o: ../../src/msw/appprogress.cpp
+$(OBJS)\coredll_artmsw.o: ../../src/msw/artmsw.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\coredll_msw_bmpbuttn.o: ../../src/msw/bmpbuttn.cpp
@@ -13668,10 +13686,10 @@ $(OBJS)\corelib_msw_accel.o: ../../src/msw/accel.cpp
$(OBJS)\corelib_msw_anybutton.o: ../../src/msw/anybutton.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\corelib_artmsw.o: ../../src/msw/artmsw.cpp
+$(OBJS)\corelib_appprogress.o: ../../src/msw/appprogress.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
-$(OBJS)\corelib_appprogress.o: ../../src/msw/appprogress.cpp
+$(OBJS)\corelib_artmsw.o: ../../src/msw/artmsw.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\corelib_msw_bmpbuttn.o: ../../src/msw/bmpbuttn.cpp
@@ -15228,6 +15246,9 @@ $(OBJS)\advdll_treelist.o: ../../src/generic/treelist.cpp
$(OBJS)\advdll_wizard.o: ../../src/generic/wizard.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_addremovectrl.o: ../../src/common/addremovectrl.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -15378,6 +15399,9 @@ $(OBJS)\advlib_treelist.o: ../../src/generic/treelist.cpp
$(OBJS)\advlib_wizard.o: ../../src/generic/wizard.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_addremovectrl.o: ../../src/common/addremovectrl.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_taskbarcmn.o: ../../src/common/taskbarcmn.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index 6636eda958..9fc73b9b81 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -2120,8 +2120,8 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_prntdlgg.obj \
$(OBJS)\monodll_msw_accel.obj \
$(OBJS)\monodll_msw_anybutton.obj \
- $(OBJS)\monodll_artmsw.obj \
$(OBJS)\monodll_appprogress.obj \
+ $(OBJS)\monodll_artmsw.obj \
$(OBJS)\monodll_msw_bmpbuttn.obj \
$(OBJS)\monodll_msw_button.obj \
$(OBJS)\monodll_msw_checkbox.obj \
@@ -2651,6 +2651,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_addremovectrl.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
@@ -2703,6 +2704,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_tipdlg.obj \
$(OBJS)\monodll_treelist.obj \
$(OBJS)\monodll_wizard.obj \
+ $(OBJS)\monodll_addremovectrl.obj \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
@@ -2939,8 +2941,8 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_prntdlgg.obj \
$(OBJS)\monolib_msw_accel.obj \
$(OBJS)\monolib_msw_anybutton.obj \
- $(OBJS)\monolib_artmsw.obj \
$(OBJS)\monolib_appprogress.obj \
+ $(OBJS)\monolib_artmsw.obj \
$(OBJS)\monolib_msw_bmpbuttn.obj \
$(OBJS)\monolib_msw_button.obj \
$(OBJS)\monolib_msw_checkbox.obj \
@@ -3470,6 +3472,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_addremovectrl.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
@@ -3522,6 +3525,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_tipdlg.obj \
$(OBJS)\monolib_treelist.obj \
$(OBJS)\monolib_wizard.obj \
+ $(OBJS)\monolib_addremovectrl.obj \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
@@ -3694,8 +3698,8 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_prntdlgg.obj \
$(OBJS)\coredll_msw_accel.obj \
$(OBJS)\coredll_msw_anybutton.obj \
- $(OBJS)\coredll_artmsw.obj \
$(OBJS)\coredll_appprogress.obj \
+ $(OBJS)\coredll_artmsw.obj \
$(OBJS)\coredll_msw_bmpbuttn.obj \
$(OBJS)\coredll_msw_button.obj \
$(OBJS)\coredll_msw_checkbox.obj \
@@ -4265,8 +4269,8 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_prntdlgg.obj \
$(OBJS)\corelib_msw_accel.obj \
$(OBJS)\corelib_msw_anybutton.obj \
- $(OBJS)\corelib_artmsw.obj \
$(OBJS)\corelib_appprogress.obj \
+ $(OBJS)\corelib_artmsw.obj \
$(OBJS)\corelib_msw_bmpbuttn.obj \
$(OBJS)\corelib_msw_button.obj \
$(OBJS)\corelib_msw_checkbox.obj \
@@ -4824,6 +4828,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_addremovectrl.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
@@ -4876,6 +4881,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_tipdlg.obj \
$(OBJS)\advdll_treelist.obj \
$(OBJS)\advdll_wizard.obj \
+ $(OBJS)\advdll_addremovectrl.obj \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
@@ -4930,6 +4936,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_addremovectrl.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
@@ -4982,6 +4989,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_tipdlg.obj \
$(OBJS)\advlib_treelist.obj \
$(OBJS)\advlib_wizard.obj \
+ $(OBJS)\advlib_addremovectrl.obj \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
@@ -5829,7 +5837,7 @@ $(LIBDIRNAME)\wxscintilla$(WXDEBUGFLAG).lib: $(WXSCINTILLA_OBJECTS)
!if "$(MONOLITHIC)" == "1" && "$(SHARED)" == "1"
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG).dll: $(OBJS)\monodll_dummy.obj $(MONODLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\monodll_version.res $(__wxscintilla_library_link_DEP)
link /DLL /NOLOGO /OUT:$@ $(__DEBUGINFO_6) /pdb:"$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)$(WXCOMPILER)$(VENDORTAG).pdb" $(__DEBUGINFO_108) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) @<<
- $(MONODLL_OBJECTS) $(MONODLL_RESOURCES) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib wininet.lib $(__wxscintilla) /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
+ $(MONODLL_OBJECTS) $(MONODLL_RESOURCES) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib wininet.lib $(__wxscintilla) /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
<<
!endif
@@ -5958,7 +5966,7 @@ wxhtml: $(____wxhtml_namedll_DEP) $(____wxhtml_namelib_DEP)
!if "$(MONOLITHIC)" == "0" && "$(SHARED)" == "1" && "$(USE_GUI)" == "1" && "$(USE_WEBVIEW)" == "1"
$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG).dll: $(OBJS)\webviewdll_dummy.obj $(WEBVIEWDLL_OBJECTS) $(__wxtiff___depname) $(__wxjpeg___depname) $(__wxpng___depname) $(__wxscintilla) $(LIBDIRNAME)\wxexpat$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxzlib$(WXDEBUGFLAG).lib $(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib $(OBJS)\webviewdll_version.res $(__coredll___depname) $(__basedll___depname)
link /DLL /NOLOGO /OUT:$@ $(__DEBUGINFO_6) /pdb:"$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG).pdb" $(__DEBUGINFO_325) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) $(____CAIRO_LIBDIR_FILENAMES) $(LDFLAGS) @<<
- $(WEBVIEWDLL_OBJECTS) $(WEBVIEWDLL_RESOURCES) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib wininet.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview.lib
+ $(WEBVIEWDLL_OBJECTS) $(WEBVIEWDLL_RESOURCES) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib wininet.lib $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib $(LIBDIRNAME)\wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib /IMPLIB:$(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview.lib
<<
!endif
@@ -7346,12 +7354,12 @@ $(OBJS)\monodll_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\monodll_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\monodll_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\monodll_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\monodll_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\monodll_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -9404,6 +9412,11 @@ $(OBJS)\monodll_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\wizard.cpp
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
@@ -9831,12 +9844,12 @@ $(OBJS)\monolib_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\monolib_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\monolib_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\monolib_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\monolib_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\monolib_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -11889,6 +11902,11 @@ $(OBJS)\monolib_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\wizard.cpp
!endif
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+!endif
+
!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
@@ -12724,12 +12742,12 @@ $(OBJS)\coredll_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\coredll_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\coredll_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\coredll_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\coredll_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\coredll_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -14185,12 +14203,12 @@ $(OBJS)\corelib_msw_accel.obj: ..\..\src\msw\accel.cpp
$(OBJS)\corelib_msw_anybutton.obj: ..\..\src\msw\anybutton.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\anybutton.cpp
-$(OBJS)\corelib_artmsw.obj: ..\..\src\msw\artmsw.cpp
- $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
-
$(OBJS)\corelib_appprogress.obj: ..\..\src\msw\appprogress.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\appprogress.cpp
+$(OBJS)\corelib_artmsw.obj: ..\..\src\msw\artmsw.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\artmsw.cpp
+
$(OBJS)\corelib_msw_bmpbuttn.obj: ..\..\src\msw\bmpbuttn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\bmpbuttn.cpp
@@ -15745,6 +15763,9 @@ $(OBJS)\advdll_treelist.obj: ..\..\src\generic\treelist.cpp
$(OBJS)\advdll_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\wizard.cpp
+$(OBJS)\advdll_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+
$(OBJS)\advdll_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
@@ -15895,6 +15916,9 @@ $(OBJS)\advlib_treelist.obj: ..\..\src\generic\treelist.cpp
$(OBJS)\advlib_wizard.obj: ..\..\src\generic\wizard.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\wizard.cpp
+$(OBJS)\advlib_addremovectrl.obj: ..\..\src\common\addremovectrl.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\addremovectrl.cpp
+
$(OBJS)\advlib_taskbarcmn.obj: ..\..\src\common\taskbarcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\taskbarcmn.cpp
diff --git a/build/msw/wx_adv.vcxproj b/build/msw/wx_adv.vcxproj
index 8de56f1984..e414f25c62 100644
--- a/build/msw/wx_adv.vcxproj
+++ b/build/msw/wx_adv.vcxproj
@@ -505,6 +505,7 @@
+
@@ -596,6 +597,7 @@
+
diff --git a/build/msw/wx_adv.vcxproj.filters b/build/msw/wx_adv.vcxproj.filters
index c683aa4e44..e33e153eb4 100644
--- a/build/msw/wx_adv.vcxproj.filters
+++ b/build/msw/wx_adv.vcxproj.filters
@@ -24,6 +24,9 @@
+
+ Common Sources
+
Common Sources
@@ -54,48 +57,6 @@
Common Sources
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
-
- MSW Sources
-
Generic Sources
@@ -174,6 +135,48 @@
Generic Sources
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
+
+ MSW Sources
+
@@ -181,38 +184,47 @@
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
-
- MSW Headers
+
+ Common Headers
+
+
+ Common Headers
+
+
+ Common Headers
+
+
+ Common Headers
Generic Headers
@@ -277,45 +289,6 @@
Generic Headers
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
-
- Common Headers
-
Common Headers
@@ -328,6 +301,39 @@
Common Headers
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
+
+ MSW Headers
+
Common Headers
diff --git a/build/msw/wx_vc7_adv.vcproj b/build/msw/wx_vc7_adv.vcproj
index 9eeecb0e7e..7b34b6726c 100644
--- a/build/msw/wx_vc7_adv.vcproj
+++ b/build/msw/wx_vc7_adv.vcproj
@@ -330,6 +330,9 @@
+
+
+
+
diff --git a/build/msw/wx_vc7_core.vcproj b/build/msw/wx_vc7_core.vcproj
index f4ffcfa0a0..50b30e08cc 100644
--- a/build/msw/wx_vc7_core.vcproj
+++ b/build/msw/wx_vc7_core.vcproj
@@ -2924,6 +2924,9 @@
+
+
+
+
+
+
diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj
index add7df3201..695142daf6 100644
--- a/build/msw/wx_vc8_core.vcproj
+++ b/build/msw/wx_vc8_core.vcproj
@@ -4400,6 +4400,10 @@
RelativePath="..\..\include\wx\xpmhand.h"
>
+
+
+
+
+
+
diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj
index f9e7f98215..f205524a4d 100644
--- a/build/msw/wx_vc9_core.vcproj
+++ b/build/msw/wx_vc9_core.vcproj
@@ -4396,6 +4396,10 @@
RelativePath="..\..\include\wx\xpmhand.h"
>
+
+
&6; }
+ enablestring=
+ defaultval=$wxUSE_ALL_FEATURES
+ if test -z "$defaultval"; then
+ if test x"$enablestring" = xdisable; then
+ defaultval=yes
+ else
+ defaultval=no
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --${enablestring:-enable}-addremovectrl" >&5
+$as_echo_n "checking for --${enablestring:-enable}-addremovectrl... " >&6; }
+ # Check whether --enable-addremovectrl was given.
+if test "${enable_addremovectrl+set}" = set; then :
+ enableval=$enable_addremovectrl;
+ if test "$enableval" = yes; then
+ wx_cv_use_addremovectrl='wxUSE_ADDREMOVECTRL=yes'
+ else
+ wx_cv_use_addremovectrl='wxUSE_ADDREMOVECTRL=no'
+ fi
+
+else
+
+ wx_cv_use_addremovectrl='wxUSE_ADDREMOVECTRL=${'DEFAULT_wxUSE_ADDREMOVECTRL":-$defaultval}"
+
+fi
+
+
+ eval "$wx_cv_use_addremovectrl"
+
+ if test x"$enablestring" = xdisable; then
+ if test $wxUSE_ADDREMOVECTRL = no; then
+ result=yes
+ else
+ result=no
+ fi
+ else
+ result=$wxUSE_ADDREMOVECTRL
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $result" >&5
+$as_echo "$result" >&6; }
+
+
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
@@ -35704,6 +35750,11 @@ if test "$wxUSE_ACCEL" = "yes"; then
USES_CONTROLS=1
fi
+if test "$wxUSE_ADDREMOVECTRL" = "yes"; then
+ $as_echo "#define wxUSE_ADDREMOVECTRL 1" >>confdefs.h
+
+fi
+
if test "$wxUSE_ANIMATIONCTRL" = "yes"; then
$as_echo "#define wxUSE_ANIMATIONCTRL 1" >>confdefs.h
diff --git a/configure.in b/configure.in
index 39e944d93f..5be016ab7a 100644
--- a/configure.in
+++ b/configure.in
@@ -885,6 +885,7 @@ WX_ARG_FEATURE(markup, [ --enable-markup support wxControl::SetLab
dnl please keep the settings below in alphabetical order
WX_ARG_FEATURE(accel, [ --enable-accel use accelerators], wxUSE_ACCEL)
+WX_ARG_FEATURE(addremovectrl, [ --enable-addremovectrl use wxAddRemoveCtrl], wxUSE_ADDREMOVECTRL)
WX_ARG_FEATURE(animatectrl, [ --enable-animatectrl use wxAnimationCtrl class], wxUSE_ANIMATIONCTRL)
WX_ARG_FEATURE(bannerwindow,[ --enable-bannerwindow use wxBannerWindow class], wxUSE_BANNERWINDOW)
WX_ARG_FEATURE(artstd, [ --enable-artstd use standard XPM icons in wxArtProvider], wxUSE_ARTPROVIDER_STD)
@@ -6426,6 +6427,10 @@ if test "$wxUSE_ACCEL" = "yes"; then
USES_CONTROLS=1
fi
+if test "$wxUSE_ADDREMOVECTRL" = "yes"; then
+ AC_DEFINE(wxUSE_ADDREMOVECTRL)
+fi
+
if test "$wxUSE_ANIMATIONCTRL" = "yes"; then
AC_DEFINE(wxUSE_ANIMATIONCTRL)
USES_CONTROLS=1
diff --git a/docs/changes.txt b/docs/changes.txt
index e5a20fcd1a..944fa2107e 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -66,6 +66,7 @@ All (GUI):
- Allow requesting modern (3.x+) OpenGL version in wxGLCanvas (Fabio Arnold).
- Allow customizing window shown by wxBusyInfo.
+- Add wxAddRemoveCtrl.
- Add wxEVT_MAGNIFY mouse event (Joost Nieuwenhuijse).
- Make results of wxDC::DrawEllipticArc() consistent across all platforms.
- XRC handler for wxAuiToolBar added (Kinaou Hervé, David Hart).
diff --git a/include/wx/addremovectrl.h b/include/wx/addremovectrl.h
new file mode 100644
index 0000000000..78a34e7073
--- /dev/null
+++ b/include/wx/addremovectrl.h
@@ -0,0 +1,109 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/addremovectrl.h
+// Purpose: wxAddRemoveCtrl declaration.
+// Author: Vadim Zeitlin
+// Created: 2015-01-29
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_ADDREMOVECTRL_H_
+#define _WX_ADDREMOVECTRL_H_
+
+#include "wx/panel.h"
+
+#if wxUSE_ADDREMOVECTRL
+
+extern WXDLLIMPEXP_DATA_ADV(const char) wxAddRemoveCtrlNameStr[];
+
+// ----------------------------------------------------------------------------
+// wxAddRemoveAdaptor: used by wxAddRemoveCtrl to work with the list control
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxAddRemoveAdaptor
+{
+public:
+ // Default ctor and trivial but virtual dtor.
+ wxAddRemoveAdaptor() { }
+ virtual ~wxAddRemoveAdaptor() { }
+
+ // Override to return the associated control.
+ virtual wxWindow* GetItemsCtrl() const = 0;
+
+ // Override to return whether a new item can be added to the control.
+ virtual bool CanAdd() const = 0;
+
+ // Override to return whether the currently selected item (if any) can be
+ // removed from the control.
+ virtual bool CanRemove() const = 0;
+
+ // Called when an item should be added, can only be called if CanAdd()
+ // currently returns true.
+ virtual void OnAdd() = 0;
+
+ // Called when the current item should be removed, can only be called if
+ // CanRemove() currently returns true.
+ virtual void OnRemove() = 0;
+
+private:
+ wxDECLARE_NO_COPY_CLASS(wxAddRemoveAdaptor);
+};
+
+// ----------------------------------------------------------------------------
+// wxAddRemoveCtrl: a list-like control combined with add/remove buttons
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxAddRemoveCtrl : public wxPanel
+{
+public:
+ wxAddRemoveCtrl()
+ {
+ Init();
+ }
+
+ wxAddRemoveCtrl(wxWindow* parent,
+ wxWindowID winid = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxString& name = wxAddRemoveCtrlNameStr)
+ {
+ Init();
+
+ Create(parent, winid, pos, size, style, name);
+ }
+
+ bool Create(wxWindow* parent,
+ wxWindowID winid = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxString& name = wxAddRemoveCtrlNameStr);
+
+ virtual ~wxAddRemoveCtrl();
+
+ // Must be called for the control to be usable, takes ownership of the
+ // pointer.
+ void SetAdaptor(wxAddRemoveAdaptor* adaptor);
+
+ // Set tooltips to use for the add and remove buttons.
+ void SetButtonsToolTips(const wxString& addtip, const wxString& removetip);
+
+protected:
+ virtual wxSize DoGetBestClientSize() const wxOVERRIDE;
+
+private:
+ // Common part of all ctors.
+ void Init()
+ {
+ m_impl = NULL;
+ }
+
+ class wxAddRemoveImpl* m_impl;
+
+ wxDECLARE_NO_COPY_CLASS(wxAddRemoveCtrl);
+};
+
+#endif // wxUSE_ADDREMOVECTRL
+
+#endif // _WX_ADDREMOVECTRL_H_
diff --git a/include/wx/android/setup.h b/include/wx/android/setup.h
index a2c75a5c17..b31c2fe0bb 100644
--- a/include/wx/android/setup.h
+++ b/include/wx/android/setup.h
@@ -992,6 +992,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/generic/private/addremovectrl.h b/include/wx/generic/private/addremovectrl.h
new file mode 100644
index 0000000000..af2a9ee7c8
--- /dev/null
+++ b/include/wx/generic/private/addremovectrl.h
@@ -0,0 +1,66 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/generic/private/addremovectrl.h
+// Purpose: Generic wxAddRemoveImpl implementation, also used in wxMSW
+// Author: Vadim Zeitlin
+// Created: 2015-02-05
+// RCS-ID: $Id$
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_PRIVATE_ADDREMOVECTRL_H_
+#define _WX_GENERIC_PRIVATE_ADDREMOVECTRL_H_
+
+// ----------------------------------------------------------------------------
+// wxAddRemoveImpl
+// ----------------------------------------------------------------------------
+
+class wxAddRemoveImpl : public wxAddRemoveImplWithButtons
+{
+public:
+ wxAddRemoveImpl(wxAddRemoveAdaptor* adaptor,
+ wxAddRemoveCtrl* parent,
+ wxWindow* ctrlItems)
+ : wxAddRemoveImplWithButtons(adaptor, parent, ctrlItems)
+ {
+ m_btnAdd = new wxButton(parent, wxID_ADD, GetAddButtonLabel(),
+ wxDefaultPosition, wxDefaultSize,
+ wxBU_EXACTFIT | wxBORDER_NONE);
+ m_btnRemove = new wxButton(parent, wxID_REMOVE, GetRemoveButtonLabel(),
+ wxDefaultPosition, wxDefaultSize,
+ wxBU_EXACTFIT | wxBORDER_NONE);
+
+ wxSizer* const sizerBtns = new wxBoxSizer(wxVERTICAL);
+ sizerBtns->Add(m_btnAdd, wxSizerFlags().Expand());
+ sizerBtns->Add(m_btnRemove, wxSizerFlags().Expand());
+
+ wxSizer* const sizerTop = new wxBoxSizer(wxHORIZONTAL);
+ sizerTop->Add(ctrlItems, wxSizerFlags(1).Expand());
+ sizerTop->Add(sizerBtns, wxSizerFlags().Centre().Border(wxLEFT));
+ parent->SetSizer(sizerTop);
+
+ SetUpEvents();
+ }
+
+private:
+ static wxString GetAddButtonLabel()
+ {
+#if wxUSE_UNICODE
+ return wchar_t(0xFF0B); // FULLWIDTH PLUS SIGN
+#else
+ return "+";
+#endif
+ }
+
+ static wxString GetRemoveButtonLabel()
+ {
+#if wxUSE_UNICODE
+ return wchar_t(0x2012); // FIGURE DASH
+#else
+ return "-";
+#endif
+ }
+
+};
+
+#endif // _WX_GENERIC_PRIVATE_ADDREMOVECTRL_H_
diff --git a/include/wx/gtk/private/addremovectrl.h b/include/wx/gtk/private/addremovectrl.h
new file mode 100644
index 0000000000..1cb797e8c2
--- /dev/null
+++ b/include/wx/gtk/private/addremovectrl.h
@@ -0,0 +1,81 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/gtk/private/addremovectrl.h
+// Purpose: GTK specific wxAddRemoveImpl implementation
+// Author: Vadim Zeitlin
+// Created: 2015-02-05
+// RCS-ID: $Id$
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_PRIVATE_ADDREMOVECTRL_H_
+#define _WX_GTK_PRIVATE_ADDREMOVECTRL_H_
+
+#include "wx/artprov.h"
+#include "wx/bmpbuttn.h"
+#include "wx/toolbar.h"
+
+#include
+
+// ----------------------------------------------------------------------------
+// wxAddRemoveImpl
+// ----------------------------------------------------------------------------
+
+class wxAddRemoveImpl : public wxAddRemoveImplBase
+{
+public:
+ wxAddRemoveImpl(wxAddRemoveAdaptor* adaptor,
+ wxAddRemoveCtrl* parent,
+ wxWindow* ctrlItems)
+ : wxAddRemoveImplBase(adaptor, parent, ctrlItems),
+ m_tbar(new wxToolBar(parent, wxID_ANY))
+ {
+ m_tbar->AddTool(wxID_ADD, wxString(), GetNamedBitmap("list-add"));
+ m_tbar->AddTool(wxID_REMOVE, wxString(), GetNamedBitmap("list-remove"));
+
+#ifdef __WXGTK3__
+ // Tweak the toolbar appearance to correspond to how the toolbars used
+ // in other GNOME applications for similar purposes look.
+ GtkToolbar* const toolbar = m_tbar->GTKGetToolbar();
+ GtkStyleContext* context = gtk_widget_get_style_context(GTK_WIDGET(toolbar));
+ gtk_style_context_add_class(context, GTK_STYLE_CLASS_INLINE_TOOLBAR);
+ gtk_style_context_set_junction_sides(context, GTK_JUNCTION_TOP);
+#endif // GTK+3
+
+ wxSizer* const sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(ctrlItems, wxSizerFlags(1).Expand());
+ sizerTop->Add(m_tbar, wxSizerFlags().Expand());
+ parent->SetSizer(sizerTop);
+
+ m_tbar->Bind(wxEVT_UPDATE_UI,
+ &wxAddRemoveImplBase::OnUpdateUIAdd, this, wxID_ADD);
+ m_tbar->Bind(wxEVT_UPDATE_UI,
+ &wxAddRemoveImplBase::OnUpdateUIRemove, this, wxID_REMOVE);
+
+ m_tbar->Bind(wxEVT_TOOL, &wxAddRemoveImplBase::OnAdd, this, wxID_ADD);
+ m_tbar->Bind(wxEVT_TOOL, &wxAddRemoveImplBase::OnRemove, this, wxID_REMOVE);
+ }
+
+ virtual void SetButtonsToolTips(const wxString& addtip,
+ const wxString& removetip) wxOVERRIDE
+ {
+ m_tbar->SetToolShortHelp(wxID_ADD, addtip);
+ m_tbar->SetToolShortHelp(wxID_REMOVE, removetip);
+ }
+
+private:
+ static wxBitmap GetNamedBitmap(const wxString& name)
+ {
+ // GTK UI guidelines recommend using "symbolic" versions of the icons
+ // for these buttons, so try them first but fall back to the normal
+ // ones if symbolic theme is not installed.
+ wxBitmap bmp = wxArtProvider::GetBitmap(name + "-symbolic", wxART_MENU);
+ if ( !bmp.IsOk() )
+ bmp = wxArtProvider::GetBitmap(name, wxART_MENU);
+ return bmp;
+ }
+
+ wxToolBar* const m_tbar;
+};
+
+#endif // _WX_GTK_PRIVATE_ADDREMOVECTRL_H_
diff --git a/include/wx/gtk/setup0.h b/include/wx/gtk/setup0.h
index 288b42df50..5a3473b8fc 100644
--- a/include/wx/gtk/setup0.h
+++ b/include/wx/gtk/setup0.h
@@ -993,6 +993,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h
index bf7b39b252..245e0b6fa2 100644
--- a/include/wx/motif/setup0.h
+++ b/include/wx/motif/setup0.h
@@ -993,6 +993,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index e33fc338aa..177727dad0 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -993,6 +993,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h
index dbd627a867..f94437f4f6 100644
--- a/include/wx/msw/wince/setup.h
+++ b/include/wx/msw/wince/setup.h
@@ -993,6 +993,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/osx/private/addremovectrl.h b/include/wx/osx/private/addremovectrl.h
new file mode 100644
index 0000000000..b7fefc258e
--- /dev/null
+++ b/include/wx/osx/private/addremovectrl.h
@@ -0,0 +1,118 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/osx/private/addremovectrl.h
+// Purpose: OS X specific wxAddRemoveImpl implementation
+// Author: Vadim Zeitlin
+// Created: 2015-02-05
+// RCS-ID: $Id$
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_OSX_PRIVATE_ADDREMOVECTRL_H_
+#define _WX_OSX_PRIVATE_ADDREMOVECTRL_H_
+
+#include "wx/artprov.h"
+#include "wx/bmpbuttn.h"
+#include "wx/panel.h"
+
+#include "wx/osx/private.h"
+
+// ----------------------------------------------------------------------------
+// wxAddRemoveImpl itself
+// ----------------------------------------------------------------------------
+
+class wxAddRemoveImpl : public wxAddRemoveImplWithButtons
+{
+public:
+ wxAddRemoveImpl(wxAddRemoveAdaptor* adaptor,
+ wxAddRemoveCtrl* parent,
+ wxWindow* ctrlItems)
+ : wxAddRemoveImplWithButtons(adaptor, parent, ctrlItems),
+ m_ctrlItems(ctrlItems)
+ {
+ // This size is hard coded for now as this is what the system dialogs
+ // themselves (e.g. the buttons under the lists in the "Users" or
+ // "Network" panes of the "System Preferences") use under OS X 10.8.
+ const wxSize sizeBtn(25, 23);
+
+ m_btnAdd = new wxBitmapButton(parent, wxID_ADD,
+ wxArtProvider::GetBitmap("NSAddTemplate"),
+ wxDefaultPosition,
+ sizeBtn,
+ wxBORDER_SIMPLE);
+
+ m_btnRemove = new wxBitmapButton(parent, wxID_REMOVE,
+ wxArtProvider::GetBitmap("NSRemoveTemplate"),
+ wxDefaultPosition,
+ sizeBtn,
+ wxBORDER_SIMPLE);
+
+ // Under OS X the space to the right of the buttons is actually
+ // occupied by an inactive gradient button, so create one.
+ m_btnPlaceholder = new wxButton(parent, wxID_ANY, "",
+ wxDefaultPosition,
+ sizeBtn,
+ wxBORDER_SIMPLE);
+ m_btnPlaceholder->Disable();
+
+
+ // We need to lay out our windows manually under OS X as it is the only
+ // way to achieve the required, for the correct look, overlap between
+ // their borders -- sizers would never allow this.
+ parent->Bind(wxEVT_SIZE, &wxAddRemoveImpl::OnSize, this);
+
+ // We also have to ensure that the window with the items doesn't have
+ // any border as it wouldn't look correctly if it did.
+ long style = ctrlItems->GetWindowStyle();
+ style &= ~wxBORDER_MASK;
+ style |= wxBORDER_SIMPLE;
+ ctrlItems->SetWindowStyle(style);
+
+
+ SetUpEvents();
+ }
+
+ // As we don't use sizers, we also need to compute our best size ourselves.
+ virtual wxSize GetBestClientSize() const wxOVERRIDE
+ {
+ wxSize size = m_ctrlItems->GetBestSize();
+
+ const wxSize sizeBtn = m_btnAdd->GetSize();
+
+ size.y += sizeBtn.y;
+ size.IncTo(wxSize(3*sizeBtn.x, -1));
+
+ return size;
+ }
+
+private:
+ void OnSize(wxSizeEvent& event)
+ {
+ const wxSize size = event.GetSize();
+
+ const wxSize sizeBtn = m_btnAdd->GetSize();
+
+ const int yBtn = size.y - sizeBtn.y;
+
+ // There is a vertical overlap which hides the items control bottom
+ // border.
+ m_ctrlItems->SetSize(0, 0, size.x, yBtn + 2);
+
+ // And there is also a horizontal 1px overlap between the buttons
+ // themselves, so subtract 1 from the next button position.
+ int x = 0;
+ m_btnAdd->Move(x, yBtn);
+ x += sizeBtn.x - 1;
+
+ m_btnRemove->Move(x, yBtn);
+ x += sizeBtn.x - 1;
+
+ // The last one needs to be resized to take up all the remaining space.
+ m_btnPlaceholder->SetSize(x, yBtn, size.x - x, sizeBtn.y);
+ }
+
+ wxWindow* m_ctrlItems;
+ wxButton* /* const */ m_btnPlaceholder;
+};
+
+#endif // _WX_OSX_PRIVATE_ADDREMOVECTRL_H_
diff --git a/include/wx/osx/setup0.h b/include/wx/osx/setup0.h
index 7343a003c6..cb437e7b31 100644
--- a/include/wx/osx/setup0.h
+++ b/include/wx/osx/setup0.h
@@ -994,6 +994,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/private/addremovectrl.h b/include/wx/private/addremovectrl.h
new file mode 100644
index 0000000000..2021a91723
--- /dev/null
+++ b/include/wx/private/addremovectrl.h
@@ -0,0 +1,155 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/private/addremovectrl.h
+// Purpose: wxAddRemoveImpl helper class declaration
+// Author: Vadim Zeitlin
+// Created: 2015-02-04
+// RCS-ID: $Id$
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PRIVATE_ADDREMOVECTRL_H_
+#define _WX_PRIVATE_ADDREMOVECTRL_H_
+
+#include "wx/button.h"
+#include "wx/sizer.h"
+
+// ----------------------------------------------------------------------------
+// wxAddRemoveImplBase: implementation-only part of wxAddRemoveCtrl, base part
+// ----------------------------------------------------------------------------
+
+class wxAddRemoveImplBase
+{
+public:
+ // Base class ctor just initializes the associated adaptor, the derived
+ // class is supposed to create the buttons and layout everything.
+ //
+ // Takes ownership of the adaptor pointer.
+ wxEXPLICIT wxAddRemoveImplBase(wxAddRemoveAdaptor* adaptor,
+ wxAddRemoveCtrl* WXUNUSED(parent),
+ wxWindow* ctrlItems)
+ : m_adaptor(adaptor)
+ {
+ ctrlItems->Bind(wxEVT_CHAR, &wxAddRemoveImplBase::OnChar, this);
+ }
+
+ // wxOSX implementation needs to override this as it doesn't use sizers,
+ // for the others it is not necessary.
+ virtual wxSize GetBestClientSize() const { return wxDefaultSize; }
+
+ virtual void SetButtonsToolTips(const wxString& addtip,
+ const wxString& removetip) = 0;
+
+ virtual ~wxAddRemoveImplBase()
+ {
+ delete m_adaptor;
+ }
+
+ // Event handlers which must be connected to the appropriate sources by the
+ // derived classes.
+
+ void OnUpdateUIAdd(wxUpdateUIEvent& event)
+ {
+ event.Enable( m_adaptor->CanAdd() );
+ }
+
+ void OnUpdateUIRemove(wxUpdateUIEvent& event)
+ {
+ event.Enable( m_adaptor->CanRemove() );
+ }
+
+ void OnAdd(wxCommandEvent& WXUNUSED(event))
+ {
+ m_adaptor->OnAdd();
+ }
+
+ void OnRemove(wxCommandEvent& WXUNUSED(event))
+ {
+ m_adaptor->OnRemove();
+ }
+
+private:
+ // This event handler is connected by this class itself and doesn't need to
+ // be accessible to the derived classes.
+
+ void OnChar(wxKeyEvent& event)
+ {
+ switch ( event.GetKeyCode() )
+ {
+ case '+':
+ case WXK_INSERT:
+ case WXK_NUMPAD_INSERT:
+ if ( m_adaptor->CanAdd() )
+ m_adaptor->OnAdd();
+ return;
+
+ case '-':
+ case WXK_DELETE:
+ case WXK_NUMPAD_DELETE:
+ if ( m_adaptor->CanRemove() )
+ m_adaptor->OnRemove();
+ return;
+ }
+
+ event.Skip();
+ }
+
+ wxAddRemoveAdaptor* const m_adaptor;
+
+ wxDECLARE_NO_COPY_CLASS(wxAddRemoveImplBase);
+};
+
+// GTK+ uses a wxToolBar-based implementation and so doesn't need this class.
+#ifndef __WXGTK__
+
+// Base class for the ports using actual wxButtons for the "+"/"-" buttons.
+class wxAddRemoveImplWithButtons : public wxAddRemoveImplBase
+{
+public:
+ wxEXPLICIT wxAddRemoveImplWithButtons(wxAddRemoveAdaptor* adaptor,
+ wxAddRemoveCtrl* parent,
+ wxWindow* ctrlItems)
+ : wxAddRemoveImplBase(adaptor, parent, ctrlItems)
+ {
+ m_btnAdd =
+ m_btnRemove = NULL;
+ }
+
+ virtual void SetButtonsToolTips(const wxString& addtip,
+ const wxString& removetip) wxOVERRIDE
+ {
+ m_btnAdd->SetToolTip(addtip);
+ m_btnRemove->SetToolTip(removetip);
+ }
+
+protected:
+ // Must be called by the derived class ctor after creating the buttons to
+ // set up the event handlers.
+ void SetUpEvents()
+ {
+ m_btnAdd->Bind(wxEVT_UPDATE_UI,
+ &wxAddRemoveImplBase::OnUpdateUIAdd, this);
+ m_btnRemove->Bind(wxEVT_UPDATE_UI,
+ &wxAddRemoveImplBase::OnUpdateUIRemove, this);
+
+ m_btnAdd->Bind(wxEVT_BUTTON, &wxAddRemoveImplBase::OnAdd, this);
+ m_btnRemove->Bind(wxEVT_BUTTON, &wxAddRemoveImplBase::OnRemove, this);
+ }
+
+ wxButton *m_btnAdd,
+ *m_btnRemove;
+
+ wxDECLARE_NO_COPY_CLASS(wxAddRemoveImplWithButtons);
+};
+
+#endif // !wxGTK
+
+#ifdef __WXOSX__
+ #include "wx/osx/private/addremovectrl.h"
+#elif defined(__WXGTK__)
+ #include "wx/gtk/private/addremovectrl.h"
+#else
+ #include "wx/generic/private/addremovectrl.h"
+#endif
+
+#endif // _WX_PRIVATE_ADDREMOVECTRL_H_
diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h
index 73ec69f0b6..ccf4eb9395 100644
--- a/include/wx/setup_inc.h
+++ b/include/wx/setup_inc.h
@@ -989,6 +989,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/include/wx/univ/setup0.h b/include/wx/univ/setup0.h
index 3231580c36..8a636c79b7 100644
--- a/include/wx/univ/setup0.h
+++ b/include/wx/univ/setup0.h
@@ -992,6 +992,16 @@
// wxHeaderCtrl)
#define wxUSE_REARRANGECTRL 1
+// wxAddRemoveCtrl is a composite control containing a control showing some
+// items (e.g. wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl, ...) and "+"/
+// "-" buttons allowing to add and remove items to/from the control.
+//
+// Default is 1.
+//
+// Recommended setting: 1 but can be safely set to 0 if you don't need it (not
+// used by the library itself).
+#define wxUSE_ADDREMOVECTRL 1
+
// ----------------------------------------------------------------------------
// Miscellaneous GUI stuff
// ----------------------------------------------------------------------------
diff --git a/interface/wx/addremovectrl.h b/interface/wx/addremovectrl.h
new file mode 100644
index 0000000000..a2fcf6e3bb
--- /dev/null
+++ b/interface/wx/addremovectrl.h
@@ -0,0 +1,201 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/addremovectrl.h
+// Purpose: documentation of wxAddRemoveCtrl
+// Author: Vadim Zeitlin
+// Created: 2015-02-04
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxAddRemoveAdaptor
+
+ Object used to mediate between wxAddRemoveCtrl and the control showing the
+ list of items which can be added or removed.
+
+ This is a base class from which custom classes used with
+ wxAddRemoveCtrl::SetAdaptor() must be derived. Object of this class are
+ typically associated with the control showing the list of items on
+ creation, i.e. the derived class constructor would normally take a pointer
+ to the control which will be returned from GetItemsCtrl() later.
+
+ @since 3.1.0
+
+ @library{wxadv}
+ */
+class wxAddRemoveAdaptor
+{
+public:
+ /// Default and trivial constructor.
+ wxAddRemoveAdaptor();
+
+ /// Trivial but virtual destructor.
+ virtual ~wxAddRemoveAdaptor();
+
+ /**
+ Override to return the associated control.
+
+ The control must be a child of the associated wxAddRemoveCtrl.
+ */
+ virtual wxWindow* GetItemsCtrl() const = 0;
+
+ /**
+ Override to return whether a new item can be added to the control.
+
+ A typical implementation would simply always return @true, but it is
+ also possible to return @false if the list is "full" and can't contain
+ any more elements.
+ */
+ virtual bool CanAdd() const = 0;
+
+ /**
+ Override to return whether the currently selected item (if any) can be
+ removed from the control.
+
+ The implementation should check if there is a currently selected item
+ and possibly if the user is allowed to remove this item.
+ */
+ virtual bool CanRemove() const = 0;
+
+ /**
+ Called when an item should be added.
+
+ A typical implementation would either add a new item to the list
+ control and start editing it in place or ask the user for the item to
+ add first and then add it to the control returned by GetItemsCtrl().
+
+ Notice that this method can only be called if CanAdd() currently
+ returns @true.
+ */
+ virtual void OnAdd() = 0;
+
+ /**
+ Called when the current item should be removed.
+
+ The implementation should remove the currently selected item from the
+ control and update the selection.
+
+ Notice that this method can only be called if CanRemove() currently
+ returns @true.
+ */
+ virtual void OnRemove() = 0;
+};
+
+
+/**
+ @class wxAddRemoveCtrl
+
+ A class adding buttons to add and remove items to a list-like child
+ control.
+
+ This class represents a composite control which combines any control
+ capable of showing multiple items, such as wxListBox, wxListCtrl,
+ wxTreeCtrl, wxDataViewCtrl or a custom control, with two buttons allowing
+ to add items and remove items from this list-like control. The advantage of
+ using this control instead of just creating and managing the buttons
+ directly is that the correct buttons and layout for the current platform
+ are used by this class. E.g. the buttons are positioned under the list
+ control under OS X and GTK+ but to its right under MSW and the buttons
+ themselves use system-specific bitmaps under OS X.
+
+ This class is always used in conjunction with wxAddRemoveAdaptor which is
+ used to actually add items to or remove them from the control containing
+ the items when the corresponding button is pressed. The
+ @ref page_samples_dialogs "dialogs sample" shows how to do it: first you
+ need to derive a new class from wxAddRemoveAdaptor and implement its pure
+ virtual methods and then you must call SetAdaptor() with a newly allocated
+ object of this class. You also must create the control containing the items
+ with wxAddRemoveCtrl as parent. Here are the different steps in pseudocode:
+ @code
+ wxAddRemoveCtrl* ctrl = new wxAddRemoveCtrl(parent);
+
+ // This can be any kind of control for which OnAdd() and OnRemove()
+ // below can be made to work.
+ wxListBox* lbox = new wxListBox(ctrl, ...);
+
+ class ListBoxAdaptor : public wxAddRemoveAdaptor
+ {
+ public:
+ explicit ListBoxAdaptor(wxListBox* lbox) : m_lbox(lbox) { }
+
+ virtual wxWindow* GetItemsCtrl() const { return m_lbox; }
+
+ virtual bool CanAdd() const { return true; }
+ virtual bool CanRename() const { return m_lbox->GetSelection() != wxNOT_FOUND; }
+ virtual void OnAdd() { ... get the new item from user and add it ... }
+ virtual void OnRemove() { m_lbox->Delete(m_lbox->GetSelection()); }
+
+ private:
+ wxListBox* m_lbox;
+ };
+
+ ctrl->SetAdaptor(new ListBoxAdaptor(lbox));
+ @endcode
+
+ @since 3.1.0
+
+ @library{wxadv}
+ @category{ctrl}
+ */
+class wxAddRemoveCtrl : public wxPanel
+{
+public:
+ /**
+ Default constructor.
+
+ Use Create() later.
+ */
+ wxAddRemoveCtrl();
+
+ /**
+ Constructor really creating the control window.
+
+ SetAdaptor() still must be called later to finish initializing the
+ control.
+
+ Parameters have the same meaning as in wxPanel::Create().
+ */
+ wxAddRemoveCtrl(wxWindow* parent,
+ wxWindowID winid = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxString& name = wxAddRemoveCtrlNameStr);
+
+ /**
+ Create the control window after using the default constructor.
+
+ Parameters have the same meaning as in wxPanel::Create().
+ */
+ bool Create(wxWindow* parent,
+ wxWindowID winid = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0,
+ const wxString& name = wxAddRemoveCtrlNameStr);
+
+ /**
+ Associate the control with the specified adaptor object.
+
+ This method must be called exactly once to finish initializing this
+ object.
+
+ The adapter object must correspond to a control created as a child of
+ this window, i.e. wxAddRemoveAdaptor::GetItemsCtrl() must return a
+ pointer to an existing child of this control.
+
+ The @a adaptor pointer must be non-NULL and heap-allocated as the
+ control takes ownership of it and will delete it later.
+ */
+ void SetAdaptor(wxAddRemoveAdaptor* adaptor);
+
+ /**
+ Sets the tooltips used for the add and remove buttons.
+
+ Show the specified tooltips when the mouse hovers over the buttons used
+ to add and remove items, respectively.
+
+ This method can only be used after calling SetAdaptor().
+ */
+ void SetButtonsToolTips(const wxString& addtip, const wxString& removetip);
+};
diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp
index 0022327b54..f4b133a366 100644
--- a/samples/dialogs/dialogs.cpp
+++ b/samples/dialogs/dialogs.cpp
@@ -47,6 +47,7 @@
#endif // wxUSE_CHOICEDLG
#include "wx/rearrangectrl.h"
+#include "wx/addremovectrl.h"
#if wxUSE_STARTUP_TIPS
#include "wx/tipdlg.h"
@@ -173,6 +174,10 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(DIALOGS_REARRANGE, MyFrame::Rearrange)
#endif // wxUSE_REARRANGECTRL
+#if wxUSE_ADDREMOVECTRL
+ EVT_MENU(DIALOGS_ADDREMOVE, MyFrame::AddRemove)
+#endif // wxUSE_ADDREMOVECTRL
+
#if wxUSE_FILEDLG
EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen)
EVT_MENU(DIALOGS_FILE_OPEN2, MyFrame::FileOpen2)
@@ -386,6 +391,10 @@ bool MyApp::OnInit()
choices_menu->Append(DIALOGS_REARRANGE, wxT("&Rearrange dialog\tCtrl-R"));
#endif // wxUSE_REARRANGECTRL
+ #if wxUSE_ADDREMOVECTRL
+ choices_menu->Append(DIALOGS_ADDREMOVE, "&Add/remove items control\tCtrl-A");
+ #endif // wxUSE_ADDREMOVECTRL
+
#if USE_COLOURDLG_GENERIC || USE_FONTDLG_GENERIC
choices_menu->AppendSeparator();
#endif // USE_COLOURDLG_GENERIC || USE_FONTDLG_GENERIC
@@ -1333,6 +1342,91 @@ void MyFrame::Rearrange(wxCommandEvent& WXUNUSED(event))
}
#endif // wxUSE_REARRANGECTRL
+#if wxUSE_ADDREMOVECTRL
+
+void MyFrame::AddRemove(wxCommandEvent& WXUNUSED(event))
+{
+ wxDialog dlg(this, wxID_ANY, "wxAddRemoveCtrl test",
+ wxDefaultPosition, wxDefaultSize,
+ wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
+
+ wxAddRemoveCtrl* const ctrl = new wxAddRemoveCtrl(&dlg);
+ ctrl->SetInitialSize(wxSize(-1, 12*GetCharHeight()));
+
+ const wxString items[] =
+ {
+ "some", "items", "for", "testing", "wxAddRemoveCtrl",
+ };
+ wxListBox* const lbox = new wxListBox(ctrl, wxID_ANY,
+ wxDefaultPosition, wxDefaultSize,
+ WXSIZEOF(items), items);
+
+ // Test adaptor class connecting wxAddRemoveCtrl with wxListBox we use
+ // inside it.
+ class ListBoxAdaptor : public wxAddRemoveAdaptor
+ {
+ public:
+ wxEXPLICIT ListBoxAdaptor(wxListBox* lbox)
+ : m_lbox(lbox)
+ {
+ }
+
+ wxWindow* GetItemsCtrl() const wxOVERRIDE
+ {
+ return m_lbox;
+ }
+
+ bool CanAdd() const wxOVERRIDE
+ {
+ // Restrict the maximal number of items to 10 just for testing.
+ return m_lbox->GetCount() <= 10;
+ }
+
+ bool CanRemove() const wxOVERRIDE
+ {
+ // We must have a selected item in order to be able to delete it.
+ return m_lbox->GetSelection() != wxNOT_FOUND;
+ }
+
+ void OnAdd() wxOVERRIDE
+ {
+ // A real program would use a wxDataViewCtrl or wxListCtrl and
+ // allow editing the newly edited item in place, here we just use a
+ // hardcoded item value instead.
+ static int s_item = 0;
+ m_lbox->Append(wxString::Format("new item #%d", ++s_item));
+ }
+
+ void OnRemove() wxOVERRIDE
+ {
+ // Notice that we don't need to check if we have a valid selection,
+ // we can be only called if CanRemove(), which already checks for
+ // this, had returned true.
+ const unsigned pos = m_lbox->GetSelection();
+
+ m_lbox->Delete(pos);
+ m_lbox->SetSelection(pos == m_lbox->GetCount() ? pos - 1 : pos);
+ }
+
+ private:
+ wxListBox* const m_lbox;
+ };
+
+ ctrl->SetAdaptor(new ListBoxAdaptor(lbox));
+
+ ctrl->SetButtonsToolTips("Add up to 10 items", "Remove current item");
+
+ wxSizer* const sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(ctrl, wxSizerFlags(1).Expand().Border());
+ sizerTop->Add(dlg.CreateStdDialogButtonSizer(wxOK | wxCANCEL),
+ wxSizerFlags().Expand().Border());
+ dlg.SetSizerAndFit(sizerTop);
+
+ dlg.ShowModal();
+}
+
+#endif // wxUSE_ADDREMOVECTRL
+
#if wxUSE_FILEDLG
// panel with custom controls for file dialog
diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h
index 06d6b46ca2..f6d9ee1970 100644
--- a/samples/dialogs/dialogs.h
+++ b/samples/dialogs/dialogs.h
@@ -380,7 +380,13 @@ public:
void MultiChoice(wxCommandEvent& event);
#endif // wxUSE_CHOICEDLG
+#if wxUSE_REARRANGECTRL
void Rearrange(wxCommandEvent& event);
+#endif // wxUSE_REARRANGECTRL
+
+#if wxUSE_ADDREMOVECTRL
+ void AddRemove(wxCommandEvent& event);
+#endif // wxUSE_ADDREMOVECTRL
#if wxUSE_TEXTDLG
void LineEntry(wxCommandEvent& event);
@@ -546,6 +552,7 @@ enum
DIALOGS_SINGLE_CHOICE,
DIALOGS_MULTI_CHOICE,
DIALOGS_REARRANGE,
+ DIALOGS_ADDREMOVE,
DIALOGS_LINE_ENTRY,
DIALOGS_TEXT_ENTRY,
DIALOGS_PASSWORD_ENTRY,
diff --git a/samples/notebook/notebook.cpp b/samples/notebook/notebook.cpp
index 14e05fee44..9bb39f8704 100644
--- a/samples/notebook/notebook.cpp
+++ b/samples/notebook/notebook.cpp
@@ -884,6 +884,7 @@ void MyFrame::OnDeleteLastPage(wxCommandEvent& WXUNUSED(event))
void MyFrame::OnNextPage(wxCommandEvent& WXUNUSED(event))
{
+ wxFindWindowAtPoint(wxPoint(0,0));
wxBookCtrlBase *currBook = GetCurrentBook();
if ( currBook )
diff --git a/setup.h.in b/setup.h.in
index c975db80a1..49ff8a030c 100644
--- a/setup.h.in
+++ b/setup.h.in
@@ -437,6 +437,8 @@
#define wxUSE_REARRANGECTRL 0
+#define wxUSE_ADDREMOVECTRL 0
+
#define wxUSE_ACCEL 0
diff --git a/src/common/addremovectrl.cpp b/src/common/addremovectrl.cpp
new file mode 100644
index 0000000000..dd8b8fb940
--- /dev/null
+++ b/src/common/addremovectrl.cpp
@@ -0,0 +1,92 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/common/addremovectrl.cpp
+// Purpose: wxAddRemoveCtrl implementation.
+// Author: Vadim Zeitlin
+// Created: 2015-01-29
+// Copyright: (c) 2015 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_ADDREMOVECTRL
+
+#ifndef WX_PRECOMP
+#endif // WX_PRECOMP
+
+#include "wx/addremovectrl.h"
+
+#include "wx/private/addremovectrl.h"
+
+// ============================================================================
+// wxAddRemoveCtrl implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// common part
+// ----------------------------------------------------------------------------
+
+extern
+WXDLLIMPEXP_DATA_CORE(const char) wxAddRemoveCtrlNameStr[] = "wxAddRemoveCtrl";
+
+bool
+wxAddRemoveCtrl::Create(wxWindow* parent,
+ wxWindowID winid,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString& name)
+{
+ if ( !wxPanel::Create(parent, winid, pos, size, style, name) )
+ return false;
+
+ // We don't do anything here, the buttons are created when we're given the
+ // adaptor to use them with in SetAdaptor().
+ return true;
+}
+
+wxAddRemoveCtrl::~wxAddRemoveCtrl()
+{
+ delete m_impl;
+}
+
+void wxAddRemoveCtrl::SetAdaptor(wxAddRemoveAdaptor* adaptor)
+{
+ wxCHECK_RET( !m_impl, wxS("should be only called once") );
+
+ wxCHECK_RET( adaptor, wxS("should have a valid adaptor") );
+
+ wxWindow* const ctrlItems = adaptor->GetItemsCtrl();
+ wxCHECK_RET( ctrlItems, wxS("should have a valid items control") );
+
+ m_impl = new wxAddRemoveImpl(adaptor, this, ctrlItems);
+}
+
+void
+wxAddRemoveCtrl::SetButtonsToolTips(const wxString& addtip,
+ const wxString& removetip)
+{
+ wxCHECK_RET( m_impl, wxS("can only be called after SetAdaptor()") );
+
+ m_impl->SetButtonsToolTips(addtip, removetip);
+}
+
+wxSize wxAddRemoveCtrl::DoGetBestClientSize() const
+{
+ return m_impl ? m_impl->GetBestClientSize() : wxDefaultSize;
+}
+
+#endif // wxUSE_ADDREMOVECTRL