diff --git a/Makefile.in b/Makefile.in
index 1ee4d397b8..a075aad300 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1651,6 +1651,7 @@ XRCDLL_OBJECTS = \
xrcdll_xh_choic.o \
xrcdll_xh_choicbk.o \
xrcdll_xh_clrpicker.o \
+ xrcdll_xh_cmdlinkbn.o \
xrcdll_xh_collpane.o \
xrcdll_xh_combo.o \
xrcdll_xh_comboctrl.o \
@@ -1719,6 +1720,7 @@ XRCLIB_OBJECTS = \
xrclib_xh_choic.o \
xrclib_xh_choicbk.o \
xrclib_xh_clrpicker.o \
+ xrclib_xh_cmdlinkbn.o \
xrclib_xh_collpane.o \
xrclib_xh_combo.o \
xrclib_xh_comboctrl.o \
@@ -4052,6 +4054,7 @@ COND_USE_GUI_1_ALL_GUI_HEADERS = \
wx/xrc/xh_choic.h \
wx/xrc/xh_choicbk.h \
wx/xrc/xh_clrpicker.h \
+ wx/xrc/xh_cmdlinkbn.h \
wx/xrc/xh_collpane.h \
wx/xrc/xh_combo.h \
wx/xrc/xh_comboctrl.h \
@@ -4346,6 +4349,7 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS = \
monodll_xh_choic.o \
monodll_xh_choicbk.o \
monodll_xh_clrpicker.o \
+ monodll_xh_cmdlinkbn.o \
monodll_xh_collpane.o \
monodll_xh_combo.o \
monodll_xh_comboctrl.o \
@@ -6220,6 +6224,7 @@ COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS_1 = \
monolib_xh_choic.o \
monolib_xh_choicbk.o \
monolib_xh_clrpicker.o \
+ monolib_xh_cmdlinkbn.o \
monolib_xh_collpane.o \
monolib_xh_combo.o \
monolib_xh_comboctrl.o \
@@ -16904,6 +16909,9 @@ monodll_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(MONODLL_ODEP)
monodll_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+monodll_xh_cmdlinkbn.o: $(srcdir)/src/xrc/xh_cmdlinkbn.cpp $(MONODLL_ODEP)
+ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_cmdlinkbn.cpp
+
monodll_xh_collpane.o: $(srcdir)/src/xrc/xh_collpane.cpp $(MONODLL_ODEP)
$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/xrc/xh_collpane.cpp
@@ -22127,6 +22135,9 @@ monolib_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(MONOLIB_ODEP)
monolib_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+monolib_xh_cmdlinkbn.o: $(srcdir)/src/xrc/xh_cmdlinkbn.cpp $(MONOLIB_ODEP)
+ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_cmdlinkbn.cpp
+
monolib_xh_collpane.o: $(srcdir)/src/xrc/xh_collpane.cpp $(MONOLIB_ODEP)
$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_collpane.cpp
@@ -35519,6 +35530,9 @@ xrcdll_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(XRCDLL_ODEP)
xrcdll_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(XRCDLL_ODEP)
$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+xrcdll_xh_cmdlinkbn.o: $(srcdir)/src/xrc/xh_cmdlinkbn.cpp $(XRCDLL_ODEP)
+ $(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_cmdlinkbn.cpp
+
xrcdll_xh_collpane.o: $(srcdir)/src/xrc/xh_collpane.cpp $(XRCDLL_ODEP)
$(CXXC) -c -o $@ $(XRCDLL_CXXFLAGS) $(srcdir)/src/xrc/xh_collpane.cpp
@@ -35702,6 +35716,9 @@ xrclib_xh_choicbk.o: $(srcdir)/src/xrc/xh_choicbk.cpp $(XRCLIB_ODEP)
xrclib_xh_clrpicker.o: $(srcdir)/src/xrc/xh_clrpicker.cpp $(XRCLIB_ODEP)
$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_clrpicker.cpp
+xrclib_xh_cmdlinkbn.o: $(srcdir)/src/xrc/xh_cmdlinkbn.cpp $(XRCLIB_ODEP)
+ $(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_cmdlinkbn.cpp
+
xrclib_xh_collpane.o: $(srcdir)/src/xrc/xh_collpane.cpp $(XRCLIB_ODEP)
$(CXXC) -c -o $@ $(XRCLIB_CXXFLAGS) $(srcdir)/src/xrc/xh_collpane.cpp
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 3b0b289b24..fd9adf79ab 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -3312,6 +3312,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/xrc/xh_choic.cpp
src/xrc/xh_choicbk.cpp
src/xrc/xh_clrpicker.cpp
+ src/xrc/xh_cmdlinkbn.cpp
src/xrc/xh_collpane.cpp
src/xrc/xh_combo.cpp
src/xrc/xh_comboctrl.cpp
@@ -3378,6 +3379,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/xrc/xh_choic.h
wx/xrc/xh_choicbk.h
wx/xrc/xh_clrpicker.h
+ wx/xrc/xh_cmdlinkbn.h
wx/xrc/xh_collpane.h
wx/xrc/xh_combo.h
wx/xrc/xh_comboctrl.h
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index ba00f19f07..0c5e38322b 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -1144,6 +1144,7 @@ XRCDLL_OBJECTS = \
$(OBJS)\xrcdll_xh_choic.obj \
$(OBJS)\xrcdll_xh_choicbk.obj \
$(OBJS)\xrcdll_xh_clrpicker.obj \
+ $(OBJS)\xrcdll_xh_cmdlinkbn.obj \
$(OBJS)\xrcdll_xh_collpane.obj \
$(OBJS)\xrcdll_xh_combo.obj \
$(OBJS)\xrcdll_xh_comboctrl.obj \
@@ -1216,6 +1217,7 @@ XRCLIB_OBJECTS = \
$(OBJS)\xrclib_xh_choic.obj \
$(OBJS)\xrclib_xh_choicbk.obj \
$(OBJS)\xrclib_xh_clrpicker.obj \
+ $(OBJS)\xrclib_xh_cmdlinkbn.obj \
$(OBJS)\xrclib_xh_collpane.obj \
$(OBJS)\xrclib_xh_combo.obj \
$(OBJS)\xrclib_xh_comboctrl.obj \
@@ -1582,6 +1584,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_xh_choic.obj \
$(OBJS)\monodll_xh_choicbk.obj \
$(OBJS)\monodll_xh_clrpicker.obj \
+ $(OBJS)\monodll_xh_cmdlinkbn.obj \
$(OBJS)\monodll_xh_collpane.obj \
$(OBJS)\monodll_xh_combo.obj \
$(OBJS)\monodll_xh_comboctrl.obj \
@@ -2303,6 +2306,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_xh_choic.obj \
$(OBJS)\monolib_xh_choicbk.obj \
$(OBJS)\monolib_xh_clrpicker.obj \
+ $(OBJS)\monolib_xh_cmdlinkbn.obj \
$(OBJS)\monolib_xh_collpane.obj \
$(OBJS)\monolib_xh_combo.obj \
$(OBJS)\monolib_xh_comboctrl.obj \
@@ -6548,6 +6552,9 @@ $(OBJS)\monodll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\monodll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\monodll_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\monodll_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
@@ -8786,6 +8793,9 @@ $(OBJS)\monolib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\monolib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\monolib_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\monolib_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
@@ -14103,6 +14113,9 @@ $(OBJS)\xrcdll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\xrcdll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\xrcdll_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\xrcdll_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) -q -c -P -o$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
@@ -14289,6 +14302,9 @@ $(OBJS)\xrclib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\xrclib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\xrclib_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\xrclib_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) -q -c -P -o$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index e49c3a6292..7b5e90e629 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -1142,6 +1142,7 @@ XRCDLL_OBJECTS = \
$(OBJS)\xrcdll_xh_choic.o \
$(OBJS)\xrcdll_xh_choicbk.o \
$(OBJS)\xrcdll_xh_clrpicker.o \
+ $(OBJS)\xrcdll_xh_cmdlinkbn.o \
$(OBJS)\xrcdll_xh_collpane.o \
$(OBJS)\xrcdll_xh_combo.o \
$(OBJS)\xrcdll_xh_comboctrl.o \
@@ -1213,6 +1214,7 @@ XRCLIB_OBJECTS = \
$(OBJS)\xrclib_xh_choic.o \
$(OBJS)\xrclib_xh_choicbk.o \
$(OBJS)\xrclib_xh_clrpicker.o \
+ $(OBJS)\xrclib_xh_cmdlinkbn.o \
$(OBJS)\xrclib_xh_collpane.o \
$(OBJS)\xrclib_xh_combo.o \
$(OBJS)\xrclib_xh_comboctrl.o \
@@ -1592,6 +1594,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_xh_choic.o \
$(OBJS)\monodll_xh_choicbk.o \
$(OBJS)\monodll_xh_clrpicker.o \
+ $(OBJS)\monodll_xh_cmdlinkbn.o \
$(OBJS)\monodll_xh_collpane.o \
$(OBJS)\monodll_xh_combo.o \
$(OBJS)\monodll_xh_comboctrl.o \
@@ -2319,6 +2322,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_xh_choic.o \
$(OBJS)\monolib_xh_choicbk.o \
$(OBJS)\monolib_xh_clrpicker.o \
+ $(OBJS)\monolib_xh_cmdlinkbn.o \
$(OBJS)\monolib_xh_collpane.o \
$(OBJS)\monolib_xh_combo.o \
$(OBJS)\monolib_xh_comboctrl.o \
@@ -6698,6 +6702,9 @@ $(OBJS)\monodll_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
$(OBJS)\monodll_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\monodll_xh_cmdlinkbn.o: ../../src/xrc/xh_cmdlinkbn.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\monodll_xh_collpane.o: ../../src/xrc/xh_collpane.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -8936,6 +8943,9 @@ $(OBJS)\monolib_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
$(OBJS)\monolib_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\monolib_xh_cmdlinkbn.o: ../../src/xrc/xh_cmdlinkbn.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\monolib_xh_collpane.o: ../../src/xrc/xh_collpane.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -14253,6 +14263,9 @@ $(OBJS)\xrcdll_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
$(OBJS)\xrcdll_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\xrcdll_xh_cmdlinkbn.o: ../../src/xrc/xh_cmdlinkbn.cpp
+ $(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\xrcdll_xh_collpane.o: ../../src/xrc/xh_collpane.cpp
$(CXX) -c -o $@ $(XRCDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -14439,6 +14452,9 @@ $(OBJS)\xrclib_xh_choicbk.o: ../../src/xrc/xh_choicbk.cpp
$(OBJS)\xrclib_xh_clrpicker.o: ../../src/xrc/xh_clrpicker.cpp
$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\xrclib_xh_cmdlinkbn.o: ../../src/xrc/xh_cmdlinkbn.cpp
+ $(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\xrclib_xh_collpane.o: ../../src/xrc/xh_collpane.cpp
$(CXX) -c -o $@ $(XRCLIB_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index af9255f2a1..7b61305f92 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -1219,6 +1219,7 @@ XRCDLL_OBJECTS = \
$(OBJS)\xrcdll_xh_choic.obj \
$(OBJS)\xrcdll_xh_choicbk.obj \
$(OBJS)\xrcdll_xh_clrpicker.obj \
+ $(OBJS)\xrcdll_xh_cmdlinkbn.obj \
$(OBJS)\xrcdll_xh_collpane.obj \
$(OBJS)\xrcdll_xh_combo.obj \
$(OBJS)\xrcdll_xh_comboctrl.obj \
@@ -1295,6 +1296,7 @@ XRCLIB_OBJECTS = \
$(OBJS)\xrclib_xh_choic.obj \
$(OBJS)\xrclib_xh_choicbk.obj \
$(OBJS)\xrclib_xh_clrpicker.obj \
+ $(OBJS)\xrclib_xh_cmdlinkbn.obj \
$(OBJS)\xrclib_xh_collpane.obj \
$(OBJS)\xrclib_xh_combo.obj \
$(OBJS)\xrclib_xh_comboctrl.obj \
@@ -1790,6 +1792,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_xh_choic.obj \
$(OBJS)\monodll_xh_choicbk.obj \
$(OBJS)\monodll_xh_clrpicker.obj \
+ $(OBJS)\monodll_xh_cmdlinkbn.obj \
$(OBJS)\monodll_xh_collpane.obj \
$(OBJS)\monodll_xh_combo.obj \
$(OBJS)\monodll_xh_comboctrl.obj \
@@ -2517,6 +2520,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_xh_choic.obj \
$(OBJS)\monolib_xh_choicbk.obj \
$(OBJS)\monolib_xh_clrpicker.obj \
+ $(OBJS)\monolib_xh_cmdlinkbn.obj \
$(OBJS)\monolib_xh_collpane.obj \
$(OBJS)\monolib_xh_combo.obj \
$(OBJS)\monolib_xh_comboctrl.obj \
@@ -7128,6 +7132,9 @@ $(OBJS)\monodll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\monodll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\monodll_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\monodll_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
@@ -9366,6 +9373,9 @@ $(OBJS)\monolib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\monolib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\monolib_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\monolib_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
@@ -14683,6 +14693,9 @@ $(OBJS)\xrcdll_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\xrcdll_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\xrcdll_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\xrcdll_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) /c /nologo /TP /Fo$@ $(XRCDLL_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
@@ -14869,6 +14882,9 @@ $(OBJS)\xrclib_xh_choicbk.obj: ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\xrclib_xh_clrpicker.obj: ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_clrpicker.cpp
+$(OBJS)\xrclib_xh_cmdlinkbn.obj: ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_cmdlinkbn.cpp
+
$(OBJS)\xrclib_xh_collpane.obj: ..\..\src\xrc\xh_collpane.cpp
$(CXX) /c /nologo /TP /Fo$@ $(XRCLIB_CXXFLAGS) ..\..\src\xrc\xh_collpane.cpp
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index d7d68c40ca..de6c794ab1 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -148,6 +148,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_xh_choic.obj &
$(OBJS)\monodll_xh_choicbk.obj &
$(OBJS)\monodll_xh_clrpicker.obj &
+ $(OBJS)\monodll_xh_cmdlinkbn.obj &
$(OBJS)\monodll_xh_collpane.obj &
$(OBJS)\monodll_xh_combo.obj &
$(OBJS)\monodll_xh_comboctrl.obj &
@@ -880,6 +881,7 @@ ____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_xh_choic.obj &
$(OBJS)\monolib_xh_choicbk.obj &
$(OBJS)\monolib_xh_clrpicker.obj &
+ $(OBJS)\monolib_xh_cmdlinkbn.obj &
$(OBJS)\monolib_xh_collpane.obj &
$(OBJS)\monolib_xh_combo.obj &
$(OBJS)\monolib_xh_comboctrl.obj &
@@ -4400,6 +4402,7 @@ XRCDLL_OBJECTS = &
$(OBJS)\xrcdll_xh_choic.obj &
$(OBJS)\xrcdll_xh_choicbk.obj &
$(OBJS)\xrcdll_xh_clrpicker.obj &
+ $(OBJS)\xrcdll_xh_cmdlinkbn.obj &
$(OBJS)\xrcdll_xh_collpane.obj &
$(OBJS)\xrcdll_xh_combo.obj &
$(OBJS)\xrcdll_xh_comboctrl.obj &
@@ -4472,6 +4475,7 @@ XRCLIB_OBJECTS = &
$(OBJS)\xrclib_xh_choic.obj &
$(OBJS)\xrclib_xh_choicbk.obj &
$(OBJS)\xrclib_xh_clrpicker.obj &
+ $(OBJS)\xrclib_xh_cmdlinkbn.obj &
$(OBJS)\xrclib_xh_collpane.obj &
$(OBJS)\xrclib_xh_combo.obj &
$(OBJS)\xrclib_xh_comboctrl.obj &
@@ -6957,6 +6961,9 @@ $(OBJS)\monodll_xh_choicbk.obj : .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\monodll_xh_clrpicker.obj : .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+$(OBJS)\monodll_xh_cmdlinkbn.obj : .AUTODEPEND ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
$(OBJS)\monodll_xh_collpane.obj : .AUTODEPEND ..\..\src\xrc\xh_collpane.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -9195,6 +9202,9 @@ $(OBJS)\monolib_xh_choicbk.obj : .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\monolib_xh_clrpicker.obj : .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+$(OBJS)\monolib_xh_cmdlinkbn.obj : .AUTODEPEND ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
$(OBJS)\monolib_xh_collpane.obj : .AUTODEPEND ..\..\src\xrc\xh_collpane.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -14512,6 +14522,9 @@ $(OBJS)\xrcdll_xh_choicbk.obj : .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\xrcdll_xh_clrpicker.obj : .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
+$(OBJS)\xrcdll_xh_cmdlinkbn.obj : .AUTODEPEND ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
+
$(OBJS)\xrcdll_xh_collpane.obj : .AUTODEPEND ..\..\src\xrc\xh_collpane.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(XRCDLL_CXXFLAGS) $<
@@ -14698,6 +14711,9 @@ $(OBJS)\xrclib_xh_choicbk.obj : .AUTODEPEND ..\..\src\xrc\xh_choicbk.cpp
$(OBJS)\xrclib_xh_clrpicker.obj : .AUTODEPEND ..\..\src\xrc\xh_clrpicker.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
+$(OBJS)\xrclib_xh_cmdlinkbn.obj : .AUTODEPEND ..\..\src\xrc\xh_cmdlinkbn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
+
$(OBJS)\xrclib_xh_collpane.obj : .AUTODEPEND ..\..\src\xrc\xh_collpane.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(XRCLIB_CXXFLAGS) $<
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index c928a10c6d..8f83352bfc 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -6821,6 +6821,10 @@ SOURCE=..\..\include\wx\xrc\xh_clrpicker.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\xrc\xh_cmdlinkbn.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\xrc\xh_collpane.h
# End Source File
# Begin Source File
diff --git a/build/msw/wx_vc7_core.vcproj b/build/msw/wx_vc7_core.vcproj
index ca414ca1a5..949ee780d6 100644
--- a/build/msw/wx_vc7_core.vcproj
+++ b/build/msw/wx_vc7_core.vcproj
@@ -5710,6 +5710,9 @@
+
+
diff --git a/build/msw/wx_vc7_xrc.vcproj b/build/msw/wx_vc7_xrc.vcproj
index 1720c9531f..6cc172baf9 100644
--- a/build/msw/wx_vc7_xrc.vcproj
+++ b/build/msw/wx_vc7_xrc.vcproj
@@ -815,6 +815,9 @@
+
+
@@ -997,6 +1000,9 @@
+
+
diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj
index 6546f94c0a..de949701a2 100644
--- a/build/msw/wx_vc8_core.vcproj
+++ b/build/msw/wx_vc8_core.vcproj
@@ -7631,6 +7631,10 @@
RelativePath="..\..\include\wx\xrc\xh_clrpicker.h"
>
+
+
diff --git a/build/msw/wx_vc8_xrc.vcproj b/build/msw/wx_vc8_xrc.vcproj
index b70d0b21cf..bcc388e70d 100644
--- a/build/msw/wx_vc8_xrc.vcproj
+++ b/build/msw/wx_vc8_xrc.vcproj
@@ -1106,6 +1106,10 @@
RelativePath="..\..\include\wx\xrc\xh_clrpicker.h"
>
+
+
@@ -1348,6 +1352,10 @@
RelativePath="..\..\src\xrc\xh_clrpicker.cpp"
>
+
+
diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj
index 9d3c2c5e41..0761bb0df4 100644
--- a/build/msw/wx_vc9_core.vcproj
+++ b/build/msw/wx_vc9_core.vcproj
@@ -7627,6 +7627,10 @@
RelativePath="..\..\include\wx\xrc\xh_clrpicker.h"
>
+
+
diff --git a/build/msw/wx_vc9_xrc.vcproj b/build/msw/wx_vc9_xrc.vcproj
index 8bbc5859cb..5d64235b2c 100644
--- a/build/msw/wx_vc9_xrc.vcproj
+++ b/build/msw/wx_vc9_xrc.vcproj
@@ -1102,6 +1102,10 @@
RelativePath="..\..\include\wx\xrc\xh_clrpicker.h"
>
+
+
@@ -1344,6 +1348,10 @@
RelativePath="..\..\src\xrc\xh_clrpicker.cpp"
>
+
+
diff --git a/build/msw/wx_xrc.dsp b/build/msw/wx_xrc.dsp
index 9871b6a54b..f25fce836b 100644
--- a/build/msw/wx_xrc.dsp
+++ b/build/msw/wx_xrc.dsp
@@ -578,6 +578,10 @@ SOURCE=..\..\include\wx\xrc\xh_clrpicker.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\xrc\xh_cmdlinkbn.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\xrc\xh_collpane.h
# End Source File
# Begin Source File
@@ -818,6 +822,10 @@ SOURCE=..\..\src\xrc\xh_clrpicker.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\xrc\xh_cmdlinkbn.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\xrc\xh_collpane.cpp
# End Source File
# Begin Source File
diff --git a/docs/doxygen/overviews/xrc_format.h b/docs/doxygen/overviews/xrc_format.h
index 15c82b3a79..75ec8c814b 100644
--- a/docs/doxygen/overviews/xrc_format.h
+++ b/docs/doxygen/overviews/xrc_format.h
@@ -694,6 +694,23 @@ pseudo-class (similarly to @ref xrc_wxnotebook "wxNotebook" and its
Each @c choicebookpage has exactly one non-toplevel window as its child.
+@subsubsection xrc_wxcommandlinkbutton wxCommandLinkButton
+
+The wxCommandLinkButton contains a main title-like @c label and an optional
+@c note for longer description. The main @c label and the @c note can be
+concatenated into a single string using a new line character between them
+(notice that the @c note part can have more new lines in it).
+
+@beginTable
+@hdr3col{property, type, description}
+@row3col{label, @ref overview_xrcformat_type_text,
+ First line of text on the button, typically the label of an action that
+ will be made when the button is pressed. }
+@row3col{note, @ref overview_xrcformat_type_text,
+ Second line of text describing the action performed when the button is pressed. }
+@endTable
+
+
@subsubsection xrc_wxcollapsiblepane wxCollapsiblePane
@beginTable
diff --git a/include/wx/xrc/xh_all.h b/include/wx/xrc/xh_all.h
index 5c37387524..8c48afb37f 100644
--- a/include/wx/xrc/xh_all.h
+++ b/include/wx/xrc/xh_all.h
@@ -25,6 +25,7 @@
#include "wx/xrc/xh_choic.h"
#include "wx/xrc/xh_choicbk.h"
#include "wx/xrc/xh_clrpicker.h"
+#include "wx/xrc/xh_cmdlinkbn.h"
#include "wx/xrc/xh_collpane.h"
#include "wx/xrc/xh_combo.h"
#include "wx/xrc/xh_comboctrl.h"
diff --git a/include/wx/xrc/xh_cmdlinkbn.h b/include/wx/xrc/xh_cmdlinkbn.h
new file mode 100644
index 0000000000..3dbf6ba5a1
--- /dev/null
+++ b/include/wx/xrc/xh_cmdlinkbn.h
@@ -0,0 +1,32 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/xrc/xh_cmdlinkbn.h
+// Purpose: XML resource handler for command link buttons
+// Author: Kinaou Herve
+// Created: 2010-10-20
+// RCS-ID: $Id:$
+// Copyright: (c) 2010 wxWidgets development team
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_XH_CMDLINKBN_H_
+#define _WX_XH_CMDLINKBN_H_
+
+#include "wx/xrc/xmlres.h"
+
+#if wxUSE_XRC && wxUSE_COMMANDLINKBUTTON
+
+class WXDLLIMPEXP_XRC wxCommandLinkButtonXmlHandler : public wxXmlResourceHandler
+{
+public:
+ wxCommandLinkButtonXmlHandler();
+
+ virtual wxObject *DoCreateResource();
+ virtual bool CanHandle(wxXmlNode *node);
+
+private:
+ wxDECLARE_DYNAMIC_CLASS(wxCommandLinkButtonXmlHandler);
+};
+
+#endif // wxUSE_XRC && wxUSE_COMMANDLINKBUTTON
+
+#endif // _WX_XH_CMDLINKBN_H_
diff --git a/samples/xrc/rc/controls.xrc b/samples/xrc/rc/controls.xrc
index ea41b0869c..44979fa767 100644
--- a/samples/xrc/rc/controls.xrc
+++ b/samples/xrc/rc/controls.xrc
@@ -255,6 +255,21 @@
controls.xpm
+
+
+ wxALIGN_CENTRE|wxALL
+ 5
+
+
+ Whatever it might be
+
+
diff --git a/src/xrc/xh_cmdlinkbn.cpp b/src/xrc/xh_cmdlinkbn.cpp
new file mode 100644
index 0000000000..29ec197b28
--- /dev/null
+++ b/src/xrc/xh_cmdlinkbn.cpp
@@ -0,0 +1,60 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/xrc/xh_cmdlinkbn.cpp
+// Purpose: XRC resource for command link buttons
+// Author: Kinaou Herve
+// Created: 2010/10/20
+// RCS-ID: $Id:$
+// Copyright:
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_XRC && wxUSE_COMMANDLINKBUTTON
+
+#include "wx/xrc/xh_cmdlinkbn.h"
+
+#include "wx/commandlinkbutton.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxCommandLinkButtonXmlHandler, wxXmlResourceHandler)
+
+wxCommandLinkButtonXmlHandler::wxCommandLinkButtonXmlHandler()
+ : wxXmlResourceHandler()
+{
+ XRC_ADD_STYLE(wxBU_LEFT);
+ XRC_ADD_STYLE(wxBU_RIGHT);
+ XRC_ADD_STYLE(wxBU_TOP);
+ XRC_ADD_STYLE(wxBU_BOTTOM);
+ XRC_ADD_STYLE(wxBU_EXACTFIT);
+ AddWindowStyles();
+}
+
+wxObject *wxCommandLinkButtonXmlHandler::DoCreateResource()
+{
+ XRC_MAKE_INSTANCE(button, wxCommandLinkButton)
+
+ button->Create(m_parentAsWindow,
+ GetID(),
+ GetText(wxS("label")),
+ GetText(wxS("note")),
+ GetPosition(), GetSize(),
+ GetStyle(),
+ wxDefaultValidator,
+ GetName());
+
+ SetupWindow(button);
+
+ return button;
+}
+
+bool wxCommandLinkButtonXmlHandler::CanHandle(wxXmlNode *node)
+{
+ return IsOfClass(node, wxS("wxCommandLinkButton"));
+}
+
+#endif // wxUSE_XRC && wxUSE_COMMANDLINKBUTTON
diff --git a/src/xrc/xmlrsall.cpp b/src/xrc/xmlrsall.cpp
index 038901da60..a8e7ab2f2b 100644
--- a/src/xrc/xmlrsall.cpp
+++ b/src/xrc/xmlrsall.cpp
@@ -78,6 +78,9 @@ void wxXmlResource::InitAllHandlers()
#if wxUSE_COMBOCTRL
AddHandler(new wxComboCtrlXmlHandler);
#endif
+#if wxUSE_COMMANDLINKBUTTON
+ AddHandler(new wxCommandLinkButtonXmlHandler);
+#endif
#if wxUSE_DATEPICKCTRL
AddHandler(new wxDateCtrlXmlHandler);
#endif