From 401e3b6e5f50f15571b86297b5d1e3f55c473f6f Mon Sep 17 00:00:00 2001
From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= <vslavik@fastmail.fm>
Date: Sun, 15 Aug 2004 15:56:56 +0000
Subject: [PATCH] added stock buttons support

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 Makefile.in                     |  53 ++++++++--
 build/bakefiles/files.bkl       |   3 +
 build/msw/makefile.bcc          |  61 ++++++++++-
 build/msw/makefile.gcc          |  59 ++++++++++-
 build/msw/makefile.vc           |  59 ++++++++++-
 build/msw/makefile.wat          |  59 ++++++++++-
 build/msw/wx_core.dsp           |  12 +++
 docs/changes.txt                |   1 +
 docs/latex/wx/button.tex        |  37 ++++++-
 docs/latex/wx/constant.tex      |   1 +
 docs/latex/wx/stockitems.tex    |  56 ++++++++++
 include/wx/button.h             |  16 +++
 include/wx/cocoa/button.h       |  22 ++++
 include/wx/gtk/button.h         |  24 ++++-
 include/wx/gtk1/button.h        |  24 ++++-
 include/wx/mac/carbon/button.h  |  21 ++++
 include/wx/mac/classic/button.h |  21 ++++
 include/wx/motif/button.h       |  21 ++++
 include/wx/msw/button.h         |  21 ++++
 include/wx/os2/button.h         |  21 ++++
 include/wx/stockitem.h          |  96 +++++++++++++++++
 include/wx/univ/button.h        |  23 ++++
 src/common/buttoncmn.cpp        |  63 +++++++++++
 src/common/stockitem.cpp        | 181 ++++++++++++++++++++++++++++++++
 src/wxWindows.dsp               |  12 +++
 25 files changed, 943 insertions(+), 24 deletions(-)
 create mode 100644 docs/latex/wx/stockitems.tex
 create mode 100644 include/wx/stockitem.h
 create mode 100644 src/common/buttoncmn.cpp
 create mode 100644 src/common/stockitem.cpp

diff --git a/Makefile.in b/Makefile.in
index adcb0af1fe..de957ddfc9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -62,7 +62,7 @@ HOST_SUFFIX = @HOST_SUFFIX@
 DESTDIR = 
 WX_VERSION = 2.5.2
 LIBDIRNAME = $(top_builddir)lib
-WXREGEX_CFLAGS =       $(____SHARED) $(CPPFLAGS) $(CFLAGS)
+WXREGEX_CFLAGS = -D__WX$(TOOLKIT)__ $(____SHARED) $(CPPFLAGS) $(CFLAGS)
 WXREGEX_OBJECTS =  \
 	wxregex_regcomp.o \
 	wxregex_regexec.o \
@@ -1047,10 +1047,10 @@ COND_WXUSE_REGEX_BUILTIN___wxregex___depname = \
 @COND_PLATFORM_UNIX_1@PLUGIN_VERSION0 = 2.5.2
 @COND_PLATFORM_UNIX_0@PLUGVERDELIM = 
 @COND_PLATFORM_UNIX_1@PLUGVERDELIM = -
-@COND_BUILD_DEBUG_UNICODE_0@PLUGINSUFFIX = _d
-@COND_BUILD_DEBUG_UNICODE_1@PLUGINSUFFIX = _ud
+@COND_BUILD_DEBUG_UNICODE_0@PLUGINSUFFIX = d
+@COND_BUILD_DEBUG_UNICODE_1@PLUGINSUFFIX = ud
 @COND_BUILD_RELEASE_UNICODE_0@PLUGINSUFFIX = 
-@COND_BUILD_RELEASE_UNICODE_1@PLUGINSUFFIX = _u
+@COND_BUILD_RELEASE_UNICODE_1@PLUGINSUFFIX = u
 @COND_TOOLKIT_WINCE@BASE_WINCE_SRC = src/msw/wince/time.cpp
 @COND_TOOLKIT_WINCE@BASE_WINCE_HDR = wx/msw/wince/time.h
 @COND_TOOLKIT_WINCE@NET_WINCE_SRC = src/msw/wince/net.cpp
@@ -1541,7 +1541,6 @@ COND_TOOLKIT_MOTIF_GUI_HDR =  \
 	wx/motif/private.h \
 	wx/motif/radiobox.h \
 	wx/motif/radiobut.h \
-	wx/motif/region.h \
 	wx/motif/scrolbar.h \
 	wx/motif/slider.h \
 	wx/motif/spinbutt.h \
@@ -2031,6 +2030,7 @@ COND_USE_GUI_1_ALL_GUI_HEADERS =  \
 	wx/statbox.h \
 	wx/stattext.h \
 	wx/statusbr.h \
+	wx/stockitem.h \
 	wx/textctrl.h \
 	wx/textdlg.h \
 	wx/toolbar.h \
@@ -2340,6 +2340,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS =  \
 	monodll_artprov.o \
 	monodll_artstd.o \
 	monodll_bmpbase.o \
+	monodll_buttoncmn.o \
 	monodll_bookctrl.o \
 	monodll_choiccmn.o \
 	monodll_clipcmn.o \
@@ -2398,6 +2399,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS =  \
 	monodll_settcmn.o \
 	monodll_sizer.o \
 	monodll_statbar.o \
+	monodll_stockitem.o \
 	monodll_tbarbase.o \
 	monodll_textcmn.o \
 	monodll_timercmn.o \
@@ -2486,6 +2488,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS =  \
 	monodll_artprov.o \
 	monodll_artstd.o \
 	monodll_bmpbase.o \
+	monodll_buttoncmn.o \
 	monodll_bookctrl.o \
 	monodll_choiccmn.o \
 	monodll_clipcmn.o \
@@ -2544,6 +2547,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS =  \
 	monodll_settcmn.o \
 	monodll_sizer.o \
 	monodll_statbar.o \
+	monodll_stockitem.o \
 	monodll_tbarbase.o \
 	monodll_textcmn.o \
 	monodll_timercmn.o \
@@ -3214,6 +3218,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 =  \
 	monolib_artprov.o \
 	monolib_artstd.o \
 	monolib_bmpbase.o \
+	monolib_buttoncmn.o \
 	monolib_bookctrl.o \
 	monolib_choiccmn.o \
 	monolib_clipcmn.o \
@@ -3272,6 +3277,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 =  \
 	monolib_settcmn.o \
 	monolib_sizer.o \
 	monolib_statbar.o \
+	monolib_stockitem.o \
 	monolib_tbarbase.o \
 	monolib_textcmn.o \
 	monolib_timercmn.o \
@@ -3360,6 +3366,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 =  \
 	monolib_artprov.o \
 	monolib_artstd.o \
 	monolib_bmpbase.o \
+	monolib_buttoncmn.o \
 	monolib_bookctrl.o \
 	monolib_choiccmn.o \
 	monolib_clipcmn.o \
@@ -3418,6 +3425,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 =  \
 	monolib_settcmn.o \
 	monolib_sizer.o \
 	monolib_statbar.o \
+	monolib_stockitem.o \
 	monolib_tbarbase.o \
 	monolib_textcmn.o \
 	monolib_timercmn.o \
@@ -4274,6 +4282,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 =  \
 	coredll_artprov.o \
 	coredll_artstd.o \
 	coredll_bmpbase.o \
+	coredll_buttoncmn.o \
 	coredll_bookctrl.o \
 	coredll_choiccmn.o \
 	coredll_clipcmn.o \
@@ -4332,6 +4341,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 =  \
 	coredll_settcmn.o \
 	coredll_sizer.o \
 	coredll_statbar.o \
+	coredll_stockitem.o \
 	coredll_tbarbase.o \
 	coredll_textcmn.o \
 	coredll_timercmn.o \
@@ -4420,6 +4430,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 =  \
 	coredll_artprov.o \
 	coredll_artstd.o \
 	coredll_bmpbase.o \
+	coredll_buttoncmn.o \
 	coredll_bookctrl.o \
 	coredll_choiccmn.o \
 	coredll_clipcmn.o \
@@ -4478,6 +4489,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 =  \
 	coredll_settcmn.o \
 	coredll_sizer.o \
 	coredll_statbar.o \
+	coredll_stockitem.o \
 	coredll_tbarbase.o \
 	coredll_textcmn.o \
 	coredll_timercmn.o \
@@ -5001,6 +5013,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 =  \
 	corelib_artprov.o \
 	corelib_artstd.o \
 	corelib_bmpbase.o \
+	corelib_buttoncmn.o \
 	corelib_bookctrl.o \
 	corelib_choiccmn.o \
 	corelib_clipcmn.o \
@@ -5059,6 +5072,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 =  \
 	corelib_settcmn.o \
 	corelib_sizer.o \
 	corelib_statbar.o \
+	corelib_stockitem.o \
 	corelib_tbarbase.o \
 	corelib_textcmn.o \
 	corelib_timercmn.o \
@@ -5147,6 +5161,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 =  \
 	corelib_artprov.o \
 	corelib_artstd.o \
 	corelib_bmpbase.o \
+	corelib_buttoncmn.o \
 	corelib_bookctrl.o \
 	corelib_choiccmn.o \
 	corelib_clipcmn.o \
@@ -5205,6 +5220,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 =  \
 	corelib_settcmn.o \
 	corelib_sizer.o \
 	corelib_statbar.o \
+	corelib_stockitem.o \
 	corelib_tbarbase.o \
 	corelib_textcmn.o \
 	corelib_timercmn.o \
@@ -7462,7 +7478,8 @@ install-wxconfig:
 	$(INSTALL_DIR) $(DESTDIR)$(libdir)/wx/config
 	$(INSTALL_PROGRAM) lib/wx/config/@WXCONFIG_DATA_FILE@ $(DESTDIR)$(libdir)/wx/config
 	(cd $(DESTDIR)$(libdir)/wx/config && rm -f $(TOOLCHAIN_NAME) && $(LN_S) @WXCONFIG_DATA_FILE@ $(TOOLCHAIN_NAME))
-	$(INSTALL_PROGRAM) wx-config $(DESTDIR)$(bindir)
+	$(INSTALL_PROGRAM) wx-config-2.5 $(DESTDIR)$(bindir)
+	(cd $(DESTDIR)$(bindir) && rm -f wx-config && $(LN_S) wx-config-2.5 wx-config)
 	(cd $(DESTDIR)$(bindir) && rm -f wx$(TOOLCHAIN_NAME)-config && $(LN_S) wx-config wx$(TOOLCHAIN_NAME)-config)
 
 locale_install: 
@@ -10524,6 +10541,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_bmpbase.o: $(srcdir)/src/common/bmpbase.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $<
 
+@COND_USE_GUI_1@monodll_buttoncmn.o: $(srcdir)/src/common/buttoncmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $<
+
 @COND_USE_GUI_1@monodll_bookctrl.o: $(srcdir)/src/common/bookctrl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $<
 
@@ -10698,6 +10718,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_statbar.o: $(srcdir)/src/common/statbar.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $<
 
+@COND_USE_GUI_1@monodll_stockitem.o: $(srcdir)/src/common/stockitem.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $<
+
 @COND_USE_GUI_1@monodll_tbarbase.o: $(srcdir)/src/common/tbarbase.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $<
 
@@ -13503,6 +13526,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_bmpbase.o: $(srcdir)/src/common/bmpbase.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $<
 
+@COND_USE_GUI_1@monolib_buttoncmn.o: $(srcdir)/src/common/buttoncmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $<
+
 @COND_USE_GUI_1@monolib_bookctrl.o: $(srcdir)/src/common/bookctrl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $<
 
@@ -13677,6 +13703,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_statbar.o: $(srcdir)/src/common/statbar.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $<
 
+@COND_USE_GUI_1@monolib_stockitem.o: $(srcdir)/src/common/stockitem.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $<
+
 @COND_USE_GUI_1@monolib_tbarbase.o: $(srcdir)/src/common/tbarbase.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $<
 
@@ -16782,6 +16811,9 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@coredll_bmpbase.o: $(srcdir)/src/common/bmpbase.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $<
 
+@COND_USE_GUI_1@coredll_buttoncmn.o: $(srcdir)/src/common/buttoncmn.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $<
+
 @COND_USE_GUI_1@coredll_bookctrl.o: $(srcdir)/src/common/bookctrl.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $<
 
@@ -16956,6 +16988,9 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@coredll_statbar.o: $(srcdir)/src/common/statbar.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $<
 
+@COND_USE_GUI_1@coredll_stockitem.o: $(srcdir)/src/common/stockitem.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $<
+
 @COND_USE_GUI_1@coredll_tbarbase.o: $(srcdir)/src/common/tbarbase.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $<
 
@@ -19215,6 +19250,9 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@corelib_bmpbase.o: $(srcdir)/src/common/bmpbase.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $<
 
+@COND_USE_GUI_1@corelib_buttoncmn.o: $(srcdir)/src/common/buttoncmn.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $<
+
 @COND_USE_GUI_1@corelib_bookctrl.o: $(srcdir)/src/common/bookctrl.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $<
 
@@ -19389,6 +19427,9 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@corelib_statbar.o: $(srcdir)/src/common/statbar.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $<
 
+@COND_USE_GUI_1@corelib_stockitem.o: $(srcdir)/src/common/stockitem.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $<
+
 @COND_USE_GUI_1@corelib_tbarbase.o: $(srcdir)/src/common/tbarbase.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $<
 
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 7799448a1e..a9aba3332e 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -380,6 +380,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/common/artprov.cpp
     src/common/artstd.cpp
     src/common/bmpbase.cpp
+    src/common/buttoncmn.cpp
     src/common/bookctrl.cpp
     src/common/choiccmn.cpp
     src/common/clipcmn.cpp
@@ -438,6 +439,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/common/settcmn.cpp
     src/common/sizer.cpp
     src/common/statbar.cpp
+    src/common/stockitem.cpp
     src/common/tbarbase.cpp
     src/common/textcmn.cpp
     src/common/timercmn.cpp
@@ -545,6 +547,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/statbox.h
     wx/stattext.h
     wx/statusbr.h
+    wx/stockitem.h
     wx/textctrl.h
     wx/textdlg.h
     wx/toolbar.h
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index 28b123d085..95dbbd1283 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -36,8 +36,9 @@ OBJS = \
 SETUPHDIR = \
 	$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 WXREGEX_CFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
-	$(__OPTIMIZEFLAG) -tWM -I..\..\include -I$(SETUPHDIR) $(__UNICODE_DEFINE_p) \
-	-w-8008 -w-8012 -w-8057 -w-8064 -w-8066 -w-8070 $(CPPFLAGS) $(CFLAGS)
+	$(__OPTIMIZEFLAG) -tWM -I..\..\include -I$(SETUPHDIR) -D__WXMSW__ \
+	$(__UNICODE_DEFINE_p) -w-8008 -w-8012 -w-8057 -w-8064 -w-8066 -w-8070 \
+	$(CPPFLAGS) $(CFLAGS)
 WXREGEX_OBJECTS =  \
 	$(OBJS)\wxregex_regcomp.obj \
 	$(OBJS)\wxregex_regexec.obj \
@@ -984,6 +985,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_artprov.obj \
 	$(OBJS)\monodll_artstd.obj \
 	$(OBJS)\monodll_bmpbase.obj \
+	$(OBJS)\monodll_buttoncmn.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
@@ -1042,6 +1044,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_settcmn.obj \
 	$(OBJS)\monodll_sizer.obj \
 	$(OBJS)\monodll_statbar.obj \
+	$(OBJS)\monodll_stockitem.obj \
 	$(OBJS)\monodll_tbarbase.obj \
 	$(OBJS)\monodll_textcmn.obj \
 	$(OBJS)\monodll_timercmn.obj \
@@ -1177,6 +1180,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_artprov.obj \
 	$(OBJS)\monodll_artstd.obj \
 	$(OBJS)\monodll_bmpbase.obj \
+	$(OBJS)\monodll_buttoncmn.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
@@ -1235,6 +1239,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_settcmn.obj \
 	$(OBJS)\monodll_sizer.obj \
 	$(OBJS)\monodll_statbar.obj \
+	$(OBJS)\monodll_stockitem.obj \
 	$(OBJS)\monodll_tbarbase.obj \
 	$(OBJS)\monodll_textcmn.obj \
 	$(OBJS)\monodll_timercmn.obj \
@@ -1417,6 +1422,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_artprov.obj \
 	$(OBJS)\monolib_artstd.obj \
 	$(OBJS)\monolib_bmpbase.obj \
+	$(OBJS)\monolib_buttoncmn.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
@@ -1475,6 +1481,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_settcmn.obj \
 	$(OBJS)\monolib_sizer.obj \
 	$(OBJS)\monolib_statbar.obj \
+	$(OBJS)\monolib_stockitem.obj \
 	$(OBJS)\monolib_tbarbase.obj \
 	$(OBJS)\monolib_textcmn.obj \
 	$(OBJS)\monolib_timercmn.obj \
@@ -1610,6 +1617,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_artprov.obj \
 	$(OBJS)\monolib_artstd.obj \
 	$(OBJS)\monolib_bmpbase.obj \
+	$(OBJS)\monolib_buttoncmn.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
@@ -1668,6 +1676,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_settcmn.obj \
 	$(OBJS)\monolib_sizer.obj \
 	$(OBJS)\monolib_statbar.obj \
+	$(OBJS)\monolib_stockitem.obj \
 	$(OBJS)\monolib_tbarbase.obj \
 	$(OBJS)\monolib_textcmn.obj \
 	$(OBJS)\monolib_timercmn.obj \
@@ -1823,6 +1832,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_artprov.obj \
 	$(OBJS)\coredll_artstd.obj \
 	$(OBJS)\coredll_bmpbase.obj \
+	$(OBJS)\coredll_buttoncmn.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
@@ -1881,6 +1891,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_settcmn.obj \
 	$(OBJS)\coredll_sizer.obj \
 	$(OBJS)\coredll_statbar.obj \
+	$(OBJS)\coredll_stockitem.obj \
 	$(OBJS)\coredll_tbarbase.obj \
 	$(OBJS)\coredll_textcmn.obj \
 	$(OBJS)\coredll_timercmn.obj \
@@ -2016,6 +2027,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_artprov.obj \
 	$(OBJS)\coredll_artstd.obj \
 	$(OBJS)\coredll_bmpbase.obj \
+	$(OBJS)\coredll_buttoncmn.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
@@ -2074,6 +2086,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_settcmn.obj \
 	$(OBJS)\coredll_sizer.obj \
 	$(OBJS)\coredll_statbar.obj \
+	$(OBJS)\coredll_stockitem.obj \
 	$(OBJS)\coredll_tbarbase.obj \
 	$(OBJS)\coredll_textcmn.obj \
 	$(OBJS)\coredll_timercmn.obj \
@@ -2213,6 +2226,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_artprov.obj \
 	$(OBJS)\corelib_artstd.obj \
 	$(OBJS)\corelib_bmpbase.obj \
+	$(OBJS)\corelib_buttoncmn.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
@@ -2271,6 +2285,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_settcmn.obj \
 	$(OBJS)\corelib_sizer.obj \
 	$(OBJS)\corelib_statbar.obj \
+	$(OBJS)\corelib_stockitem.obj \
 	$(OBJS)\corelib_tbarbase.obj \
 	$(OBJS)\corelib_textcmn.obj \
 	$(OBJS)\corelib_timercmn.obj \
@@ -2406,6 +2421,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_artprov.obj \
 	$(OBJS)\corelib_artstd.obj \
 	$(OBJS)\corelib_bmpbase.obj \
+	$(OBJS)\corelib_buttoncmn.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
@@ -2464,6 +2480,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_settcmn.obj \
 	$(OBJS)\corelib_sizer.obj \
 	$(OBJS)\corelib_statbar.obj \
+	$(OBJS)\corelib_stockitem.obj \
 	$(OBJS)\corelib_tbarbase.obj \
 	$(OBJS)\corelib_textcmn.obj \
 	$(OBJS)\corelib_timercmn.obj \
@@ -4349,6 +4366,11 @@ $(OBJS)\monodll_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -4639,6 +4661,11 @@ $(OBJS)\monodll_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -5819,6 +5846,11 @@ $(OBJS)\monolib_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -6109,6 +6141,11 @@ $(OBJS)\monolib_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -7445,6 +7482,11 @@ $(OBJS)\coredll_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -7735,6 +7777,11 @@ $(OBJS)\coredll_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -8567,6 +8614,11 @@ $(OBJS)\corelib_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -8857,6 +8909,11 @@ $(OBJS)\corelib_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index f8591201db..ecc2470a7a 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -27,7 +27,8 @@ OBJS = \
 SETUPHDIR = \
 	$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 WXREGEX_CFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(GCCFLAGS) -DHAVE_W32API_H \
-	-I..\..\include -I$(SETUPHDIR) $(__UNICODE_DEFINE_p) $(CPPFLAGS) $(CFLAGS)
+	-I..\..\include -I$(SETUPHDIR) -D__WXMSW__ $(__UNICODE_DEFINE_p) $(CPPFLAGS) \
+	$(CFLAGS)
 WXREGEX_OBJECTS =  \
 	$(OBJS)\wxregex_regcomp.o \
 	$(OBJS)\wxregex_regexec.o \
@@ -974,6 +975,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_artprov.o \
 	$(OBJS)\monodll_artstd.o \
 	$(OBJS)\monodll_bmpbase.o \
+	$(OBJS)\monodll_buttoncmn.o \
 	$(OBJS)\monodll_bookctrl.o \
 	$(OBJS)\monodll_choiccmn.o \
 	$(OBJS)\monodll_clipcmn.o \
@@ -1032,6 +1034,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_settcmn.o \
 	$(OBJS)\monodll_sizer.o \
 	$(OBJS)\monodll_statbar.o \
+	$(OBJS)\monodll_stockitem.o \
 	$(OBJS)\monodll_tbarbase.o \
 	$(OBJS)\monodll_textcmn.o \
 	$(OBJS)\monodll_timercmn.o \
@@ -1169,6 +1172,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_artprov.o \
 	$(OBJS)\monodll_artstd.o \
 	$(OBJS)\monodll_bmpbase.o \
+	$(OBJS)\monodll_buttoncmn.o \
 	$(OBJS)\monodll_bookctrl.o \
 	$(OBJS)\monodll_choiccmn.o \
 	$(OBJS)\monodll_clipcmn.o \
@@ -1227,6 +1231,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_settcmn.o \
 	$(OBJS)\monodll_sizer.o \
 	$(OBJS)\monodll_statbar.o \
+	$(OBJS)\monodll_stockitem.o \
 	$(OBJS)\monodll_tbarbase.o \
 	$(OBJS)\monodll_textcmn.o \
 	$(OBJS)\monodll_timercmn.o \
@@ -1413,6 +1418,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_artprov.o \
 	$(OBJS)\monolib_artstd.o \
 	$(OBJS)\monolib_bmpbase.o \
+	$(OBJS)\monolib_buttoncmn.o \
 	$(OBJS)\monolib_bookctrl.o \
 	$(OBJS)\monolib_choiccmn.o \
 	$(OBJS)\monolib_clipcmn.o \
@@ -1471,6 +1477,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_settcmn.o \
 	$(OBJS)\monolib_sizer.o \
 	$(OBJS)\monolib_statbar.o \
+	$(OBJS)\monolib_stockitem.o \
 	$(OBJS)\monolib_tbarbase.o \
 	$(OBJS)\monolib_textcmn.o \
 	$(OBJS)\monolib_timercmn.o \
@@ -1608,6 +1615,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_artprov.o \
 	$(OBJS)\monolib_artstd.o \
 	$(OBJS)\monolib_bmpbase.o \
+	$(OBJS)\monolib_buttoncmn.o \
 	$(OBJS)\monolib_bookctrl.o \
 	$(OBJS)\monolib_choiccmn.o \
 	$(OBJS)\monolib_clipcmn.o \
@@ -1666,6 +1674,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_settcmn.o \
 	$(OBJS)\monolib_sizer.o \
 	$(OBJS)\monolib_statbar.o \
+	$(OBJS)\monolib_stockitem.o \
 	$(OBJS)\monolib_tbarbase.o \
 	$(OBJS)\monolib_textcmn.o \
 	$(OBJS)\monolib_timercmn.o \
@@ -1835,6 +1844,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_artprov.o \
 	$(OBJS)\coredll_artstd.o \
 	$(OBJS)\coredll_bmpbase.o \
+	$(OBJS)\coredll_buttoncmn.o \
 	$(OBJS)\coredll_bookctrl.o \
 	$(OBJS)\coredll_choiccmn.o \
 	$(OBJS)\coredll_clipcmn.o \
@@ -1893,6 +1903,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_settcmn.o \
 	$(OBJS)\coredll_sizer.o \
 	$(OBJS)\coredll_statbar.o \
+	$(OBJS)\coredll_stockitem.o \
 	$(OBJS)\coredll_tbarbase.o \
 	$(OBJS)\coredll_textcmn.o \
 	$(OBJS)\coredll_timercmn.o \
@@ -2030,6 +2041,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_artprov.o \
 	$(OBJS)\coredll_artstd.o \
 	$(OBJS)\coredll_bmpbase.o \
+	$(OBJS)\coredll_buttoncmn.o \
 	$(OBJS)\coredll_bookctrl.o \
 	$(OBJS)\coredll_choiccmn.o \
 	$(OBJS)\coredll_clipcmn.o \
@@ -2088,6 +2100,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_settcmn.o \
 	$(OBJS)\coredll_sizer.o \
 	$(OBJS)\coredll_statbar.o \
+	$(OBJS)\coredll_stockitem.o \
 	$(OBJS)\coredll_tbarbase.o \
 	$(OBJS)\coredll_textcmn.o \
 	$(OBJS)\coredll_timercmn.o \
@@ -2233,6 +2246,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_artprov.o \
 	$(OBJS)\corelib_artstd.o \
 	$(OBJS)\corelib_bmpbase.o \
+	$(OBJS)\corelib_buttoncmn.o \
 	$(OBJS)\corelib_bookctrl.o \
 	$(OBJS)\corelib_choiccmn.o \
 	$(OBJS)\corelib_clipcmn.o \
@@ -2291,6 +2305,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_settcmn.o \
 	$(OBJS)\corelib_sizer.o \
 	$(OBJS)\corelib_statbar.o \
+	$(OBJS)\corelib_stockitem.o \
 	$(OBJS)\corelib_tbarbase.o \
 	$(OBJS)\corelib_textcmn.o \
 	$(OBJS)\corelib_timercmn.o \
@@ -2428,6 +2443,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_artprov.o \
 	$(OBJS)\corelib_artstd.o \
 	$(OBJS)\corelib_bmpbase.o \
+	$(OBJS)\corelib_buttoncmn.o \
 	$(OBJS)\corelib_bookctrl.o \
 	$(OBJS)\corelib_choiccmn.o \
 	$(OBJS)\corelib_clipcmn.o \
@@ -2486,6 +2502,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_settcmn.o \
 	$(OBJS)\corelib_sizer.o \
 	$(OBJS)\corelib_statbar.o \
+	$(OBJS)\corelib_stockitem.o \
 	$(OBJS)\corelib_tbarbase.o \
 	$(OBJS)\corelib_textcmn.o \
 	$(OBJS)\corelib_timercmn.o \
@@ -4491,6 +4508,11 @@ $(OBJS)\monodll_bmpbase.o: ../../src/common/bmpbase.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_buttoncmn.o: ../../src/common/buttoncmn.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_bookctrl.o: ../../src/common/bookctrl.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $<
@@ -4781,6 +4803,11 @@ $(OBJS)\monodll_statbar.o: ../../src/common/statbar.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_stockitem.o: ../../src/common/stockitem.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_tbarbase.o: ../../src/common/tbarbase.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $<
@@ -6061,6 +6088,11 @@ $(OBJS)\monolib_bmpbase.o: ../../src/common/bmpbase.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_buttoncmn.o: ../../src/common/buttoncmn.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_bookctrl.o: ../../src/common/bookctrl.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $<
@@ -6351,6 +6383,11 @@ $(OBJS)\monolib_statbar.o: ../../src/common/statbar.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_stockitem.o: ../../src/common/stockitem.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_tbarbase.o: ../../src/common/tbarbase.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $<
@@ -7787,6 +7824,11 @@ $(OBJS)\coredll_bmpbase.o: ../../src/common/bmpbase.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_buttoncmn.o: ../../src/common/buttoncmn.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_bookctrl.o: ../../src/common/bookctrl.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $<
@@ -8077,6 +8119,11 @@ $(OBJS)\coredll_statbar.o: ../../src/common/statbar.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_stockitem.o: ../../src/common/stockitem.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_tbarbase.o: ../../src/common/tbarbase.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $<
@@ -9009,6 +9056,11 @@ $(OBJS)\corelib_bmpbase.o: ../../src/common/bmpbase.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_buttoncmn.o: ../../src/common/buttoncmn.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_bookctrl.o: ../../src/common/bookctrl.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $<
@@ -9299,6 +9351,11 @@ $(OBJS)\corelib_statbar.o: ../../src/common/statbar.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_stockitem.o: ../../src/common/stockitem.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_tbarbase.o: ../../src/common/tbarbase.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index b1f1646ae7..0dfef1ce58 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -29,7 +29,8 @@ SETUPHDIR = \
 WXREGEX_CFLAGS = /M$(__RUNTIME_LIBS)$(__DEBUGRUNTIME_3) /DWIN32 $(__DEBUGINFO) \
 	/Fd$(LIBDIRNAME)\wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).pdb \
 	$(____DEBUGRUNTIME_2_p) $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) \
-	/I..\..\include /I$(SETUPHDIR) $(__UNICODE_DEFINE_p) $(CPPFLAGS) $(CFLAGS)
+	/I..\..\include /I$(SETUPHDIR) /D__WXMSW__ $(__UNICODE_DEFINE_p) $(CPPFLAGS) \
+	$(CFLAGS)
 WXREGEX_OBJECTS =  \
 	$(OBJS)\wxregex_regcomp.obj \
 	$(OBJS)\wxregex_regexec.obj \
@@ -1181,6 +1182,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_artprov.obj \
 	$(OBJS)\monodll_artstd.obj \
 	$(OBJS)\monodll_bmpbase.obj \
+	$(OBJS)\monodll_buttoncmn.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
@@ -1239,6 +1241,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_settcmn.obj \
 	$(OBJS)\monodll_sizer.obj \
 	$(OBJS)\monodll_statbar.obj \
+	$(OBJS)\monodll_stockitem.obj \
 	$(OBJS)\monodll_tbarbase.obj \
 	$(OBJS)\monodll_textcmn.obj \
 	$(OBJS)\monodll_timercmn.obj \
@@ -1374,6 +1377,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_artprov.obj \
 	$(OBJS)\monodll_artstd.obj \
 	$(OBJS)\monodll_bmpbase.obj \
+	$(OBJS)\monodll_buttoncmn.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
@@ -1432,6 +1436,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_settcmn.obj \
 	$(OBJS)\monodll_sizer.obj \
 	$(OBJS)\monodll_statbar.obj \
+	$(OBJS)\monodll_stockitem.obj \
 	$(OBJS)\monodll_tbarbase.obj \
 	$(OBJS)\monodll_textcmn.obj \
 	$(OBJS)\monodll_timercmn.obj \
@@ -1632,6 +1637,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_artprov.obj \
 	$(OBJS)\monolib_artstd.obj \
 	$(OBJS)\monolib_bmpbase.obj \
+	$(OBJS)\monolib_buttoncmn.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
@@ -1690,6 +1696,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_settcmn.obj \
 	$(OBJS)\monolib_sizer.obj \
 	$(OBJS)\monolib_statbar.obj \
+	$(OBJS)\monolib_stockitem.obj \
 	$(OBJS)\monolib_tbarbase.obj \
 	$(OBJS)\monolib_textcmn.obj \
 	$(OBJS)\monolib_timercmn.obj \
@@ -1825,6 +1832,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_artprov.obj \
 	$(OBJS)\monolib_artstd.obj \
 	$(OBJS)\monolib_bmpbase.obj \
+	$(OBJS)\monolib_buttoncmn.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
@@ -1883,6 +1891,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_settcmn.obj \
 	$(OBJS)\monolib_sizer.obj \
 	$(OBJS)\monolib_statbar.obj \
+	$(OBJS)\monolib_stockitem.obj \
 	$(OBJS)\monolib_tbarbase.obj \
 	$(OBJS)\monolib_textcmn.obj \
 	$(OBJS)\monolib_timercmn.obj \
@@ -2128,6 +2137,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_artprov.obj \
 	$(OBJS)\coredll_artstd.obj \
 	$(OBJS)\coredll_bmpbase.obj \
+	$(OBJS)\coredll_buttoncmn.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
@@ -2186,6 +2196,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_settcmn.obj \
 	$(OBJS)\coredll_sizer.obj \
 	$(OBJS)\coredll_statbar.obj \
+	$(OBJS)\coredll_stockitem.obj \
 	$(OBJS)\coredll_tbarbase.obj \
 	$(OBJS)\coredll_textcmn.obj \
 	$(OBJS)\coredll_timercmn.obj \
@@ -2321,6 +2332,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_artprov.obj \
 	$(OBJS)\coredll_artstd.obj \
 	$(OBJS)\coredll_bmpbase.obj \
+	$(OBJS)\coredll_buttoncmn.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
@@ -2379,6 +2391,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_settcmn.obj \
 	$(OBJS)\coredll_sizer.obj \
 	$(OBJS)\coredll_statbar.obj \
+	$(OBJS)\coredll_stockitem.obj \
 	$(OBJS)\coredll_tbarbase.obj \
 	$(OBJS)\coredll_textcmn.obj \
 	$(OBJS)\coredll_timercmn.obj \
@@ -2536,6 +2549,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_artprov.obj \
 	$(OBJS)\corelib_artstd.obj \
 	$(OBJS)\corelib_bmpbase.obj \
+	$(OBJS)\corelib_buttoncmn.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
@@ -2594,6 +2608,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_settcmn.obj \
 	$(OBJS)\corelib_sizer.obj \
 	$(OBJS)\corelib_statbar.obj \
+	$(OBJS)\corelib_stockitem.obj \
 	$(OBJS)\corelib_tbarbase.obj \
 	$(OBJS)\corelib_textcmn.obj \
 	$(OBJS)\corelib_timercmn.obj \
@@ -2729,6 +2744,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_artprov.obj \
 	$(OBJS)\corelib_artstd.obj \
 	$(OBJS)\corelib_bmpbase.obj \
+	$(OBJS)\corelib_buttoncmn.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
@@ -2787,6 +2803,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_settcmn.obj \
 	$(OBJS)\corelib_sizer.obj \
 	$(OBJS)\corelib_statbar.obj \
+	$(OBJS)\corelib_stockitem.obj \
 	$(OBJS)\corelib_tbarbase.obj \
 	$(OBJS)\corelib_textcmn.obj \
 	$(OBJS)\corelib_timercmn.obj \
@@ -4894,6 +4911,11 @@ $(OBJS)\monodll_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -5184,6 +5206,11 @@ $(OBJS)\monodll_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -6364,6 +6391,11 @@ $(OBJS)\monolib_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -6654,6 +6686,11 @@ $(OBJS)\monolib_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -7990,6 +8027,11 @@ $(OBJS)\coredll_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -8280,6 +8322,11 @@ $(OBJS)\coredll_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -9112,6 +9159,11 @@ $(OBJS)\corelib_bmpbase.obj: ..\..\src\common\bmpbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_buttoncmn.obj: ..\..\src\common\buttoncmn.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_bookctrl.obj: ..\..\src\common\bookctrl.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -9402,6 +9454,11 @@ $(OBJS)\corelib_statbar.obj: ..\..\src\common\statbar.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_stockitem.obj: ..\..\src\common\stockitem.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_tbarbase.obj: ..\..\src\common\tbarbase.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index 2be53976b6..73e24f88a0 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -237,6 +237,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_artprov.obj &
 	$(OBJS)\monodll_artstd.obj &
 	$(OBJS)\monodll_bmpbase.obj &
+	$(OBJS)\monodll_buttoncmn.obj &
 	$(OBJS)\monodll_bookctrl.obj &
 	$(OBJS)\monodll_choiccmn.obj &
 	$(OBJS)\monodll_clipcmn.obj &
@@ -295,6 +296,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_settcmn.obj &
 	$(OBJS)\monodll_sizer.obj &
 	$(OBJS)\monodll_statbar.obj &
+	$(OBJS)\monodll_stockitem.obj &
 	$(OBJS)\monodll_tbarbase.obj &
 	$(OBJS)\monodll_textcmn.obj &
 	$(OBJS)\monodll_timercmn.obj &
@@ -432,6 +434,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_artprov.obj &
 	$(OBJS)\monodll_artstd.obj &
 	$(OBJS)\monodll_bmpbase.obj &
+	$(OBJS)\monodll_buttoncmn.obj &
 	$(OBJS)\monodll_bookctrl.obj &
 	$(OBJS)\monodll_choiccmn.obj &
 	$(OBJS)\monodll_clipcmn.obj &
@@ -490,6 +493,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_settcmn.obj &
 	$(OBJS)\monodll_sizer.obj &
 	$(OBJS)\monodll_statbar.obj &
+	$(OBJS)\monodll_stockitem.obj &
 	$(OBJS)\monodll_tbarbase.obj &
 	$(OBJS)\monodll_textcmn.obj &
 	$(OBJS)\monodll_timercmn.obj &
@@ -679,6 +683,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_artprov.obj &
 	$(OBJS)\monolib_artstd.obj &
 	$(OBJS)\monolib_bmpbase.obj &
+	$(OBJS)\monolib_buttoncmn.obj &
 	$(OBJS)\monolib_bookctrl.obj &
 	$(OBJS)\monolib_choiccmn.obj &
 	$(OBJS)\monolib_clipcmn.obj &
@@ -737,6 +742,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_settcmn.obj &
 	$(OBJS)\monolib_sizer.obj &
 	$(OBJS)\monolib_statbar.obj &
+	$(OBJS)\monolib_stockitem.obj &
 	$(OBJS)\monolib_tbarbase.obj &
 	$(OBJS)\monolib_textcmn.obj &
 	$(OBJS)\monolib_timercmn.obj &
@@ -874,6 +880,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_artprov.obj &
 	$(OBJS)\monolib_artstd.obj &
 	$(OBJS)\monolib_bmpbase.obj &
+	$(OBJS)\monolib_buttoncmn.obj &
 	$(OBJS)\monolib_bookctrl.obj &
 	$(OBJS)\monolib_choiccmn.obj &
 	$(OBJS)\monolib_clipcmn.obj &
@@ -932,6 +939,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_settcmn.obj &
 	$(OBJS)\monolib_sizer.obj &
 	$(OBJS)\monolib_statbar.obj &
+	$(OBJS)\monolib_stockitem.obj &
 	$(OBJS)\monolib_tbarbase.obj &
 	$(OBJS)\monolib_textcmn.obj &
 	$(OBJS)\monolib_timercmn.obj &
@@ -1107,6 +1115,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_artprov.obj &
 	$(OBJS)\coredll_artstd.obj &
 	$(OBJS)\coredll_bmpbase.obj &
+	$(OBJS)\coredll_buttoncmn.obj &
 	$(OBJS)\coredll_bookctrl.obj &
 	$(OBJS)\coredll_choiccmn.obj &
 	$(OBJS)\coredll_clipcmn.obj &
@@ -1165,6 +1174,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_settcmn.obj &
 	$(OBJS)\coredll_sizer.obj &
 	$(OBJS)\coredll_statbar.obj &
+	$(OBJS)\coredll_stockitem.obj &
 	$(OBJS)\coredll_tbarbase.obj &
 	$(OBJS)\coredll_textcmn.obj &
 	$(OBJS)\coredll_timercmn.obj &
@@ -1302,6 +1312,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_artprov.obj &
 	$(OBJS)\coredll_artstd.obj &
 	$(OBJS)\coredll_bmpbase.obj &
+	$(OBJS)\coredll_buttoncmn.obj &
 	$(OBJS)\coredll_bookctrl.obj &
 	$(OBJS)\coredll_choiccmn.obj &
 	$(OBJS)\coredll_clipcmn.obj &
@@ -1360,6 +1371,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_settcmn.obj &
 	$(OBJS)\coredll_sizer.obj &
 	$(OBJS)\coredll_statbar.obj &
+	$(OBJS)\coredll_stockitem.obj &
 	$(OBJS)\coredll_tbarbase.obj &
 	$(OBJS)\coredll_textcmn.obj &
 	$(OBJS)\coredll_timercmn.obj &
@@ -1507,6 +1519,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_artprov.obj &
 	$(OBJS)\corelib_artstd.obj &
 	$(OBJS)\corelib_bmpbase.obj &
+	$(OBJS)\corelib_buttoncmn.obj &
 	$(OBJS)\corelib_bookctrl.obj &
 	$(OBJS)\corelib_choiccmn.obj &
 	$(OBJS)\corelib_clipcmn.obj &
@@ -1565,6 +1578,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_settcmn.obj &
 	$(OBJS)\corelib_sizer.obj &
 	$(OBJS)\corelib_statbar.obj &
+	$(OBJS)\corelib_stockitem.obj &
 	$(OBJS)\corelib_tbarbase.obj &
 	$(OBJS)\corelib_textcmn.obj &
 	$(OBJS)\corelib_timercmn.obj &
@@ -1702,6 +1716,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_artprov.obj &
 	$(OBJS)\corelib_artstd.obj &
 	$(OBJS)\corelib_bmpbase.obj &
+	$(OBJS)\corelib_buttoncmn.obj &
 	$(OBJS)\corelib_bookctrl.obj &
 	$(OBJS)\corelib_choiccmn.obj &
 	$(OBJS)\corelib_clipcmn.obj &
@@ -1760,6 +1775,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_settcmn.obj &
 	$(OBJS)\corelib_sizer.obj &
 	$(OBJS)\corelib_statbar.obj &
+	$(OBJS)\corelib_stockitem.obj &
 	$(OBJS)\corelib_tbarbase.obj &
 	$(OBJS)\corelib_textcmn.obj &
 	$(OBJS)\corelib_timercmn.obj &
@@ -2030,7 +2046,8 @@ OBJS = &
 SETUPHDIR = &
 	$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 WXREGEX_CFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) -bm $(__RUNTIME_LIBS) &
-	-i=..\..\include -i=$(SETUPHDIR) $(__UNICODE_DEFINE_p) $(CPPFLAGS) $(CFLAGS)
+	-i=..\..\include -i=$(SETUPHDIR) -d__WXMSW__ $(__UNICODE_DEFINE_p) &
+	$(CPPFLAGS) $(CFLAGS)
 WXREGEX_OBJECTS =  &
 	$(OBJS)\wxregex_regcomp.obj &
 	$(OBJS)\wxregex_regexec.obj &
@@ -4679,6 +4696,11 @@ $(OBJS)\monodll_bmpbase.obj :  .AUTODEPEND ..\..\src\common\bmpbase.cpp
 	$(CXX) -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_buttoncmn.obj :  .AUTODEPEND ..\..\src\common\buttoncmn.cpp
+	$(CXX) -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_bookctrl.obj :  .AUTODEPEND ..\..\src\common\bookctrl.cpp
 	$(CXX) -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -4969,6 +4991,11 @@ $(OBJS)\monodll_statbar.obj :  .AUTODEPEND ..\..\src\common\statbar.cpp
 	$(CXX) -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_stockitem.obj :  .AUTODEPEND ..\..\src\common\stockitem.cpp
+	$(CXX) -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_tbarbase.obj :  .AUTODEPEND ..\..\src\common\tbarbase.cpp
 	$(CXX) -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -6249,6 +6276,11 @@ $(OBJS)\monolib_bmpbase.obj :  .AUTODEPEND ..\..\src\common\bmpbase.cpp
 	$(CXX) -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_buttoncmn.obj :  .AUTODEPEND ..\..\src\common\buttoncmn.cpp
+	$(CXX) -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_bookctrl.obj :  .AUTODEPEND ..\..\src\common\bookctrl.cpp
 	$(CXX) -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -6539,6 +6571,11 @@ $(OBJS)\monolib_statbar.obj :  .AUTODEPEND ..\..\src\common\statbar.cpp
 	$(CXX) -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_stockitem.obj :  .AUTODEPEND ..\..\src\common\stockitem.cpp
+	$(CXX) -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_tbarbase.obj :  .AUTODEPEND ..\..\src\common\tbarbase.cpp
 	$(CXX) -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -7975,6 +8012,11 @@ $(OBJS)\coredll_bmpbase.obj :  .AUTODEPEND ..\..\src\common\bmpbase.cpp
 	$(CXX) -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\coredll_buttoncmn.obj :  .AUTODEPEND ..\..\src\common\buttoncmn.cpp
+	$(CXX) -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\coredll_bookctrl.obj :  .AUTODEPEND ..\..\src\common\bookctrl.cpp
 	$(CXX) -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -8265,6 +8307,11 @@ $(OBJS)\coredll_statbar.obj :  .AUTODEPEND ..\..\src\common\statbar.cpp
 	$(CXX) -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\coredll_stockitem.obj :  .AUTODEPEND ..\..\src\common\stockitem.cpp
+	$(CXX) -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\coredll_tbarbase.obj :  .AUTODEPEND ..\..\src\common\tbarbase.cpp
 	$(CXX) -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -9197,6 +9244,11 @@ $(OBJS)\corelib_bmpbase.obj :  .AUTODEPEND ..\..\src\common\bmpbase.cpp
 	$(CXX) -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\corelib_buttoncmn.obj :  .AUTODEPEND ..\..\src\common\buttoncmn.cpp
+	$(CXX) -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\corelib_bookctrl.obj :  .AUTODEPEND ..\..\src\common\bookctrl.cpp
 	$(CXX) -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -9487,6 +9539,11 @@ $(OBJS)\corelib_statbar.obj :  .AUTODEPEND ..\..\src\common\statbar.cpp
 	$(CXX) -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\corelib_stockitem.obj :  .AUTODEPEND ..\..\src\common\stockitem.cpp
+	$(CXX) -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\corelib_tbarbase.obj :  .AUTODEPEND ..\..\src\common\tbarbase.cpp
 	$(CXX) -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index 98d69f6f83..09507d91ad 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -476,6 +476,10 @@ SOURCE=..\..\src\common\bookctrl.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\buttoncmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\choiccmn.cpp
 # End Source File
 # Begin Source File
@@ -716,6 +720,10 @@ SOURCE=..\..\src\common\statbar.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\stockitem.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\tbarbase.cpp
 # End Source File
 # Begin Source File
@@ -8578,6 +8586,10 @@ SOURCE=..\..\include\wx\statusbr.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\stockitem.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\tab.h
 # End Source File
 # Begin Source File
diff --git a/docs/changes.txt b/docs/changes.txt
index 275767c36c..8e988021d4 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -222,6 +222,7 @@ All (GUI):
 - implemented wxListCtrl::FindItem() for non-MSW (Robin Stoll)
 - added status bar fields styles support (Tim Kosse)
 - added samples/splash
+- added support for stock buttons
 
 Unix:
 
diff --git a/docs/latex/wx/button.tex b/docs/latex/wx/button.tex
index 92dcfb225f..8dd1d35f22 100644
--- a/docs/latex/wx/button.tex
+++ b/docs/latex/wx/button.tex
@@ -20,10 +20,10 @@ almost any other window.
 
 \twocolwidtha{5cm}%
 \begin{twocollist}\itemsep=0pt
-\twocolitem{\windowstyle{wxBU\_LEFT}}{Left-justifies the label. Windows only.}
-\twocolitem{\windowstyle{wxBU\_TOP}}{Aligns the label to the top of the button. Windows only.}
-\twocolitem{\windowstyle{wxBU\_RIGHT}}{Right-justifies the bitmap label. Windows only.}
-\twocolitem{\windowstyle{wxBU\_BOTTOM}}{Aligns the label to the bottom of the button. Windows only.}
+\twocolitem{\windowstyle{wxBU\_LEFT}}{Left-justifies the label. Windows and GTK+ only.}
+\twocolitem{\windowstyle{wxBU\_TOP}}{Aligns the label to the top of the button. Windows and GTK+ only.}
+\twocolitem{\windowstyle{wxBU\_RIGHT}}{Right-justifies the bitmap label. Windows and GTK+ only.}
+\twocolitem{\windowstyle{wxBU\_BOTTOM}}{Aligns the label to the bottom of the button. Windows and GTK+ only.}
 \twocolitem{\windowstyle{wxBU\_EXACTFIT}}{Creates the button as small as possible instead of making it of the standard size (which is the default behaviour ).}
 \twocolitem{\windowstyle{wxNO\_BORDER}}{Creates a flat button. Windows and GTK+ only.}
 \end{twocollist}
@@ -54,8 +54,20 @@ Default constructor.
 \param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp
 \param{long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}}
 
+\func{}{wxButton}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id},
+\param{wxStockItemID}{ stock},\rtfsp
+\param{const wxString\& }{descriptiveLabel = wxEmptyString},\rtfsp
+\param{const wxPoint\& }{pos},\rtfsp
+\param{long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}}
+
 Constructor, creating and showing a button.
 
+The second form is used to create {\em stock} button. Stock buttons are
+commonly used buttons such as OK or Cancel. They have standard label and
+dimensions and may have different appearance on some platforms (e.g. GTK+ 2
+decorates them with icons). Using this from is preferred way of creating
+standard buttons.
+
 \wxheading{Parameters}
 
 \docparam{parent}{Parent window. Must not be NULL.}
@@ -75,6 +87,14 @@ appropriately for the text.}
 
 \docparam{name}{Window name.}
 
+\docparam{stock}{Stock ID of the stock button to create. See the
+\helpref{list of possible values}{stockitems}.}
+
+\docparam{descriptiveLabel}{Optional label to be used on platforms where
+standard buttons have descriptive rather than generic labels. Mac is one such
+platforms, well-behaved Mac apps should use descriptive labels (e.g. "Save"
+and "Don't Save" instead of "OK" and "Cancel").}
+
 \wxheading{See also}
 
 \helpref{wxButton::Create}{wxbuttoncreate}, \helpref{wxValidator}{wxvalidator}
@@ -91,7 +111,14 @@ Destructor, destroying the button.
 \param{const wxPoint\& }{pos}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp
 \param{long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}}
 
-Button creation function for two-step creation. For more details, see \helpref{wxButton::wxButton}{wxbuttonconstr}.
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id},
+\param{wxStockItemID}{ stock},\rtfsp
+\param{const wxString\& }{descriptiveLabel = wxEmptyString},\rtfsp
+\param{const wxPoint\& }{pos},\rtfsp
+\param{long}{ style = 0}, \param{const wxValidator\& }{validator}, \param{const wxString\& }{name = ``button"}}
+
+Button creation function for two-step creation. For more details, see
+\helpref{wxButton::wxButton}{wxbuttonconstr}.
 
 \membersection{wxButton::GetLabel}\label{wxbuttongetlabel}
 
diff --git a/docs/latex/wx/constant.tex b/docs/latex/wx/constant.tex
index 082dbf6efd..8eb8452dfa 100644
--- a/docs/latex/wx/constant.tex
+++ b/docs/latex/wx/constant.tex
@@ -8,3 +8,4 @@ This chapter describes the constants defined by wxWidgets.
 \input stdevtid.tex
 \input keycode.tex
 \input langcodes.tex
+\input stockitems.tex
diff --git a/docs/latex/wx/stockitems.tex b/docs/latex/wx/stockitems.tex
new file mode 100644
index 0000000000..e912beaa42
--- /dev/null
+++ b/docs/latex/wx/stockitems.tex
@@ -0,0 +1,56 @@
+\section{Stock items}\label{stockitems}
+
+Stock item IDs for use in \helpref{wxButton constructor}{wxbuttonconstr}:
+
+\begin{twocollist}\itemsep=0pt
+\twocolitem{wxSTOCK\_ADD}{"Add"}
+\twocolitem{wxSTOCK\_APPLY}{"\&Apply"}
+\twocolitem{wxSTOCK\_BOLD}{"\&Bold"}
+\twocolitem{wxSTOCK\_CANCEL}{"\&Cancel"}
+\twocolitem{wxSTOCK\_CLEAR}{"\&Clear"}
+\twocolitem{wxSTOCK\_CLOSE}{"\&Close"}
+\twocolitem{wxSTOCK\_COPY}{"\&Copy"}
+\twocolitem{wxSTOCK\_CUT}{"Cu\&t"}
+\twocolitem{wxSTOCK\_DELETE}{"\&Delete"}
+\twocolitem{wxSTOCK\_FIND}{"\&Find"}
+\twocolitem{wxSTOCK\_FIND\_AND\_REPLACE}{"Find and rep\&lace"}
+\twocolitem{wxSTOCK\_GO\_BACK}{"\&Back"}
+\twocolitem{wxSTOCK\_GO\_DOWN}{"\&Down"}
+\twocolitem{wxSTOCK\_GO\_FORWARD}{"\&Forward"}
+\twocolitem{wxSTOCK\_GO\_UP}{"\&Up"}
+\twocolitem{wxSTOCK\_HELP}{"\&Help"}
+\twocolitem{wxSTOCK\_HOME}{"\&Home"}
+\twocolitem{wxSTOCK\_INDENT}{"Indent"}
+\twocolitem{wxSTOCK\_INDEX}{"\&Index"}
+\twocolitem{wxSTOCK\_ITALIC}{"\&Italic"}
+\twocolitem{wxSTOCK\_JUSTIFY\_CENTER}{"Centered"}
+\twocolitem{wxSTOCK\_JUSTIFY\_FILL}{"Justified"}
+\twocolitem{wxSTOCK\_JUSTIFY\_LEFT}{"Align Left"}
+\twocolitem{wxSTOCK\_JUSTIFY\_RIGHT}{"Align Right"}
+\twocolitem{wxSTOCK\_NEW}{"\&New"}
+\twocolitem{wxSTOCK\_NO}{"\&No"}
+\twocolitem{wxSTOCK\_OK}{"\&OK"}
+\twocolitem{wxSTOCK\_OPEN}{"\&Open"}
+\twocolitem{wxSTOCK\_PASTE}{"\&Paste"}
+\twocolitem{wxSTOCK\_PREFERENCES}{"\&Preferences"}
+\twocolitem{wxSTOCK\_PRINT}{"\&Print"}
+\twocolitem{wxSTOCK\_PRINT\_PREVIEW}{"Print previe\&w"}
+\twocolitem{wxSTOCK\_PROPERTIES}{"\&Properties"}
+\twocolitem{wxSTOCK\_QUIT}{"\&Quit"}
+\twocolitem{wxSTOCK\_REDO}{"\&Redo"}
+\twocolitem{wxSTOCK\_REFRESH}{"Refresh"}
+\twocolitem{wxSTOCK\_REMOVE}{"Remove"}
+\twocolitem{wxSTOCK\_REVERT\_TO\_SAVED}{"Revert to Saved"}
+\twocolitem{wxSTOCK\_SAVE}{"\&Save"}
+\twocolitem{wxSTOCK\_SAVE\_AS}{"Save \&As..."}
+\twocolitem{wxSTOCK\_STOP}{"\&Stop"}
+\twocolitem{wxSTOCK\_UNDELETE}{"Undelete"}
+\twocolitem{wxSTOCK\_UNDERLINE}{"\&Underline"}
+\twocolitem{wxSTOCK\_UNDO}{"\&Undo"}
+\twocolitem{wxSTOCK\_UNINDENT}{"\&Unindent"}
+\twocolitem{wxSTOCK\_YES}{"\&Yes"}
+\twocolitem{wxSTOCK\_ZOOM\_100}{"\&Actual Size"}
+\twocolitem{wxSTOCK\_ZOOM\_FIT}{"Zoom to \&Fit"}
+\twocolitem{wxSTOCK\_ZOOM\_IN}{"Zoom \&In"}
+\twocolitem{wxSTOCK\_ZOOM\_OUT}{"Zoom \&Out"}
+\end{twocollist}\itemsep=0pt
diff --git a/include/wx/button.h b/include/wx/button.h
index 428e6e0611..1143afed78 100644
--- a/include/wx/button.h
+++ b/include/wx/button.h
@@ -12,6 +12,10 @@
 #ifndef _WX_BUTTON_H_BASE_
 #define _WX_BUTTON_H_BASE_
 
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+    #pragma interface "buttonbase.h"
+#endif
+
 #include "wx/defs.h"
 
 // ----------------------------------------------------------------------------
@@ -44,6 +48,7 @@
 #define wxBU_EXACTFIT        0x0001
 
 #include "wx/control.h"
+#include "wx/stockitem.h"
 
 class WXDLLEXPORT wxBitmap;
 
@@ -76,6 +81,17 @@ public:
     // returns the default button size for this platform
     static wxSize GetDefaultSize();
 
+protected:
+#ifndef __WXGTK20__
+    // create stock button (generic implementation)
+    bool CreateStock(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+                     const wxString& descriptiveLabel = wxEmptyString,
+                     const wxPoint& pos = wxDefaultPosition,
+                     long style = 0,
+                     const wxValidator& validator = wxDefaultValidator,
+                     const wxString& name = wxButtonNameStr);
+#endif
+
     DECLARE_NO_COPY_CLASS(wxButtonBase)
 };
 
diff --git a/include/wx/cocoa/button.h b/include/wx/cocoa/button.h
index 36a8c1559f..a33f669a1c 100644
--- a/include/wx/cocoa/button.h
+++ b/include/wx/cocoa/button.h
@@ -36,6 +36,16 @@ public:
     {
         Create(parent, winid, label, pos, size, style, validator, name);
     }
+    
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
 
     bool Create(wxWindow *parent, wxWindowID winid,
             const wxString& label,
@@ -43,6 +53,18 @@ public:
             const wxSize& size = wxDefaultSize, long style = 0,
             const wxValidator& validator = wxDefaultValidator,
             const wxString& name = wxButtonNameStr);
+    
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        return CreateStock(parent, id, stock, descriptiveLabel,
+                           pos, style, validator, name);
+    }
+    
     virtual ~wxButton();
 
 // ------------------------------------------------------------------------
diff --git a/include/wx/gtk/button.h b/include/wx/gtk/button.h
index 59d8bb74c3..fd2f1ef02b 100644
--- a/include/wx/gtk/button.h
+++ b/include/wx/gtk/button.h
@@ -35,7 +35,7 @@ extern const wxChar *wxButtonNameStr;
 // wxButton
 //-----------------------------------------------------------------------------
 
-class wxButton: public wxControl
+class wxButton: public wxButtonBase
 {
 public:
     wxButton();
@@ -45,8 +45,19 @@ public:
            const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxButtonNameStr)
     {
-      Create(parent, id, label, pos, size, style, validator, name);
+        Create(parent, id, label, pos, size, style, validator, name);
     }
+    
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
+
     virtual ~wxButton();
 
     bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
@@ -54,13 +65,18 @@ public:
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxButtonNameStr);
+    
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr);
 
     virtual void SetDefault();
     virtual void SetLabel( const wxString &label );
     virtual bool Enable( bool enable = TRUE );
 
-    static wxSize GetDefaultSize();
-
     // implementation
     // --------------
 
diff --git a/include/wx/gtk1/button.h b/include/wx/gtk1/button.h
index 59d8bb74c3..fd2f1ef02b 100644
--- a/include/wx/gtk1/button.h
+++ b/include/wx/gtk1/button.h
@@ -35,7 +35,7 @@ extern const wxChar *wxButtonNameStr;
 // wxButton
 //-----------------------------------------------------------------------------
 
-class wxButton: public wxControl
+class wxButton: public wxButtonBase
 {
 public:
     wxButton();
@@ -45,8 +45,19 @@ public:
            const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxButtonNameStr)
     {
-      Create(parent, id, label, pos, size, style, validator, name);
+        Create(parent, id, label, pos, size, style, validator, name);
     }
+    
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
+
     virtual ~wxButton();
 
     bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
@@ -54,13 +65,18 @@ public:
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxButtonNameStr);
+    
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr);
 
     virtual void SetDefault();
     virtual void SetLabel( const wxString &label );
     virtual bool Enable( bool enable = TRUE );
 
-    static wxSize GetDefaultSize();
-
     // implementation
     // --------------
 
diff --git a/include/wx/mac/carbon/button.h b/include/wx/mac/carbon/button.h
index 713b93da96..198096673f 100644
--- a/include/wx/mac/carbon/button.h
+++ b/include/wx/mac/carbon/button.h
@@ -35,12 +35,33 @@ class WXDLLEXPORT wxButton: public wxButtonBase
   {
       Create(parent, id, label, pos, size, style, validator, name);
   }
+  
+  inline wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+  {
+      Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+  }
 
   bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxButtonNameStr);
+    
+  bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+  {
+      return CreateStock(parent, id, stock, descriptiveLabel,
+                         pos, style, validator, name);
+  }
 
     virtual wxInt32 MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
     static wxSize GetDefaultSize();
diff --git a/include/wx/mac/classic/button.h b/include/wx/mac/classic/button.h
index 23e9044f00..9c2bf37e93 100644
--- a/include/wx/mac/classic/button.h
+++ b/include/wx/mac/classic/button.h
@@ -35,12 +35,33 @@ class WXDLLEXPORT wxButton: public wxButtonBase
   {
       Create(parent, id, label, pos, size, style, validator, name);
   }
+  
+  inline wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+  {
+      Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+  }
 
   bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxValidator& validator = wxDefaultValidator,
            const wxString& name = wxButtonNameStr);
+  
+  bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+  {
+      return CreateStock(parent, id, stock, descriptiveLabel,
+                         pos, style, validator, name);
+  }
 
     virtual void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
     static wxSize GetDefaultSize();
diff --git a/include/wx/motif/button.h b/include/wx/motif/button.h
index 32958d5753..7b08b21e6a 100644
--- a/include/wx/motif/button.h
+++ b/include/wx/motif/button.h
@@ -34,12 +34,33 @@ public:
         Create(parent, id, label, pos, size, style, validator, name);
     }
     
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
+    
     bool Create(wxWindow *parent, wxWindowID id, const wxString& label,
         const wxPoint& pos = wxDefaultPosition,
         const wxSize& size = wxDefaultSize, long style = 0,
         const wxValidator& validator = wxDefaultValidator,
         const wxString& name = wxButtonNameStr);
     
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        return CreateStock(parent, id, stock, descriptiveLabel,
+                           pos, style, validator, name);
+    }
+    
     virtual void SetDefault();
     virtual void Command(wxCommandEvent& event);
     
diff --git a/include/wx/msw/button.h b/include/wx/msw/button.h
index bb844575e3..b2b1d7060a 100644
--- a/include/wx/msw/button.h
+++ b/include/wx/msw/button.h
@@ -35,6 +35,27 @@ public:
     {
         Create(parent, id, label, pos, size, style, validator, name);
     }
+    
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
+  
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        return CreateStock(parent, id, stock, descriptiveLabel,
+                           pos, style, validator, name);
+    }
 
     bool Create(wxWindow *parent,
                 wxWindowID id,
diff --git a/include/wx/os2/button.h b/include/wx/os2/button.h
index ba408a4214..1617192173 100644
--- a/include/wx/os2/button.h
+++ b/include/wx/os2/button.h
@@ -39,6 +39,16 @@ class WXDLLEXPORT wxButton: public wxButtonBase
                ,rsName
               );
     }
+    
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
 
     bool Create( wxWindow*          pParent
                 ,wxWindowID         vId
@@ -49,6 +59,17 @@ class WXDLLEXPORT wxButton: public wxButtonBase
                 ,const wxValidator& rValidator = wxDefaultValidator
                 ,const wxString&    rsName = wxButtonNameStr
                );
+    
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        return CreateStock(parent, id, stock, descriptiveLabel,
+                           pos, style, validator, name);
+    }
 
     virtual ~wxButton();
 
diff --git a/include/wx/stockitem.h b/include/wx/stockitem.h
new file mode 100644
index 0000000000..0b157887dc
--- /dev/null
+++ b/include/wx/stockitem.h
@@ -0,0 +1,96 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/stockitem.h
+// Purpose:     wxStockItemID enum
+// Author:      Vaclav Slavik
+// Modified by:
+// Created:     2004-08-15
+// RCS-ID:      $Id$
+// Copyright:   (c) Vaclav Slavik, 2004
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_STOCKITEM_H_
+#define _WX_STOCKITEM_H_
+
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+    #pragma interface "stockitem.h"
+#endif
+
+#include "wx/defs.h"
+#include "wx/string.h"
+
+// ----------------------------------------------------------------------------
+// Stock item IDs for use with wxButton, wxMenu and wxToolBar:
+// ----------------------------------------------------------------------------
+
+enum wxStockItemID
+{
+    wxSTOCK_NONE = 0,
+    wxSTOCK_ADD,
+    wxSTOCK_APPLY,
+    wxSTOCK_BOLD,
+    wxSTOCK_CANCEL,
+    wxSTOCK_CLEAR,
+    wxSTOCK_CLOSE,
+    wxSTOCK_COPY,
+    wxSTOCK_CUT,
+    wxSTOCK_DELETE,
+    wxSTOCK_FIND,
+    wxSTOCK_FIND_AND_REPLACE,
+    wxSTOCK_GO_BACK,
+    wxSTOCK_GO_DOWN,
+    wxSTOCK_GO_FORWARD,
+    wxSTOCK_GO_UP,
+    wxSTOCK_HELP,
+    wxSTOCK_HOME,
+    wxSTOCK_INDENT,
+    wxSTOCK_INDEX,
+    wxSTOCK_ITALIC,
+    wxSTOCK_JUSTIFY_CENTER,
+    wxSTOCK_JUSTIFY_FILL,
+    wxSTOCK_JUSTIFY_LEFT,
+    wxSTOCK_JUSTIFY_RIGHT,
+    wxSTOCK_NEW,
+    wxSTOCK_NO,
+    wxSTOCK_OK,
+    wxSTOCK_OPEN,
+    wxSTOCK_PASTE,
+    wxSTOCK_PREFERENCES,
+    wxSTOCK_PRINT,
+    wxSTOCK_PRINT_PREVIEW,
+    wxSTOCK_PROPERTIES,
+    wxSTOCK_QUIT,
+    wxSTOCK_REDO,
+    wxSTOCK_REFRESH,
+    wxSTOCK_REMOVE,
+    wxSTOCK_REVERT_TO_SAVED,
+    wxSTOCK_SAVE,
+    wxSTOCK_SAVE_AS,
+    wxSTOCK_STOP,
+    wxSTOCK_UNDELETE,
+    wxSTOCK_UNDERLINE,
+    wxSTOCK_UNDO,
+    wxSTOCK_UNINDENT,
+    wxSTOCK_YES,
+    wxSTOCK_ZOOM_100,
+    wxSTOCK_ZOOM_FIT,
+    wxSTOCK_ZOOM_IN,
+    wxSTOCK_ZOOM_OUT
+    // NB: when you add new item here, add it to stockitem.cpp and
+    //     documentation as well
+};
+
+// ----------------------------------------------------------------------------
+// Helper functions:
+// ----------------------------------------------------------------------------
+
+// Returns label that should be used for given stock UI element (e.g. "&OK"
+// for wxSTOCK_OK):
+wxString wxGetStockItemLabel(wxStockItemID item);
+
+#ifdef __WXGTK20__
+// Translates stock ID to GTK+'s stock item string indentifier:
+const char *wxStockItemToGTK(wxStockItemID item);
+#endif
+
+#endif // _WX_STOCKITEM_H_
diff --git a/include/wx/univ/button.h b/include/wx/univ/button.h
index c675e37c67..a3732858e8 100644
--- a/include/wx/univ/button.h
+++ b/include/wx/univ/button.h
@@ -51,6 +51,18 @@ public:
 
         Create(parent, id, bitmap, label, pos, size, style, validator, name);
     }
+    
+    wxButton(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        Init();
+
+        Create(parent, id, stock, descriptiveLabel, pos, style, validator, name);
+    }
 
     wxButton(wxWindow *parent,
              wxWindowID id,
@@ -78,6 +90,17 @@ public:
         return Create(parent, id, wxNullBitmap, label,
                       pos, size, style, validator, name);
     }
+    
+    bool Create(wxWindow *parent, wxWindowID id, wxStockItemID stock,
+           const wxString& descriptiveLabel = wxEmptyString,
+           const wxPoint& pos = wxDefaultPosition,
+           long style = 0,
+           const wxValidator& validator = wxDefaultValidator,
+           const wxString& name = wxButtonNameStr)
+    {
+        return CreateStock(parent, id, stock, descriptiveLabel,
+                           pos, style, validator, name);
+    }
 
     bool Create(wxWindow *parent,
                 wxWindowID id,
diff --git a/src/common/buttoncmn.cpp b/src/common/buttoncmn.cpp
new file mode 100644
index 0000000000..0e767dd006
--- /dev/null
+++ b/src/common/buttoncmn.cpp
@@ -0,0 +1,63 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        common/buttoncmn.cpp
+// Purpose:     wxMenu and wxMenuBar methods common to all ports
+// Author:      Vaclav Slavik
+// Modified by:
+// Created:     2004-08-15
+// RCS-ID:      $Id$
+// Copyright:   (c) Vaclav Slavik, 2004
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+    #pragma implementation "buttonbase.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_BUTTON
+
+#include "wx/button.h"
+
+#ifndef __WXGTK20__
+bool wxButtonBase::CreateStock(wxWindow *parent,
+                               wxWindowID id,
+                               wxStockItemID stock,
+                               const wxString& descriptiveLabel,
+                               const wxPoint& pos,
+                               long style,
+                               const wxValidator& validator,
+                               const wxString& name)
+{
+    wxString label;
+#if defined(__WXMAC__) || defined(__WXCOCOA__)
+    if (!descriptiveLabel.empty())
+    {
+        label = descriptiveLabel;
+    }
+    else
+#endif
+    {
+        label = wxGetStockItemLabel(stock);
+    }
+    
+    return wxStaticCast(this, wxButton)->Create(parent, id, label,
+                                                pos, wxDefaultSize,
+                                                style, validator, name);
+}
+#endif
+
+#endif // wxUSE_BUTTON
diff --git a/src/common/stockitem.cpp b/src/common/stockitem.cpp
new file mode 100644
index 0000000000..01b295f294
--- /dev/null
+++ b/src/common/stockitem.cpp
@@ -0,0 +1,181 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        common/stockitem.cpp
+// Purpose:     Stock buttons, menu and toolbar items labels
+// Author:      Vaclav Slavik
+// Modified by:
+// Created:     2004-08-15
+// RCS-ID:      $Id$
+// Copyright:   (c) Vaclav Slavik, 2004
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+    #pragma implementation "stockitem.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/stockitem.h"
+#include "wx/intl.h"
+
+wxString wxGetStockItemLabel(wxStockItemID item)
+{
+    #define STOCKITEM(stockid, label) \
+        case stockid:                 \
+            return label;             \
+            break;
+
+    switch (item)
+    {
+        STOCKITEM(wxSTOCK_ADD,                 _("Add"))
+        STOCKITEM(wxSTOCK_APPLY,               _("&Apply"))
+        STOCKITEM(wxSTOCK_BOLD,                _("&Bold"))
+        STOCKITEM(wxSTOCK_CANCEL,              _("&Cancel"))
+        STOCKITEM(wxSTOCK_CLEAR,               _("&Clear"))
+        STOCKITEM(wxSTOCK_CLOSE,               _("&Close"))
+        STOCKITEM(wxSTOCK_COPY,                _("&Copy"))
+        STOCKITEM(wxSTOCK_CUT,                 _("Cu&t"))
+        STOCKITEM(wxSTOCK_DELETE,              _("&Delete"))
+        STOCKITEM(wxSTOCK_FIND,                _("&Find"))
+        STOCKITEM(wxSTOCK_FIND_AND_REPLACE,    _("Find and rep&lace"))
+        STOCKITEM(wxSTOCK_GO_BACK,             _("&Back"))
+        STOCKITEM(wxSTOCK_GO_DOWN,             _("&Down"))
+        STOCKITEM(wxSTOCK_GO_FORWARD,          _("&Forward"))
+        STOCKITEM(wxSTOCK_GO_UP,               _("&Up"))
+        STOCKITEM(wxSTOCK_HELP,                _("&Help"))
+        STOCKITEM(wxSTOCK_HOME,                _("&Home"))
+        STOCKITEM(wxSTOCK_INDENT,              _("Indent"))
+        STOCKITEM(wxSTOCK_INDEX,               _("&Index"))
+        STOCKITEM(wxSTOCK_ITALIC,              _("&Italic"))
+        STOCKITEM(wxSTOCK_JUSTIFY_CENTER,      _("Centered"))
+        STOCKITEM(wxSTOCK_JUSTIFY_FILL,        _("Justified"))
+        STOCKITEM(wxSTOCK_JUSTIFY_LEFT,        _("Align Left"))
+        STOCKITEM(wxSTOCK_JUSTIFY_RIGHT,       _("Align Right"))
+        STOCKITEM(wxSTOCK_NEW,                 _("&New"))
+        STOCKITEM(wxSTOCK_NO,                  _("&No"))
+        STOCKITEM(wxSTOCK_OK,                  _("&OK"))
+        STOCKITEM(wxSTOCK_OPEN,                _("&Open"))
+        STOCKITEM(wxSTOCK_PASTE,               _("&Paste"))
+        STOCKITEM(wxSTOCK_PREFERENCES,         _("&Preferences"))
+        STOCKITEM(wxSTOCK_PRINT,               _("&Print"))
+        STOCKITEM(wxSTOCK_PRINT_PREVIEW,       _("Print previe&w"))
+        STOCKITEM(wxSTOCK_PROPERTIES,          _("&Properties"))
+        STOCKITEM(wxSTOCK_QUIT,                _("&Quit"))
+        STOCKITEM(wxSTOCK_REDO,                _("&Redo"))
+        STOCKITEM(wxSTOCK_REFRESH,             _("Refresh"))
+        STOCKITEM(wxSTOCK_REMOVE,              _("Remove"))
+        STOCKITEM(wxSTOCK_REVERT_TO_SAVED,     _("Revert to Saved"))
+        STOCKITEM(wxSTOCK_SAVE,                _("&Save"))
+        STOCKITEM(wxSTOCK_SAVE_AS,             _("Save &As..."))
+        STOCKITEM(wxSTOCK_STOP,                _("&Stop"))
+        STOCKITEM(wxSTOCK_UNDELETE,            _("Undelete"))
+        STOCKITEM(wxSTOCK_UNDERLINE,           _("&Underline"))
+        STOCKITEM(wxSTOCK_UNDO,                _("&Undo"))
+        STOCKITEM(wxSTOCK_UNINDENT,            _("&Unindent"))
+        STOCKITEM(wxSTOCK_YES,                 _("&Yes"))
+        STOCKITEM(wxSTOCK_ZOOM_100,            _("&Actual Size"))
+        STOCKITEM(wxSTOCK_ZOOM_FIT,            _("Zoom to &Fit"))
+        STOCKITEM(wxSTOCK_ZOOM_IN,             _("Zoom &In"))
+        STOCKITEM(wxSTOCK_ZOOM_OUT,            _("Zoom &Out"))
+
+        case wxSTOCK_NONE:
+        default:
+            wxFAIL_MSG( _T("invalid stock item ID") );
+            break;
+    };
+
+    #undef STOCKITEM
+    
+    return wxEmptyString;
+}
+
+
+#ifdef __WXGTK20__
+
+#include <gtk/gtk.h>
+
+const char *wxStockItemToGTK(wxStockItemID item)
+{
+    #define STOCKITEM(stockid)    \
+        case wx##stockid:         \
+            return GTK_##stockid; \
+            break;
+
+    switch (item)
+    {
+        STOCKITEM(STOCK_ADD)
+        STOCKITEM(STOCK_APPLY)
+        STOCKITEM(STOCK_BOLD)
+        STOCKITEM(STOCK_CANCEL)
+        STOCKITEM(STOCK_CLEAR)
+        STOCKITEM(STOCK_CLOSE)
+        STOCKITEM(STOCK_COPY)
+        STOCKITEM(STOCK_CUT)
+        STOCKITEM(STOCK_DELETE)
+        STOCKITEM(STOCK_FIND)
+        STOCKITEM(STOCK_FIND_AND_REPLACE)
+        STOCKITEM(STOCK_GO_BACK)
+        STOCKITEM(STOCK_GO_DOWN)
+        STOCKITEM(STOCK_GO_FORWARD)
+        STOCKITEM(STOCK_GO_UP)
+        STOCKITEM(STOCK_HELP)
+        STOCKITEM(STOCK_HOME)
+        STOCKITEM(STOCK_INDENT)
+        STOCKITEM(STOCK_INDEX)
+        STOCKITEM(STOCK_ITALIC)
+        STOCKITEM(STOCK_JUSTIFY_CENTER)
+        STOCKITEM(STOCK_JUSTIFY_FILL)
+        STOCKITEM(STOCK_JUSTIFY_LEFT)
+        STOCKITEM(STOCK_JUSTIFY_RIGHT)
+        STOCKITEM(STOCK_NEW)
+        STOCKITEM(STOCK_NO)
+        STOCKITEM(STOCK_OK)
+        STOCKITEM(STOCK_OPEN)
+        STOCKITEM(STOCK_PASTE)
+        STOCKITEM(STOCK_PREFERENCES)
+        STOCKITEM(STOCK_PRINT)
+        STOCKITEM(STOCK_PRINT_PREVIEW)
+        STOCKITEM(STOCK_PROPERTIES)
+        STOCKITEM(STOCK_QUIT)
+        STOCKITEM(STOCK_REDO)
+        STOCKITEM(STOCK_REFRESH)
+        STOCKITEM(STOCK_REMOVE)
+        STOCKITEM(STOCK_REVERT_TO_SAVED)
+        STOCKITEM(STOCK_SAVE)
+        STOCKITEM(STOCK_SAVE_AS)
+        STOCKITEM(STOCK_STOP)
+        STOCKITEM(STOCK_UNDELETE)
+        STOCKITEM(STOCK_UNDERLINE)
+        STOCKITEM(STOCK_UNDO)
+        STOCKITEM(STOCK_UNINDENT)
+        STOCKITEM(STOCK_YES)
+        STOCKITEM(STOCK_ZOOM_100)
+        STOCKITEM(STOCK_ZOOM_FIT)
+        STOCKITEM(STOCK_ZOOM_IN)
+        STOCKITEM(STOCK_ZOOM_OUT)
+
+        case wxSTOCK_NONE:
+        default:
+            wxFAIL_MSG( _T("invalid stock item ID") );
+            break;
+    };
+
+    #undef STOCKITEM
+    
+    return NULL;
+}
+
+#endif // __WXGTK20__
diff --git a/src/wxWindows.dsp b/src/wxWindows.dsp
index ae50411cfb..8655ac28af 100644
--- a/src/wxWindows.dsp
+++ b/src/wxWindows.dsp
@@ -325,6 +325,10 @@ SOURCE=.\common\bookctrl.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\buttoncmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\choiccmn.cpp
 # End Source File
 # Begin Source File
@@ -750,6 +754,10 @@ SOURCE=.\common\statbar.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=.\common\stockitem.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\common\stopwatch.cpp
 # End Source File
 # Begin Source File
@@ -2544,6 +2552,10 @@ SOURCE=..\include\wx\statusbr.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\include\wx\stockitem.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\include\wx\stopwatch.h
 # End Source File
 # Begin Source File
-- 
2.50.0

