diff --git a/Makefile.in b/Makefile.in
index fb031f6d7c..e9174f95fb 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -3759,6 +3759,7 @@ COND_WXUNIV_0_ADVANCED_HDR = \
wx/notifmsg.h \
wx/odcombo.h \
wx/propdlg.h \
+ wx/richtooltip.h \
wx/sashwin.h \
wx/sound.h \
wx/splash.h \
@@ -3810,6 +3811,7 @@ COND_WXUNIV_1_ADVANCED_HDR = \
wx/notifmsg.h \
wx/odcombo.h \
wx/propdlg.h \
+ wx/richtooltip.h \
wx/sashwin.h \
wx/sound.h \
wx/splash.h \
@@ -6143,6 +6145,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
monodll_gridcmn.o \
monodll_hyperlnkcmn.o \
monodll_odcombocmn.o \
+ monodll_richtooltipcmn.o \
monodll_aboutdlgg.o \
monodll_bannerwindow.o \
monodll_bmpcboxg.o \
@@ -6161,6 +6164,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS = \
monodll_notifmsgg.o \
monodll_odcombo.o \
monodll_propdlg.o \
+ monodll_generic_richtooltip.o \
monodll_sashwin.o \
monodll_splash.o \
monodll_generic_timectrl.o \
@@ -6178,6 +6182,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
monodll_gridcmn.o \
monodll_hyperlnkcmn.o \
monodll_odcombocmn.o \
+ monodll_richtooltipcmn.o \
monodll_aboutdlgg.o \
monodll_bannerwindow.o \
monodll_bmpcboxg.o \
@@ -6196,6 +6201,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS = \
monodll_notifmsgg.o \
monodll_odcombo.o \
monodll_propdlg.o \
+ monodll_generic_richtooltip.o \
monodll_sashwin.o \
monodll_splash.o \
monodll_generic_timectrl.o \
@@ -8097,6 +8103,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
monolib_gridcmn.o \
monolib_hyperlnkcmn.o \
monolib_odcombocmn.o \
+ monolib_richtooltipcmn.o \
monolib_aboutdlgg.o \
monolib_bannerwindow.o \
monolib_bmpcboxg.o \
@@ -8115,6 +8122,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 = \
monolib_notifmsgg.o \
monolib_odcombo.o \
monolib_propdlg.o \
+ monolib_generic_richtooltip.o \
monolib_sashwin.o \
monolib_splash.o \
monolib_generic_timectrl.o \
@@ -8132,6 +8140,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
monolib_gridcmn.o \
monolib_hyperlnkcmn.o \
monolib_odcombocmn.o \
+ monolib_richtooltipcmn.o \
monolib_aboutdlgg.o \
monolib_bannerwindow.o \
monolib_bmpcboxg.o \
@@ -8150,6 +8159,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 = \
monolib_notifmsgg.o \
monolib_odcombo.o \
monolib_propdlg.o \
+ monolib_generic_richtooltip.o \
monolib_sashwin.o \
monolib_splash.o \
monolib_generic_timectrl.o \
@@ -11893,6 +11903,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
advdll_gridcmn.o \
advdll_hyperlnkcmn.o \
advdll_odcombocmn.o \
+ advdll_richtooltipcmn.o \
advdll_aboutdlgg.o \
advdll_bannerwindow.o \
advdll_bmpcboxg.o \
@@ -11911,6 +11922,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 = \
advdll_notifmsgg.o \
advdll_odcombo.o \
advdll_propdlg.o \
+ advdll_generic_richtooltip.o \
advdll_sashwin.o \
advdll_splash.o \
advdll_generic_timectrl.o \
@@ -11928,6 +11940,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
advdll_gridcmn.o \
advdll_hyperlnkcmn.o \
advdll_odcombocmn.o \
+ advdll_richtooltipcmn.o \
advdll_aboutdlgg.o \
advdll_bannerwindow.o \
advdll_bmpcboxg.o \
@@ -11946,6 +11959,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 = \
advdll_notifmsgg.o \
advdll_odcombo.o \
advdll_propdlg.o \
+ advdll_generic_richtooltip.o \
advdll_sashwin.o \
advdll_splash.o \
advdll_generic_timectrl.o \
@@ -12007,6 +12021,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
advlib_gridcmn.o \
advlib_hyperlnkcmn.o \
advlib_odcombocmn.o \
+ advlib_richtooltipcmn.o \
advlib_aboutdlgg.o \
advlib_bannerwindow.o \
advlib_bmpcboxg.o \
@@ -12025,6 +12040,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 = \
advlib_notifmsgg.o \
advlib_odcombo.o \
advlib_propdlg.o \
+ advlib_generic_richtooltip.o \
advlib_sashwin.o \
advlib_splash.o \
advlib_generic_timectrl.o \
@@ -12042,6 +12058,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
advlib_gridcmn.o \
advlib_hyperlnkcmn.o \
advlib_odcombocmn.o \
+ advlib_richtooltipcmn.o \
advlib_aboutdlgg.o \
advlib_bannerwindow.o \
advlib_bmpcboxg.o \
@@ -12060,6 +12077,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 = \
advlib_notifmsgg.o \
advlib_odcombo.o \
advlib_propdlg.o \
+ advlib_generic_richtooltip.o \
advlib_sashwin.o \
advlib_splash.o \
advlib_generic_timectrl.o \
@@ -13348,6 +13366,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS = \
monodll_taskbarcmn.o \
monodll_msw_aboutdlg.o \
monodll_msw_notifmsg.o \
+ monodll_msw_richtooltip.o \
monodll_msw_sound.o \
monodll_msw_taskbar.o \
monodll_msw_joystick.o
@@ -13386,6 +13405,7 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS = \
monodll_taskbarcmn.o \
monodll_msw_aboutdlg.o \
monodll_msw_notifmsg.o \
+ monodll_msw_richtooltip.o \
monodll_msw_sound.o \
monodll_msw_taskbar.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS)
@@ -13534,6 +13554,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
monolib_taskbarcmn.o \
monolib_msw_aboutdlg.o \
monolib_msw_notifmsg.o \
+ monolib_msw_richtooltip.o \
monolib_msw_sound.o \
monolib_msw_taskbar.o \
monolib_msw_joystick.o
@@ -13572,6 +13593,7 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_0 = \
monolib_taskbarcmn.o \
monolib_msw_aboutdlg.o \
monolib_msw_notifmsg.o \
+ monolib_msw_richtooltip.o \
monolib_msw_sound.o \
monolib_msw_taskbar.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_0)
@@ -13818,6 +13840,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
advdll_taskbarcmn.o \
advdll_msw_aboutdlg.o \
advdll_msw_notifmsg.o \
+ advdll_msw_richtooltip.o \
advdll_msw_sound.o \
advdll_msw_taskbar.o \
advdll_msw_joystick.o
@@ -13856,6 +13879,7 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_8 = \
advdll_taskbarcmn.o \
advdll_msw_aboutdlg.o \
advdll_msw_notifmsg.o \
+ advdll_msw_richtooltip.o \
advdll_msw_sound.o \
advdll_msw_taskbar.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_8)
@@ -13906,6 +13930,7 @@ COND_TOOLKIT_MSW___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
advlib_taskbarcmn.o \
advlib_msw_aboutdlg.o \
advlib_msw_notifmsg.o \
+ advlib_msw_richtooltip.o \
advlib_msw_sound.o \
advlib_msw_taskbar.o \
advlib_msw_joystick.o
@@ -13944,6 +13969,7 @@ COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_9 = \
advlib_taskbarcmn.o \
advlib_msw_aboutdlg.o \
advlib_msw_notifmsg.o \
+ advlib_msw_richtooltip.o \
advlib_msw_sound.o \
advlib_msw_taskbar.o
@COND_TOOLKIT_WINCE@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_WINCE___ADVANCED_PLATFORM_SRC_OBJECTS_9)
@@ -20643,6 +20669,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@monodll_odcombocmn.o: $(srcdir)/src/common/odcombocmn.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/odcombocmn.cpp
+@COND_USE_GUI_1@monodll_richtooltipcmn.o: $(srcdir)/src/common/richtooltipcmn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/richtooltipcmn.cpp
+
@COND_USE_GUI_1@monodll_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
@@ -20697,6 +20726,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@monodll_propdlg.o: $(srcdir)/src/generic/propdlg.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/propdlg.cpp
+@COND_USE_GUI_1@monodll_generic_richtooltip.o: $(srcdir)/src/generic/richtooltip.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/richtooltip.cpp
+
@COND_USE_GUI_1@monodll_sashwin.o: $(srcdir)/src/generic/sashwin.cpp $(MONODLL_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/sashwin.cpp
@@ -20757,6 +20789,12 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1@monodll_msw_notifmsg.o: $(srcdir)/src/msw/notifmsg.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/notifmsg.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1@monodll_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_sound.o: $(srcdir)/src/msw/sound.cpp $(MONODLL_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/sound.cpp
@@ -26016,6 +26054,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@monolib_odcombocmn.o: $(srcdir)/src/common/odcombocmn.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/odcombocmn.cpp
+@COND_USE_GUI_1@monolib_richtooltipcmn.o: $(srcdir)/src/common/richtooltipcmn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/richtooltipcmn.cpp
+
@COND_USE_GUI_1@monolib_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
@@ -26070,6 +26111,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@monolib_propdlg.o: $(srcdir)/src/generic/propdlg.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/propdlg.cpp
+@COND_USE_GUI_1@monolib_generic_richtooltip.o: $(srcdir)/src/generic/richtooltip.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/richtooltip.cpp
+
@COND_USE_GUI_1@monolib_sashwin.o: $(srcdir)/src/generic/sashwin.cpp $(MONOLIB_ODEP)
@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/sashwin.cpp
@@ -26130,6 +26174,12 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1@monolib_msw_notifmsg.o: $(srcdir)/src/msw/notifmsg.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/notifmsg.cpp
+@COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
+@COND_TOOLKIT_WINCE_USE_GUI_1@monolib_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
@COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_sound.o: $(srcdir)/src/msw/sound.cpp $(MONOLIB_ODEP)
@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/sound.cpp
@@ -35586,6 +35636,9 @@ advdll_hyperlnkcmn.o: $(srcdir)/src/common/hyperlnkcmn.cpp $(ADVDLL_ODEP)
advdll_odcombocmn.o: $(srcdir)/src/common/odcombocmn.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/odcombocmn.cpp
+advdll_richtooltipcmn.o: $(srcdir)/src/common/richtooltipcmn.cpp $(ADVDLL_ODEP)
+ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/common/richtooltipcmn.cpp
+
advdll_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
@@ -35640,6 +35693,9 @@ advdll_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(ADVDLL_ODEP)
advdll_propdlg.o: $(srcdir)/src/generic/propdlg.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/propdlg.cpp
+advdll_generic_richtooltip.o: $(srcdir)/src/generic/richtooltip.cpp $(ADVDLL_ODEP)
+ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/richtooltip.cpp
+
advdll_sashwin.o: $(srcdir)/src/generic/sashwin.cpp $(ADVDLL_ODEP)
$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/sashwin.cpp
@@ -35700,6 +35756,12 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_WINCE@advdll_msw_notifmsg.o: $(srcdir)/src/msw/notifmsg.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_WINCE@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/notifmsg.cpp
+@COND_TOOLKIT_MSW@advdll_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
+@COND_TOOLKIT_WINCE@advdll_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_WINCE@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
@COND_TOOLKIT_MSW@advdll_msw_sound.o: $(srcdir)/src/msw/sound.cpp $(ADVDLL_ODEP)
@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/sound.cpp
@@ -35961,6 +36023,9 @@ advlib_hyperlnkcmn.o: $(srcdir)/src/common/hyperlnkcmn.cpp $(ADVLIB_ODEP)
advlib_odcombocmn.o: $(srcdir)/src/common/odcombocmn.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/odcombocmn.cpp
+advlib_richtooltipcmn.o: $(srcdir)/src/common/richtooltipcmn.cpp $(ADVLIB_ODEP)
+ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/common/richtooltipcmn.cpp
+
advlib_aboutdlgg.o: $(srcdir)/src/generic/aboutdlgg.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/aboutdlgg.cpp
@@ -36015,6 +36080,9 @@ advlib_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(ADVLIB_ODEP)
advlib_propdlg.o: $(srcdir)/src/generic/propdlg.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/propdlg.cpp
+advlib_generic_richtooltip.o: $(srcdir)/src/generic/richtooltip.cpp $(ADVLIB_ODEP)
+ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/richtooltip.cpp
+
advlib_sashwin.o: $(srcdir)/src/generic/sashwin.cpp $(ADVLIB_ODEP)
$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/sashwin.cpp
@@ -36075,6 +36143,12 @@ advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_WINCE@advlib_msw_notifmsg.o: $(srcdir)/src/msw/notifmsg.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_WINCE@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/notifmsg.cpp
+@COND_TOOLKIT_MSW@advlib_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
+@COND_TOOLKIT_WINCE@advlib_msw_richtooltip.o: $(srcdir)/src/msw/richtooltip.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_WINCE@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/richtooltip.cpp
+
@COND_TOOLKIT_MSW@advlib_msw_sound.o: $(srcdir)/src/msw/sound.cpp $(ADVLIB_ODEP)
@COND_TOOLKIT_MSW@ $(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/sound.cpp
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 1e73c71304..ad1aeda0e7 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -2961,6 +2961,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/common/gridcmn.cpp
src/common/hyperlnkcmn.cpp
src/common/odcombocmn.cpp
+ src/common/richtooltipcmn.cpp
src/generic/aboutdlgg.cpp
src/generic/bannerwindow.cpp
src/generic/bmpcboxg.cpp
@@ -2979,6 +2980,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/generic/notifmsgg.cpp
src/generic/odcombo.cpp
src/generic/propdlg.cpp
+ src/generic/richtooltip.cpp
src/generic/sashwin.cpp
src/generic/splash.cpp
src/generic/timectrl.cpp
@@ -3027,6 +3029,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
wx/notifmsg.h
wx/odcombo.h
wx/propdlg.h
+ wx/richtooltip.h
wx/sashwin.h
wx/sound.h
wx/splash.h
@@ -3041,6 +3044,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/common/taskbarcmn.cpp
src/msw/aboutdlg.cpp
src/msw/notifmsg.cpp
+ src/msw/richtooltip.cpp
src/msw/sound.cpp
src/msw/taskbar.cpp
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index d5711717d8..47b46c3e3c 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -2263,6 +2263,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_gridcmn.obj \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
+ $(OBJS)\monodll_richtooltipcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
@@ -2281,6 +2282,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
+ $(OBJS)\monodll_generic_richtooltip.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_generic_timectrl.obj \
@@ -2290,6 +2292,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
+ $(OBJS)\monodll_msw_richtooltip.obj \
$(OBJS)\monodll_sound.obj \
$(OBJS)\monodll_taskbar.obj \
$(OBJS)\monodll_joystick.obj \
@@ -2312,6 +2315,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_gridcmn.obj \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
+ $(OBJS)\monodll_richtooltipcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
@@ -2330,6 +2334,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
+ $(OBJS)\monodll_generic_richtooltip.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_generic_timectrl.obj \
@@ -2339,6 +2344,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
+ $(OBJS)\monodll_msw_richtooltip.obj \
$(OBJS)\monodll_sound.obj \
$(OBJS)\monodll_taskbar.obj \
$(OBJS)\monodll_joystick.obj \
@@ -3040,6 +3046,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_gridcmn.obj \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
+ $(OBJS)\monolib_richtooltipcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
@@ -3058,6 +3065,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
+ $(OBJS)\monolib_generic_richtooltip.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_generic_timectrl.obj \
@@ -3067,6 +3075,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
+ $(OBJS)\monolib_msw_richtooltip.obj \
$(OBJS)\monolib_sound.obj \
$(OBJS)\monolib_taskbar.obj \
$(OBJS)\monolib_joystick.obj \
@@ -3089,6 +3098,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_gridcmn.obj \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
+ $(OBJS)\monolib_richtooltipcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
@@ -3107,6 +3117,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
+ $(OBJS)\monolib_generic_richtooltip.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_generic_timectrl.obj \
@@ -3116,6 +3127,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
+ $(OBJS)\monolib_msw_richtooltip.obj \
$(OBJS)\monolib_sound.obj \
$(OBJS)\monolib_taskbar.obj \
$(OBJS)\monolib_joystick.obj \
@@ -4252,6 +4264,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_gridcmn.obj \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
+ $(OBJS)\advdll_richtooltipcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
@@ -4270,6 +4283,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
+ $(OBJS)\advdll_generic_richtooltip.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_generic_timectrl.obj \
@@ -4279,6 +4293,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
+ $(OBJS)\advdll_msw_richtooltip.obj \
$(OBJS)\advdll_sound.obj \
$(OBJS)\advdll_taskbar.obj \
$(OBJS)\advdll_joystick.obj \
@@ -4301,6 +4316,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_gridcmn.obj \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
+ $(OBJS)\advdll_richtooltipcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
@@ -4319,6 +4335,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
+ $(OBJS)\advdll_generic_richtooltip.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_generic_timectrl.obj \
@@ -4328,6 +4345,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
+ $(OBJS)\advdll_msw_richtooltip.obj \
$(OBJS)\advdll_sound.obj \
$(OBJS)\advdll_taskbar.obj \
$(OBJS)\advdll_joystick.obj \
@@ -4346,6 +4364,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_gridcmn.obj \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
+ $(OBJS)\advlib_richtooltipcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
@@ -4364,6 +4383,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
+ $(OBJS)\advlib_generic_richtooltip.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_generic_timectrl.obj \
@@ -4373,6 +4393,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
+ $(OBJS)\advlib_msw_richtooltip.obj \
$(OBJS)\advlib_sound.obj \
$(OBJS)\advlib_taskbar.obj \
$(OBJS)\advlib_joystick.obj \
@@ -4395,6 +4416,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_gridcmn.obj \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
+ $(OBJS)\advlib_richtooltipcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
@@ -4413,6 +4435,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
+ $(OBJS)\advlib_generic_richtooltip.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_generic_timectrl.obj \
@@ -4422,6 +4445,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
+ $(OBJS)\advlib_msw_richtooltip.obj \
$(OBJS)\advlib_sound.obj \
$(OBJS)\advlib_taskbar.obj \
$(OBJS)\advlib_joystick.obj \
@@ -8251,6 +8275,11 @@ $(OBJS)\monodll_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
!endif
@@ -8341,6 +8370,11 @@ $(OBJS)\monodll_propdlg.obj: ..\..\src\generic\propdlg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\sashwin.cpp
!endif
@@ -8386,6 +8420,11 @@ $(OBJS)\monodll_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\sound.cpp
!endif
@@ -10638,6 +10677,11 @@ $(OBJS)\monolib_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
!endif
@@ -10728,6 +10772,11 @@ $(OBJS)\monolib_propdlg.obj: ..\..\src\generic\propdlg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\sashwin.cpp
!endif
@@ -10773,6 +10822,11 @@ $(OBJS)\monolib_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\sound.cpp
!endif
@@ -14418,6 +14472,9 @@ $(OBJS)\advdll_hyperlnkcmn.obj: ..\..\src\common\hyperlnkcmn.cpp
$(OBJS)\advdll_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\odcombocmn.cpp
+$(OBJS)\advdll_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+
$(OBJS)\advdll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
@@ -14472,6 +14529,9 @@ $(OBJS)\advdll_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(OBJS)\advdll_propdlg.obj: ..\..\src\generic\propdlg.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\propdlg.cpp
+$(OBJS)\advdll_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+
$(OBJS)\advdll_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\sashwin.cpp
@@ -14499,6 +14559,9 @@ $(OBJS)\advdll_aboutdlg.obj: ..\..\src\msw\aboutdlg.cpp
$(OBJS)\advdll_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\notifmsg.cpp
+$(OBJS)\advdll_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+
$(OBJS)\advdll_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\sound.cpp
@@ -14559,6 +14622,9 @@ $(OBJS)\advlib_hyperlnkcmn.obj: ..\..\src\common\hyperlnkcmn.cpp
$(OBJS)\advlib_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\odcombocmn.cpp
+$(OBJS)\advlib_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+
$(OBJS)\advlib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
@@ -14613,6 +14679,9 @@ $(OBJS)\advlib_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(OBJS)\advlib_propdlg.obj: ..\..\src\generic\propdlg.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\propdlg.cpp
+$(OBJS)\advlib_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+
$(OBJS)\advlib_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\sashwin.cpp
@@ -14640,6 +14709,9 @@ $(OBJS)\advlib_aboutdlg.obj: ..\..\src\msw\aboutdlg.cpp
$(OBJS)\advlib_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\notifmsg.cpp
+$(OBJS)\advlib_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+
$(OBJS)\advlib_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\sound.cpp
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index 7ecbd48b78..1d29168a4c 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -2278,6 +2278,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_gridcmn.o \
$(OBJS)\monodll_hyperlnkcmn.o \
$(OBJS)\monodll_odcombocmn.o \
+ $(OBJS)\monodll_richtooltipcmn.o \
$(OBJS)\monodll_aboutdlgg.o \
$(OBJS)\monodll_bannerwindow.o \
$(OBJS)\monodll_bmpcboxg.o \
@@ -2296,6 +2297,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_notifmsgg.o \
$(OBJS)\monodll_odcombo.o \
$(OBJS)\monodll_propdlg.o \
+ $(OBJS)\monodll_generic_richtooltip.o \
$(OBJS)\monodll_sashwin.o \
$(OBJS)\monodll_splash.o \
$(OBJS)\monodll_generic_timectrl.o \
@@ -2305,6 +2307,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_taskbarcmn.o \
$(OBJS)\monodll_aboutdlg.o \
$(OBJS)\monodll_notifmsg.o \
+ $(OBJS)\monodll_msw_richtooltip.o \
$(OBJS)\monodll_sound.o \
$(OBJS)\monodll_taskbar.o \
$(OBJS)\monodll_joystick.o \
@@ -2327,6 +2330,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_gridcmn.o \
$(OBJS)\monodll_hyperlnkcmn.o \
$(OBJS)\monodll_odcombocmn.o \
+ $(OBJS)\monodll_richtooltipcmn.o \
$(OBJS)\monodll_aboutdlgg.o \
$(OBJS)\monodll_bannerwindow.o \
$(OBJS)\monodll_bmpcboxg.o \
@@ -2345,6 +2349,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_notifmsgg.o \
$(OBJS)\monodll_odcombo.o \
$(OBJS)\monodll_propdlg.o \
+ $(OBJS)\monodll_generic_richtooltip.o \
$(OBJS)\monodll_sashwin.o \
$(OBJS)\monodll_splash.o \
$(OBJS)\monodll_generic_timectrl.o \
@@ -2354,6 +2359,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_taskbarcmn.o \
$(OBJS)\monodll_aboutdlg.o \
$(OBJS)\monodll_notifmsg.o \
+ $(OBJS)\monodll_msw_richtooltip.o \
$(OBJS)\monodll_sound.o \
$(OBJS)\monodll_taskbar.o \
$(OBJS)\monodll_joystick.o \
@@ -3061,6 +3067,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_gridcmn.o \
$(OBJS)\monolib_hyperlnkcmn.o \
$(OBJS)\monolib_odcombocmn.o \
+ $(OBJS)\monolib_richtooltipcmn.o \
$(OBJS)\monolib_aboutdlgg.o \
$(OBJS)\monolib_bannerwindow.o \
$(OBJS)\monolib_bmpcboxg.o \
@@ -3079,6 +3086,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_notifmsgg.o \
$(OBJS)\monolib_odcombo.o \
$(OBJS)\monolib_propdlg.o \
+ $(OBJS)\monolib_generic_richtooltip.o \
$(OBJS)\monolib_sashwin.o \
$(OBJS)\monolib_splash.o \
$(OBJS)\monolib_generic_timectrl.o \
@@ -3088,6 +3096,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_taskbarcmn.o \
$(OBJS)\monolib_aboutdlg.o \
$(OBJS)\monolib_notifmsg.o \
+ $(OBJS)\monolib_msw_richtooltip.o \
$(OBJS)\monolib_sound.o \
$(OBJS)\monolib_taskbar.o \
$(OBJS)\monolib_joystick.o \
@@ -3110,6 +3119,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_gridcmn.o \
$(OBJS)\monolib_hyperlnkcmn.o \
$(OBJS)\monolib_odcombocmn.o \
+ $(OBJS)\monolib_richtooltipcmn.o \
$(OBJS)\monolib_aboutdlgg.o \
$(OBJS)\monolib_bannerwindow.o \
$(OBJS)\monolib_bmpcboxg.o \
@@ -3128,6 +3138,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_notifmsgg.o \
$(OBJS)\monolib_odcombo.o \
$(OBJS)\monolib_propdlg.o \
+ $(OBJS)\monolib_generic_richtooltip.o \
$(OBJS)\monolib_sashwin.o \
$(OBJS)\monolib_splash.o \
$(OBJS)\monolib_generic_timectrl.o \
@@ -3137,6 +3148,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_taskbarcmn.o \
$(OBJS)\monolib_aboutdlg.o \
$(OBJS)\monolib_notifmsg.o \
+ $(OBJS)\monolib_msw_richtooltip.o \
$(OBJS)\monolib_sound.o \
$(OBJS)\monolib_taskbar.o \
$(OBJS)\monolib_joystick.o \
@@ -4301,6 +4313,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_gridcmn.o \
$(OBJS)\advdll_hyperlnkcmn.o \
$(OBJS)\advdll_odcombocmn.o \
+ $(OBJS)\advdll_richtooltipcmn.o \
$(OBJS)\advdll_aboutdlgg.o \
$(OBJS)\advdll_bannerwindow.o \
$(OBJS)\advdll_bmpcboxg.o \
@@ -4319,6 +4332,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_notifmsgg.o \
$(OBJS)\advdll_odcombo.o \
$(OBJS)\advdll_propdlg.o \
+ $(OBJS)\advdll_generic_richtooltip.o \
$(OBJS)\advdll_sashwin.o \
$(OBJS)\advdll_splash.o \
$(OBJS)\advdll_generic_timectrl.o \
@@ -4328,6 +4342,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_taskbarcmn.o \
$(OBJS)\advdll_aboutdlg.o \
$(OBJS)\advdll_notifmsg.o \
+ $(OBJS)\advdll_msw_richtooltip.o \
$(OBJS)\advdll_sound.o \
$(OBJS)\advdll_taskbar.o \
$(OBJS)\advdll_joystick.o \
@@ -4350,6 +4365,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_gridcmn.o \
$(OBJS)\advdll_hyperlnkcmn.o \
$(OBJS)\advdll_odcombocmn.o \
+ $(OBJS)\advdll_richtooltipcmn.o \
$(OBJS)\advdll_aboutdlgg.o \
$(OBJS)\advdll_bannerwindow.o \
$(OBJS)\advdll_bmpcboxg.o \
@@ -4368,6 +4384,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_notifmsgg.o \
$(OBJS)\advdll_odcombo.o \
$(OBJS)\advdll_propdlg.o \
+ $(OBJS)\advdll_generic_richtooltip.o \
$(OBJS)\advdll_sashwin.o \
$(OBJS)\advdll_splash.o \
$(OBJS)\advdll_generic_timectrl.o \
@@ -4377,6 +4394,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_taskbarcmn.o \
$(OBJS)\advdll_aboutdlg.o \
$(OBJS)\advdll_notifmsg.o \
+ $(OBJS)\advdll_msw_richtooltip.o \
$(OBJS)\advdll_sound.o \
$(OBJS)\advdll_taskbar.o \
$(OBJS)\advdll_joystick.o \
@@ -4399,6 +4417,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_gridcmn.o \
$(OBJS)\advlib_hyperlnkcmn.o \
$(OBJS)\advlib_odcombocmn.o \
+ $(OBJS)\advlib_richtooltipcmn.o \
$(OBJS)\advlib_aboutdlgg.o \
$(OBJS)\advlib_bannerwindow.o \
$(OBJS)\advlib_bmpcboxg.o \
@@ -4417,6 +4436,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_notifmsgg.o \
$(OBJS)\advlib_odcombo.o \
$(OBJS)\advlib_propdlg.o \
+ $(OBJS)\advlib_generic_richtooltip.o \
$(OBJS)\advlib_sashwin.o \
$(OBJS)\advlib_splash.o \
$(OBJS)\advlib_generic_timectrl.o \
@@ -4426,6 +4446,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_taskbarcmn.o \
$(OBJS)\advlib_aboutdlg.o \
$(OBJS)\advlib_notifmsg.o \
+ $(OBJS)\advlib_msw_richtooltip.o \
$(OBJS)\advlib_sound.o \
$(OBJS)\advlib_taskbar.o \
$(OBJS)\advlib_joystick.o \
@@ -4448,6 +4469,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_gridcmn.o \
$(OBJS)\advlib_hyperlnkcmn.o \
$(OBJS)\advlib_odcombocmn.o \
+ $(OBJS)\advlib_richtooltipcmn.o \
$(OBJS)\advlib_aboutdlgg.o \
$(OBJS)\advlib_bannerwindow.o \
$(OBJS)\advlib_bmpcboxg.o \
@@ -4466,6 +4488,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_notifmsgg.o \
$(OBJS)\advlib_odcombo.o \
$(OBJS)\advlib_propdlg.o \
+ $(OBJS)\advlib_generic_richtooltip.o \
$(OBJS)\advlib_sashwin.o \
$(OBJS)\advlib_splash.o \
$(OBJS)\advlib_generic_timectrl.o \
@@ -4475,6 +4498,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_taskbarcmn.o \
$(OBJS)\advlib_aboutdlg.o \
$(OBJS)\advlib_notifmsg.o \
+ $(OBJS)\advlib_msw_richtooltip.o \
$(OBJS)\advlib_sound.o \
$(OBJS)\advlib_taskbar.o \
$(OBJS)\advlib_joystick.o \
@@ -8419,6 +8443,11 @@ $(OBJS)\monodll_odcombocmn.o: ../../src/common/odcombocmn.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_richtooltipcmn.o: ../../src/common/richtooltipcmn.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monodll_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -8509,6 +8538,11 @@ $(OBJS)\monodll_propdlg.o: ../../src/generic/propdlg.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_generic_richtooltip.o: ../../src/generic/richtooltip.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monodll_sashwin.o: ../../src/generic/sashwin.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -8554,6 +8588,11 @@ $(OBJS)\monodll_notifmsg.o: ../../src/msw/notifmsg.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_msw_richtooltip.o: ../../src/msw/richtooltip.cpp
+ $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monodll_sound.o: ../../src/msw/sound.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -10806,6 +10845,11 @@ $(OBJS)\monolib_odcombocmn.o: ../../src/common/odcombocmn.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_richtooltipcmn.o: ../../src/common/richtooltipcmn.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monolib_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -10896,6 +10940,11 @@ $(OBJS)\monolib_propdlg.o: ../../src/generic/propdlg.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_generic_richtooltip.o: ../../src/generic/richtooltip.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monolib_sashwin.o: ../../src/generic/sashwin.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -10941,6 +10990,11 @@ $(OBJS)\monolib_notifmsg.o: ../../src/msw/notifmsg.cpp
endif
ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_msw_richtooltip.o: ../../src/msw/richtooltip.cpp
+ $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
+ifeq ($(USE_GUI),1)
$(OBJS)\monolib_sound.o: ../../src/msw/sound.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
@@ -14586,6 +14640,9 @@ $(OBJS)\advdll_hyperlnkcmn.o: ../../src/common/hyperlnkcmn.cpp
$(OBJS)\advdll_odcombocmn.o: ../../src/common/odcombocmn.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_richtooltipcmn.o: ../../src/common/richtooltipcmn.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -14640,6 +14697,9 @@ $(OBJS)\advdll_odcombo.o: ../../src/generic/odcombo.cpp
$(OBJS)\advdll_propdlg.o: ../../src/generic/propdlg.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_generic_richtooltip.o: ../../src/generic/richtooltip.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_sashwin.o: ../../src/generic/sashwin.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -14667,6 +14727,9 @@ $(OBJS)\advdll_aboutdlg.o: ../../src/msw/aboutdlg.cpp
$(OBJS)\advdll_notifmsg.o: ../../src/msw/notifmsg.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advdll_msw_richtooltip.o: ../../src/msw/richtooltip.cpp
+ $(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advdll_sound.o: ../../src/msw/sound.cpp
$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -14727,6 +14790,9 @@ $(OBJS)\advlib_hyperlnkcmn.o: ../../src/common/hyperlnkcmn.cpp
$(OBJS)\advlib_odcombocmn.o: ../../src/common/odcombocmn.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_richtooltipcmn.o: ../../src/common/richtooltipcmn.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_aboutdlgg.o: ../../src/generic/aboutdlgg.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -14781,6 +14847,9 @@ $(OBJS)\advlib_odcombo.o: ../../src/generic/odcombo.cpp
$(OBJS)\advlib_propdlg.o: ../../src/generic/propdlg.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_generic_richtooltip.o: ../../src/generic/richtooltip.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_sashwin.o: ../../src/generic/sashwin.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -14808,6 +14877,9 @@ $(OBJS)\advlib_aboutdlg.o: ../../src/msw/aboutdlg.cpp
$(OBJS)\advlib_notifmsg.o: ../../src/msw/notifmsg.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\advlib_msw_richtooltip.o: ../../src/msw/richtooltip.cpp
+ $(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\advlib_sound.o: ../../src/msw/sound.cpp
$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index 51871e75ab..42bae81a24 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -2477,6 +2477,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_gridcmn.obj \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
+ $(OBJS)\monodll_richtooltipcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
@@ -2495,6 +2496,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
+ $(OBJS)\monodll_generic_richtooltip.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_generic_timectrl.obj \
@@ -2504,6 +2506,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
+ $(OBJS)\monodll_msw_richtooltip.obj \
$(OBJS)\monodll_sound.obj \
$(OBJS)\monodll_taskbar.obj \
$(OBJS)\monodll_joystick.obj \
@@ -2526,6 +2529,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_gridcmn.obj \
$(OBJS)\monodll_hyperlnkcmn.obj \
$(OBJS)\monodll_odcombocmn.obj \
+ $(OBJS)\monodll_richtooltipcmn.obj \
$(OBJS)\monodll_aboutdlgg.obj \
$(OBJS)\monodll_bannerwindow.obj \
$(OBJS)\monodll_bmpcboxg.obj \
@@ -2544,6 +2548,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_notifmsgg.obj \
$(OBJS)\monodll_odcombo.obj \
$(OBJS)\monodll_propdlg.obj \
+ $(OBJS)\monodll_generic_richtooltip.obj \
$(OBJS)\monodll_sashwin.obj \
$(OBJS)\monodll_splash.obj \
$(OBJS)\monodll_generic_timectrl.obj \
@@ -2553,6 +2558,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_taskbarcmn.obj \
$(OBJS)\monodll_aboutdlg.obj \
$(OBJS)\monodll_notifmsg.obj \
+ $(OBJS)\monodll_msw_richtooltip.obj \
$(OBJS)\monodll_sound.obj \
$(OBJS)\monodll_taskbar.obj \
$(OBJS)\monodll_joystick.obj \
@@ -3260,6 +3266,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_gridcmn.obj \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
+ $(OBJS)\monolib_richtooltipcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
@@ -3278,6 +3285,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
+ $(OBJS)\monolib_generic_richtooltip.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_generic_timectrl.obj \
@@ -3287,6 +3295,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
+ $(OBJS)\monolib_msw_richtooltip.obj \
$(OBJS)\monolib_sound.obj \
$(OBJS)\monolib_taskbar.obj \
$(OBJS)\monolib_joystick.obj \
@@ -3309,6 +3318,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_gridcmn.obj \
$(OBJS)\monolib_hyperlnkcmn.obj \
$(OBJS)\monolib_odcombocmn.obj \
+ $(OBJS)\monolib_richtooltipcmn.obj \
$(OBJS)\monolib_aboutdlgg.obj \
$(OBJS)\monolib_bannerwindow.obj \
$(OBJS)\monolib_bmpcboxg.obj \
@@ -3327,6 +3337,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_notifmsgg.obj \
$(OBJS)\monolib_odcombo.obj \
$(OBJS)\monolib_propdlg.obj \
+ $(OBJS)\monolib_generic_richtooltip.obj \
$(OBJS)\monolib_sashwin.obj \
$(OBJS)\monolib_splash.obj \
$(OBJS)\monolib_generic_timectrl.obj \
@@ -3336,6 +3347,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_taskbarcmn.obj \
$(OBJS)\monolib_aboutdlg.obj \
$(OBJS)\monolib_notifmsg.obj \
+ $(OBJS)\monolib_msw_richtooltip.obj \
$(OBJS)\monolib_sound.obj \
$(OBJS)\monolib_taskbar.obj \
$(OBJS)\monolib_joystick.obj \
@@ -4562,6 +4574,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_gridcmn.obj \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
+ $(OBJS)\advdll_richtooltipcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
@@ -4580,6 +4593,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
+ $(OBJS)\advdll_generic_richtooltip.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_generic_timectrl.obj \
@@ -4589,6 +4603,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
+ $(OBJS)\advdll_msw_richtooltip.obj \
$(OBJS)\advdll_sound.obj \
$(OBJS)\advdll_taskbar.obj \
$(OBJS)\advdll_joystick.obj \
@@ -4611,6 +4626,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_gridcmn.obj \
$(OBJS)\advdll_hyperlnkcmn.obj \
$(OBJS)\advdll_odcombocmn.obj \
+ $(OBJS)\advdll_richtooltipcmn.obj \
$(OBJS)\advdll_aboutdlgg.obj \
$(OBJS)\advdll_bannerwindow.obj \
$(OBJS)\advdll_bmpcboxg.obj \
@@ -4629,6 +4645,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_notifmsgg.obj \
$(OBJS)\advdll_odcombo.obj \
$(OBJS)\advdll_propdlg.obj \
+ $(OBJS)\advdll_generic_richtooltip.obj \
$(OBJS)\advdll_sashwin.obj \
$(OBJS)\advdll_splash.obj \
$(OBJS)\advdll_generic_timectrl.obj \
@@ -4638,6 +4655,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\advdll_taskbarcmn.obj \
$(OBJS)\advdll_aboutdlg.obj \
$(OBJS)\advdll_notifmsg.obj \
+ $(OBJS)\advdll_msw_richtooltip.obj \
$(OBJS)\advdll_sound.obj \
$(OBJS)\advdll_taskbar.obj \
$(OBJS)\advdll_joystick.obj \
@@ -4662,6 +4680,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_gridcmn.obj \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
+ $(OBJS)\advlib_richtooltipcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
@@ -4680,6 +4699,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
+ $(OBJS)\advlib_generic_richtooltip.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_generic_timectrl.obj \
@@ -4689,6 +4709,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
+ $(OBJS)\advlib_msw_richtooltip.obj \
$(OBJS)\advlib_sound.obj \
$(OBJS)\advlib_taskbar.obj \
$(OBJS)\advlib_joystick.obj \
@@ -4711,6 +4732,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_gridcmn.obj \
$(OBJS)\advlib_hyperlnkcmn.obj \
$(OBJS)\advlib_odcombocmn.obj \
+ $(OBJS)\advlib_richtooltipcmn.obj \
$(OBJS)\advlib_aboutdlgg.obj \
$(OBJS)\advlib_bannerwindow.obj \
$(OBJS)\advlib_bmpcboxg.obj \
@@ -4729,6 +4751,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_notifmsgg.obj \
$(OBJS)\advlib_odcombo.obj \
$(OBJS)\advlib_propdlg.obj \
+ $(OBJS)\advlib_generic_richtooltip.obj \
$(OBJS)\advlib_sashwin.obj \
$(OBJS)\advlib_splash.obj \
$(OBJS)\advlib_generic_timectrl.obj \
@@ -4738,6 +4761,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\advlib_taskbarcmn.obj \
$(OBJS)\advlib_aboutdlg.obj \
$(OBJS)\advlib_notifmsg.obj \
+ $(OBJS)\advlib_msw_richtooltip.obj \
$(OBJS)\advlib_sound.obj \
$(OBJS)\advlib_taskbar.obj \
$(OBJS)\advlib_joystick.obj \
@@ -8857,6 +8881,11 @@ $(OBJS)\monodll_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
!endif
@@ -8947,6 +8976,11 @@ $(OBJS)\monodll_propdlg.obj: ..\..\src\generic\propdlg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\generic\sashwin.cpp
!endif
@@ -8992,6 +9026,11 @@ $(OBJS)\monodll_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monodll_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\sound.cpp
!endif
@@ -11244,6 +11283,11 @@ $(OBJS)\monolib_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
!endif
@@ -11334,6 +11378,11 @@ $(OBJS)\monolib_propdlg.obj: ..\..\src\generic\propdlg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\generic\sashwin.cpp
!endif
@@ -11379,6 +11428,11 @@ $(OBJS)\monolib_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
!endif
!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+!endif
+
+!if "$(USE_GUI)" == "1"
$(OBJS)\monolib_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\sound.cpp
!endif
@@ -15024,6 +15078,9 @@ $(OBJS)\advdll_hyperlnkcmn.obj: ..\..\src\common\hyperlnkcmn.cpp
$(OBJS)\advdll_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\odcombocmn.cpp
+$(OBJS)\advdll_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+
$(OBJS)\advdll_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
@@ -15078,6 +15135,9 @@ $(OBJS)\advdll_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(OBJS)\advdll_propdlg.obj: ..\..\src\generic\propdlg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\propdlg.cpp
+$(OBJS)\advdll_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+
$(OBJS)\advdll_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\generic\sashwin.cpp
@@ -15105,6 +15165,9 @@ $(OBJS)\advdll_aboutdlg.obj: ..\..\src\msw\aboutdlg.cpp
$(OBJS)\advdll_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\notifmsg.cpp
+$(OBJS)\advdll_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+
$(OBJS)\advdll_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) ..\..\src\msw\sound.cpp
@@ -15165,6 +15228,9 @@ $(OBJS)\advlib_hyperlnkcmn.obj: ..\..\src\common\hyperlnkcmn.cpp
$(OBJS)\advlib_odcombocmn.obj: ..\..\src\common\odcombocmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\odcombocmn.cpp
+$(OBJS)\advlib_richtooltipcmn.obj: ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\common\richtooltipcmn.cpp
+
$(OBJS)\advlib_aboutdlgg.obj: ..\..\src\generic\aboutdlgg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\aboutdlgg.cpp
@@ -15219,6 +15285,9 @@ $(OBJS)\advlib_odcombo.obj: ..\..\src\generic\odcombo.cpp
$(OBJS)\advlib_propdlg.obj: ..\..\src\generic\propdlg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\propdlg.cpp
+$(OBJS)\advlib_generic_richtooltip.obj: ..\..\src\generic\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\richtooltip.cpp
+
$(OBJS)\advlib_sashwin.obj: ..\..\src\generic\sashwin.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\generic\sashwin.cpp
@@ -15246,6 +15315,9 @@ $(OBJS)\advlib_aboutdlg.obj: ..\..\src\msw\aboutdlg.cpp
$(OBJS)\advlib_notifmsg.obj: ..\..\src\msw\notifmsg.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\notifmsg.cpp
+$(OBJS)\advlib_msw_richtooltip.obj: ..\..\src\msw\richtooltip.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\richtooltip.cpp
+
$(OBJS)\advlib_sound.obj: ..\..\src\msw\sound.cpp
$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) ..\..\src\msw\sound.cpp
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index f85b42f068..60ca3f5095 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -796,6 +796,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_gridcmn.obj &
$(OBJS)\monodll_hyperlnkcmn.obj &
$(OBJS)\monodll_odcombocmn.obj &
+ $(OBJS)\monodll_richtooltipcmn.obj &
$(OBJS)\monodll_aboutdlgg.obj &
$(OBJS)\monodll_bannerwindow.obj &
$(OBJS)\monodll_bmpcboxg.obj &
@@ -814,6 +815,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_notifmsgg.obj &
$(OBJS)\monodll_odcombo.obj &
$(OBJS)\monodll_propdlg.obj &
+ $(OBJS)\monodll_generic_richtooltip.obj &
$(OBJS)\monodll_sashwin.obj &
$(OBJS)\monodll_splash.obj &
$(OBJS)\monodll_generic_timectrl.obj &
@@ -823,6 +825,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_taskbarcmn.obj &
$(OBJS)\monodll_aboutdlg.obj &
$(OBJS)\monodll_notifmsg.obj &
+ $(OBJS)\monodll_msw_richtooltip.obj &
$(OBJS)\monodll_sound.obj &
$(OBJS)\monodll_taskbar.obj &
$(OBJS)\monodll_joystick.obj &
@@ -845,6 +848,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_gridcmn.obj &
$(OBJS)\monodll_hyperlnkcmn.obj &
$(OBJS)\monodll_odcombocmn.obj &
+ $(OBJS)\monodll_richtooltipcmn.obj &
$(OBJS)\monodll_aboutdlgg.obj &
$(OBJS)\monodll_bannerwindow.obj &
$(OBJS)\monodll_bmpcboxg.obj &
@@ -863,6 +867,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_notifmsgg.obj &
$(OBJS)\monodll_odcombo.obj &
$(OBJS)\monodll_propdlg.obj &
+ $(OBJS)\monodll_generic_richtooltip.obj &
$(OBJS)\monodll_sashwin.obj &
$(OBJS)\monodll_splash.obj &
$(OBJS)\monodll_generic_timectrl.obj &
@@ -872,6 +877,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_taskbarcmn.obj &
$(OBJS)\monodll_aboutdlg.obj &
$(OBJS)\monodll_notifmsg.obj &
+ $(OBJS)\monodll_msw_richtooltip.obj &
$(OBJS)\monodll_sound.obj &
$(OBJS)\monodll_taskbar.obj &
$(OBJS)\monodll_joystick.obj &
@@ -1584,6 +1590,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_gridcmn.obj &
$(OBJS)\monolib_hyperlnkcmn.obj &
$(OBJS)\monolib_odcombocmn.obj &
+ $(OBJS)\monolib_richtooltipcmn.obj &
$(OBJS)\monolib_aboutdlgg.obj &
$(OBJS)\monolib_bannerwindow.obj &
$(OBJS)\monolib_bmpcboxg.obj &
@@ -1602,6 +1609,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_notifmsgg.obj &
$(OBJS)\monolib_odcombo.obj &
$(OBJS)\monolib_propdlg.obj &
+ $(OBJS)\monolib_generic_richtooltip.obj &
$(OBJS)\monolib_sashwin.obj &
$(OBJS)\monolib_splash.obj &
$(OBJS)\monolib_generic_timectrl.obj &
@@ -1611,6 +1619,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_taskbarcmn.obj &
$(OBJS)\monolib_aboutdlg.obj &
$(OBJS)\monolib_notifmsg.obj &
+ $(OBJS)\monolib_msw_richtooltip.obj &
$(OBJS)\monolib_sound.obj &
$(OBJS)\monolib_taskbar.obj &
$(OBJS)\monolib_joystick.obj &
@@ -1633,6 +1642,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_gridcmn.obj &
$(OBJS)\monolib_hyperlnkcmn.obj &
$(OBJS)\monolib_odcombocmn.obj &
+ $(OBJS)\monolib_richtooltipcmn.obj &
$(OBJS)\monolib_aboutdlgg.obj &
$(OBJS)\monolib_bannerwindow.obj &
$(OBJS)\monolib_bmpcboxg.obj &
@@ -1651,6 +1661,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_notifmsgg.obj &
$(OBJS)\monolib_odcombo.obj &
$(OBJS)\monolib_propdlg.obj &
+ $(OBJS)\monolib_generic_richtooltip.obj &
$(OBJS)\monolib_sashwin.obj &
$(OBJS)\monolib_splash.obj &
$(OBJS)\monolib_generic_timectrl.obj &
@@ -1660,6 +1671,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_taskbarcmn.obj &
$(OBJS)\monolib_aboutdlg.obj &
$(OBJS)\monolib_notifmsg.obj &
+ $(OBJS)\monolib_msw_richtooltip.obj &
$(OBJS)\monolib_sound.obj &
$(OBJS)\monolib_taskbar.obj &
$(OBJS)\monolib_joystick.obj &
@@ -2840,6 +2852,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_gridcmn.obj &
$(OBJS)\advdll_hyperlnkcmn.obj &
$(OBJS)\advdll_odcombocmn.obj &
+ $(OBJS)\advdll_richtooltipcmn.obj &
$(OBJS)\advdll_aboutdlgg.obj &
$(OBJS)\advdll_bannerwindow.obj &
$(OBJS)\advdll_bmpcboxg.obj &
@@ -2858,6 +2871,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_notifmsgg.obj &
$(OBJS)\advdll_odcombo.obj &
$(OBJS)\advdll_propdlg.obj &
+ $(OBJS)\advdll_generic_richtooltip.obj &
$(OBJS)\advdll_sashwin.obj &
$(OBJS)\advdll_splash.obj &
$(OBJS)\advdll_generic_timectrl.obj &
@@ -2867,6 +2881,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_taskbarcmn.obj &
$(OBJS)\advdll_aboutdlg.obj &
$(OBJS)\advdll_notifmsg.obj &
+ $(OBJS)\advdll_msw_richtooltip.obj &
$(OBJS)\advdll_sound.obj &
$(OBJS)\advdll_taskbar.obj &
$(OBJS)\advdll_joystick.obj &
@@ -2889,6 +2904,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_gridcmn.obj &
$(OBJS)\advdll_hyperlnkcmn.obj &
$(OBJS)\advdll_odcombocmn.obj &
+ $(OBJS)\advdll_richtooltipcmn.obj &
$(OBJS)\advdll_aboutdlgg.obj &
$(OBJS)\advdll_bannerwindow.obj &
$(OBJS)\advdll_bmpcboxg.obj &
@@ -2907,6 +2923,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_notifmsgg.obj &
$(OBJS)\advdll_odcombo.obj &
$(OBJS)\advdll_propdlg.obj &
+ $(OBJS)\advdll_generic_richtooltip.obj &
$(OBJS)\advdll_sashwin.obj &
$(OBJS)\advdll_splash.obj &
$(OBJS)\advdll_generic_timectrl.obj &
@@ -2916,6 +2933,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\advdll_taskbarcmn.obj &
$(OBJS)\advdll_aboutdlg.obj &
$(OBJS)\advdll_notifmsg.obj &
+ $(OBJS)\advdll_msw_richtooltip.obj &
$(OBJS)\advdll_sound.obj &
$(OBJS)\advdll_taskbar.obj &
$(OBJS)\advdll_joystick.obj &
@@ -2940,6 +2958,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_gridcmn.obj &
$(OBJS)\advlib_hyperlnkcmn.obj &
$(OBJS)\advlib_odcombocmn.obj &
+ $(OBJS)\advlib_richtooltipcmn.obj &
$(OBJS)\advlib_aboutdlgg.obj &
$(OBJS)\advlib_bannerwindow.obj &
$(OBJS)\advlib_bmpcboxg.obj &
@@ -2958,6 +2977,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_notifmsgg.obj &
$(OBJS)\advlib_odcombo.obj &
$(OBJS)\advlib_propdlg.obj &
+ $(OBJS)\advlib_generic_richtooltip.obj &
$(OBJS)\advlib_sashwin.obj &
$(OBJS)\advlib_splash.obj &
$(OBJS)\advlib_generic_timectrl.obj &
@@ -2967,6 +2987,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_taskbarcmn.obj &
$(OBJS)\advlib_aboutdlg.obj &
$(OBJS)\advlib_notifmsg.obj &
+ $(OBJS)\advlib_msw_richtooltip.obj &
$(OBJS)\advlib_sound.obj &
$(OBJS)\advlib_taskbar.obj &
$(OBJS)\advlib_joystick.obj &
@@ -2989,6 +3010,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_gridcmn.obj &
$(OBJS)\advlib_hyperlnkcmn.obj &
$(OBJS)\advlib_odcombocmn.obj &
+ $(OBJS)\advlib_richtooltipcmn.obj &
$(OBJS)\advlib_aboutdlgg.obj &
$(OBJS)\advlib_bannerwindow.obj &
$(OBJS)\advlib_bmpcboxg.obj &
@@ -3007,6 +3029,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_notifmsgg.obj &
$(OBJS)\advlib_odcombo.obj &
$(OBJS)\advlib_propdlg.obj &
+ $(OBJS)\advlib_generic_richtooltip.obj &
$(OBJS)\advlib_sashwin.obj &
$(OBJS)\advlib_splash.obj &
$(OBJS)\advlib_generic_timectrl.obj &
@@ -3016,6 +3039,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\advlib_taskbarcmn.obj &
$(OBJS)\advlib_aboutdlg.obj &
$(OBJS)\advlib_notifmsg.obj &
+ $(OBJS)\advlib_msw_richtooltip.obj &
$(OBJS)\advlib_sound.obj &
$(OBJS)\advlib_taskbar.obj &
$(OBJS)\advlib_joystick.obj &
@@ -8690,6 +8714,11 @@ $(OBJS)\monodll_odcombocmn.obj : .AUTODEPEND ..\..\src\common\odcombocmn.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monodll_richtooltipcmn.obj : .AUTODEPEND ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monodll_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
@@ -8780,6 +8809,11 @@ $(OBJS)\monodll_propdlg.obj : .AUTODEPEND ..\..\src\generic\propdlg.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monodll_generic_richtooltip.obj : .AUTODEPEND ..\..\src\generic\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monodll_sashwin.obj : .AUTODEPEND ..\..\src\generic\sashwin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
@@ -8825,6 +8859,11 @@ $(OBJS)\monodll_notifmsg.obj : .AUTODEPEND ..\..\src\msw\notifmsg.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monodll_msw_richtooltip.obj : .AUTODEPEND ..\..\src\msw\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monodll_sound.obj : .AUTODEPEND ..\..\src\msw\sound.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif
@@ -11077,6 +11116,11 @@ $(OBJS)\monolib_odcombocmn.obj : .AUTODEPEND ..\..\src\common\odcombocmn.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monolib_richtooltipcmn.obj : .AUTODEPEND ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monolib_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
@@ -11167,6 +11211,11 @@ $(OBJS)\monolib_propdlg.obj : .AUTODEPEND ..\..\src\generic\propdlg.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monolib_generic_richtooltip.obj : .AUTODEPEND ..\..\src\generic\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monolib_sashwin.obj : .AUTODEPEND ..\..\src\generic\sashwin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
@@ -11212,6 +11261,11 @@ $(OBJS)\monolib_notifmsg.obj : .AUTODEPEND ..\..\src\msw\notifmsg.cpp
!endif
!ifeq USE_GUI 1
+$(OBJS)\monolib_msw_richtooltip.obj : .AUTODEPEND ..\..\src\msw\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
+!ifeq USE_GUI 1
$(OBJS)\monolib_sound.obj : .AUTODEPEND ..\..\src\msw\sound.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif
@@ -14857,6 +14911,9 @@ $(OBJS)\advdll_hyperlnkcmn.obj : .AUTODEPEND ..\..\src\common\hyperlnkcmn.cpp
$(OBJS)\advdll_odcombocmn.obj : .AUTODEPEND ..\..\src\common\odcombocmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_richtooltipcmn.obj : .AUTODEPEND ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@@ -14911,6 +14968,9 @@ $(OBJS)\advdll_odcombo.obj : .AUTODEPEND ..\..\src\generic\odcombo.cpp
$(OBJS)\advdll_propdlg.obj : .AUTODEPEND ..\..\src\generic\propdlg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_generic_richtooltip.obj : .AUTODEPEND ..\..\src\generic\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_sashwin.obj : .AUTODEPEND ..\..\src\generic\sashwin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@@ -14938,6 +14998,9 @@ $(OBJS)\advdll_aboutdlg.obj : .AUTODEPEND ..\..\src\msw\aboutdlg.cpp
$(OBJS)\advdll_notifmsg.obj : .AUTODEPEND ..\..\src\msw\notifmsg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+$(OBJS)\advdll_msw_richtooltip.obj : .AUTODEPEND ..\..\src\msw\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
$(OBJS)\advdll_sound.obj : .AUTODEPEND ..\..\src\msw\sound.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
@@ -14998,6 +15061,9 @@ $(OBJS)\advlib_hyperlnkcmn.obj : .AUTODEPEND ..\..\src\common\hyperlnkcmn.cpp
$(OBJS)\advlib_odcombocmn.obj : .AUTODEPEND ..\..\src\common\odcombocmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_richtooltipcmn.obj : .AUTODEPEND ..\..\src\common\richtooltipcmn.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_aboutdlgg.obj : .AUTODEPEND ..\..\src\generic\aboutdlgg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
@@ -15052,6 +15118,9 @@ $(OBJS)\advlib_odcombo.obj : .AUTODEPEND ..\..\src\generic\odcombo.cpp
$(OBJS)\advlib_propdlg.obj : .AUTODEPEND ..\..\src\generic\propdlg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_generic_richtooltip.obj : .AUTODEPEND ..\..\src\generic\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_sashwin.obj : .AUTODEPEND ..\..\src\generic\sashwin.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
@@ -15079,6 +15148,9 @@ $(OBJS)\advlib_aboutdlg.obj : .AUTODEPEND ..\..\src\msw\aboutdlg.cpp
$(OBJS)\advlib_notifmsg.obj : .AUTODEPEND ..\..\src\msw\notifmsg.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+$(OBJS)\advlib_msw_richtooltip.obj : .AUTODEPEND ..\..\src\msw\richtooltip.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
$(OBJS)\advlib_sound.obj : .AUTODEPEND ..\..\src\msw\sound.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
diff --git a/build/msw/wx_adv.dsp b/build/msw/wx_adv.dsp
index c207230558..b3827a86e0 100644
--- a/build/msw/wx_adv.dsp
+++ b/build/msw/wx_adv.dsp
@@ -278,6 +278,10 @@ SOURCE=..\..\src\common\odcombocmn.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\common\richtooltipcmn.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\common\taskbarcmn.cpp
# End Source File
# End Group
@@ -543,6 +547,10 @@ SOURCE=..\..\src\msw\notifmsg.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\msw\richtooltip.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\msw\sound.cpp
# End Source File
# Begin Source File
@@ -701,6 +709,10 @@ SOURCE=..\..\src\generic\propdlg.cpp
# End Source File
# Begin Source File
+SOURCE=..\..\src\generic\richtooltip.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\generic\sashwin.cpp
# End Source File
# Begin Source File
@@ -1174,6 +1186,10 @@ SOURCE=..\..\include\wx\propdlg.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\richtooltip.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\sashwin.h
# End Source File
# Begin Source File
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index e9ee7ffc94..2ef75436e3 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -6792,6 +6792,10 @@ SOURCE=..\..\include\wx\richtext\richtextxml.h
# End Source File
# Begin Source File
+SOURCE=..\..\include\wx\richtooltip.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\wx\sashwin.h
# End Source File
# Begin Source File
diff --git a/build/msw/wx_vc7_adv.vcproj b/build/msw/wx_vc7_adv.vcproj
index 73f27ad070..ecfa5714ff 100644
--- a/build/msw/wx_vc7_adv.vcproj
+++ b/build/msw/wx_vc7_adv.vcproj
@@ -601,6 +601,9 @@
RelativePath="..\..\src\common\odcombocmn.cpp">
+
+
@@ -722,6 +725,57 @@
RelativePath="..\..\src\msw\notifmsg.cpp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -996,6 +1000,74 @@
>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1157,6 +1229,74 @@
>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1673,6 +1813,10 @@
>
+
+
diff --git a/build/msw/wx_vc8_core.vcproj b/build/msw/wx_vc8_core.vcproj
index 8dd8c705af..b62f508d59 100644
--- a/build/msw/wx_vc8_core.vcproj
+++ b/build/msw/wx_vc8_core.vcproj
@@ -7580,6 +7580,10 @@
>
+
+
diff --git a/build/msw/wx_vc9_adv.vcproj b/build/msw/wx_vc9_adv.vcproj
index 9d0358931d..c9b2307b77 100644
--- a/build/msw/wx_vc9_adv.vcproj
+++ b/build/msw/wx_vc9_adv.vcproj
@@ -831,6 +831,10 @@
>
+
+
@@ -992,6 +996,74 @@
>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1153,6 +1225,74 @@
>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1669,6 +1809,10 @@
>
+
+
diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj
index 4a088b8b7b..3b8f55ca53 100644
--- a/build/msw/wx_vc9_core.vcproj
+++ b/build/msw/wx_vc9_core.vcproj
@@ -7576,6 +7576,10 @@
>
+
+
diff --git a/configure b/configure
index 4a875dff04..46e9ce3397 100755
--- a/configure
+++ b/configure
@@ -1854,6 +1854,7 @@ Optional Features:
--enable-radiobox use wxRadioBox class
--enable-radiobtn use wxRadioButton class
--enable-richmsgdlg use wxRichMessageDialog class
+ --enable-richtooltip use wxRichToolTip class
--enable-rearrangectrl use wxRearrangeList/Ctrl/Dialog
--enable-sash use wxSashWindow class
--enable-scrollbar use wxScrollBar class and scrollable windows
@@ -9900,6 +9901,7 @@ if test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_RADIOBOX=no
DEFAULT_wxUSE_RADIOBTN=no
DEFAULT_wxUSE_RICHMSGDLG=no
+ DEFAULT_wxUSE_RICHTOOLTIP=no
DEFAULT_wxUSE_REARRANGECTRL=no
DEFAULT_wxUSE_SASH=no
DEFAULT_wxUSE_SCROLLBAR=no
@@ -11906,6 +11908,50 @@ fi
echo "${ECHO_T}$result" >&6; }
+ enablestring=
+ defaultval=$wxUSE_ALL_FEATURES
+ if test -z "$defaultval"; then
+ if test x"$enablestring" = xdisable; then
+ defaultval=yes
+ else
+ defaultval=no
+ fi
+ fi
+
+ { echo "$as_me:$LINENO: checking for --${enablestring:-enable}-richtooltip" >&5
+echo $ECHO_N "checking for --${enablestring:-enable}-richtooltip... $ECHO_C" >&6; }
+ # Check whether --enable-richtooltip was given.
+if test "${enable_richtooltip+set}" = set; then
+ enableval=$enable_richtooltip;
+ if test "$enableval" = yes; then
+ wx_cv_use_richtooltip='wxUSE_RICHTOOLTIP=yes'
+ else
+ wx_cv_use_richtooltip='wxUSE_RICHTOOLTIP=no'
+ fi
+
+else
+
+ wx_cv_use_richtooltip='wxUSE_RICHTOOLTIP=${'DEFAULT_wxUSE_RICHTOOLTIP":-$defaultval}"
+
+fi
+
+
+ eval "$wx_cv_use_richtooltip"
+
+ if test x"$enablestring" = xdisable; then
+ if test $wxUSE_RICHTOOLTIP = no; then
+ result=yes
+ else
+ result=no
+ fi
+ else
+ result=$wxUSE_RICHTOOLTIP
+ fi
+
+ { echo "$as_me:$LINENO: result: $result" >&5
+echo "${ECHO_T}$result" >&6; }
+
+
enablestring=
defaultval=$wxUSE_ALL_FEATURES
if test -z "$defaultval"; then
@@ -47880,6 +47926,13 @@ _ACEOF
fi
+if test "$wxUSE_RICHTOOLTIP" = "yes"; then
+ cat >>confdefs.h <<\_ACEOF
+#define wxUSE_RICHTOOLTIP 1
+_ACEOF
+
+fi
+
if test "$wxUSE_SASH" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define wxUSE_SASH 1
@@ -50447,7 +50500,7 @@ else
fi
- INSTALL_DIR="mkdir -p"
+ INSTALL_DIR="mkdir -p"
LDFLAGS_GUI=
diff --git a/configure.in b/configure.in
index 06768cdcf4..df84bd2feb 100644
--- a/configure.in
+++ b/configure.in
@@ -915,6 +915,7 @@ if test "$wxUSE_CONTROLS" = "no"; then
DEFAULT_wxUSE_RADIOBOX=no
DEFAULT_wxUSE_RADIOBTN=no
DEFAULT_wxUSE_RICHMSGDLG=no
+ DEFAULT_wxUSE_RICHTOOLTIP=no
DEFAULT_wxUSE_REARRANGECTRL=no
DEFAULT_wxUSE_SASH=no
DEFAULT_wxUSE_SCROLLBAR=no
@@ -987,6 +988,7 @@ WX_ARG_FEATURE(popupwin, [ --enable-popupwin use wxPopUpWindow class],
WX_ARG_FEATURE(radiobox, [ --enable-radiobox use wxRadioBox class], wxUSE_RADIOBOX)
WX_ARG_FEATURE(radiobtn, [ --enable-radiobtn use wxRadioButton class], wxUSE_RADIOBTN)
WX_ARG_FEATURE(richmsgdlg, [ --enable-richmsgdlg use wxRichMessageDialog class], wxUSE_RICHMSGDLG)
+WX_ARG_FEATURE(richtooltip, [ --enable-richtooltip use wxRichToolTip class], wxUSE_RICHTOOLTIP)
WX_ARG_FEATURE(rearrangectrl,[ --enable-rearrangectrl use wxRearrangeList/Ctrl/Dialog], wxUSE_REARRANGECTRL)
WX_ARG_FEATURE(sash, [ --enable-sash use wxSashWindow class], wxUSE_SASH)
WX_ARG_FEATURE(scrollbar, [ --enable-scrollbar use wxScrollBar class and scrollable windows], wxUSE_SCROLLBAR)
@@ -7036,6 +7038,10 @@ if test "$wxUSE_RICHMSGDLG" = "yes"; then
AC_DEFINE(wxUSE_RICHMSGDLG)
fi
+if test "$wxUSE_RICHTOOLTIP" = "yes"; then
+ AC_DEFINE(wxUSE_RICHTOOLTIP)
+fi
+
if test "$wxUSE_SASH" = "yes"; then
AC_DEFINE(wxUSE_SASH)
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS sashtest"
diff --git a/docs/changes.txt b/docs/changes.txt
index 070a777433..45548d7650 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -459,10 +459,12 @@ All (GUI):
- Added wxWebView library (Steven Lamerton & Auria, GSoC 2011 project).
- Added wxTreeListCtrl class.
- Added wxTimePickerCtrl class.
+- Added wxRichToolTip class.
- Added documented, public wxNavigationEnabled<> class.
- Added wxTextCtrl::PositionToCoords() (Navaneeth).
- Added support for wxHELP button to wxMessageDialog.
- Added wxBannerWindow class.
+- Allow setting window shape to arbitrary wxGraphicsPath.
- Added wxTextEntry::AutoCompleteDirectories().
- Support float, double and file name values in wxGenericValidator (troelsk).
- Fix keyboard navigation in wxGrid with hidden columns (ivan_14_32).
diff --git a/docs/doxygen/images/wxgtk/richtooltip.png b/docs/doxygen/images/wxgtk/richtooltip.png
new file mode 100644
index 0000000000..ded9c1d079
Binary files /dev/null and b/docs/doxygen/images/wxgtk/richtooltip.png differ
diff --git a/docs/doxygen/images/wxmac/richtooltip.png b/docs/doxygen/images/wxmac/richtooltip.png
new file mode 100644
index 0000000000..4d91849d62
Binary files /dev/null and b/docs/doxygen/images/wxmac/richtooltip.png differ
diff --git a/docs/doxygen/images/wxmsw/richtooltip.png b/docs/doxygen/images/wxmsw/richtooltip.png
new file mode 100644
index 0000000000..2521720b8e
Binary files /dev/null and b/docs/doxygen/images/wxmsw/richtooltip.png differ
diff --git a/docs/doxygen/mainpages/cat_classes.h b/docs/doxygen/mainpages/cat_classes.h
index ad5b0dedf4..fd4c127f37 100644
--- a/docs/doxygen/mainpages/cat_classes.h
+++ b/docs/doxygen/mainpages/cat_classes.h
@@ -243,6 +243,7 @@ The following are a variety of classes that are derived from wxWindow.
variable sizes.
@li wxGrid: A grid (table) window
@li wxInfoBar: An information bar usually shown on top of the main window.
+@li wxRichToolTip: A customizable tooltip.
@li wxSplitterWindow: Window which can be split vertically or horizontally
@li wxStatusBar: Implements the status bar on a frame
@li wxToolBar: Toolbar class
diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h
index 8b9ff36c1f..5278a6490b 100644
--- a/include/wx/chkconf.h
+++ b/include/wx/chkconf.h
@@ -976,6 +976,14 @@
# endif
#endif /* !defined(wxUSE_RICHMSGDLG) */
+#ifndef wxUSE_RICHTOOLTIP
+# ifdef wxABORT_ON_CONFIG_ERROR
+# error "wxUSE_RICHTOOLTIP must be defined, please read comment near the top of this file."
+# else
+# define wxUSE_RICHTOOLTIP 0
+# endif
+#endif /* !defined(wxUSE_RICHTOOLTIP) */
+
#ifndef wxUSE_SASH
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_SASH must be defined, please read comment near the top of this file."
diff --git a/include/wx/generic/private/richtooltip.h b/include/wx/generic/private/richtooltip.h
new file mode 100644
index 0000000000..baaf273011
--- /dev/null
+++ b/include/wx/generic/private/richtooltip.h
@@ -0,0 +1,59 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/generic/private/richtooltip.h
+// Purpose: wxRichToolTipGenericImpl declaration.
+// Author: Vadim Zeitlin
+// Created: 2011-10-18
+// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_PRIVATE_RICHTOOLTIP_H_
+#define _GENERIC_PRIVATE_RICHTOOLTIP_H_
+
+// ----------------------------------------------------------------------------
+// wxRichToolTipGenericImpl: defines generic wxRichToolTip implementation.
+// ----------------------------------------------------------------------------
+
+class wxRichToolTipGenericImpl : public wxRichToolTipImpl
+{
+public:
+ wxRichToolTipGenericImpl(const wxString& title, const wxString& message) :
+ m_title(title),
+ m_message(message)
+ {
+ m_tipKind = wxTipKind_Auto;
+
+ // This is pretty arbitrary, we could follow MSW and use some multiple
+ // of double-click time here.
+ m_timeout = 5000;
+ }
+
+ virtual void SetBackgroundColour(const wxColour& col,
+ const wxColour& colEnd);
+ virtual void SetCustomIcon(const wxIcon& icon);
+ virtual void SetStandardIcon(int icon);
+ virtual void SetTimeout(unsigned milliseconds);
+ virtual void SetTipKind(wxTipKind tipKind);
+ virtual void SetTitleFont(const wxFont& font);
+
+ virtual void ShowFor(wxWindow* win);
+
+protected:
+ wxString m_title,
+ m_message;
+
+private:
+ wxIcon m_icon;
+
+ wxColour m_colStart,
+ m_colEnd;
+
+ unsigned m_timeout;
+
+ wxTipKind m_tipKind;
+
+ wxFont m_titleFont;
+};
+
+#endif // _WX_GENERIC_PRIVATE_RICHTOOLTIP_H_
diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h
index 72c3721f07..3f87e116be 100644
--- a/include/wx/motif/setup0.h
+++ b/include/wx/motif/setup0.h
@@ -1087,6 +1087,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index a8f62e2241..02dbb9aa03 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -1087,6 +1087,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h
index a1a8bb702a..bc48373e26 100644
--- a/include/wx/msw/wince/setup.h
+++ b/include/wx/msw/wince/setup.h
@@ -1087,6 +1087,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h
index 3f7ba32ff7..e5dfea236d 100644
--- a/include/wx/os2/setup0.h
+++ b/include/wx/os2/setup0.h
@@ -1087,6 +1087,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/osx/nonownedwnd.h b/include/wx/osx/nonownedwnd.h
index 4ae95d3099..85c0eb1cd1 100644
--- a/include/wx/osx/nonownedwnd.h
+++ b/include/wx/osx/nonownedwnd.h
@@ -81,9 +81,8 @@ public:
// implementation from now on
// --------------------------
- virtual bool SetShape(const wxRegion& region);
+ // These accessors are Mac-specific and don't exist in other ports.
const wxRegion& GetShape() const { return m_shape; }
-
#if wxUSE_GRAPHICS_CONTEXT
const wxGraphicsPath& GetShapePath() { return m_shapePath; }
#endif // wxUSE_GRAPHICS_CONTEXT
diff --git a/include/wx/osx/setup0.h b/include/wx/osx/setup0.h
index db61cb128f..bd1bc24491 100644
--- a/include/wx/osx/setup0.h
+++ b/include/wx/osx/setup0.h
@@ -1088,6 +1088,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h
index d2384305df..0db190529a 100644
--- a/include/wx/palmos/setup0.h
+++ b/include/wx/palmos/setup0.h
@@ -1087,6 +1087,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/private/richtooltip.h b/include/wx/private/richtooltip.h
new file mode 100644
index 0000000000..75d30a9d1f
--- /dev/null
+++ b/include/wx/private/richtooltip.h
@@ -0,0 +1,44 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/private/richtooltip.h
+// Purpose: wxRichToolTipImpl declaration.
+// Author: Vadim Zeitlin
+// Created: 2011-10-18
+// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PRIVATE_RICHTOOLTIP_H_
+#define _WX_PRIVATE_RICHTOOLTIP_H_
+
+#include "wx/richtooltip.h"
+
+// ----------------------------------------------------------------------------
+// wxRichToolTipImpl: defines wxRichToolTip implementation.
+// ----------------------------------------------------------------------------
+
+class wxRichToolTipImpl
+{
+public:
+ // This is implemented in a platform-specific way.
+ static wxRichToolTipImpl* Create(const wxString& title,
+ const wxString& message);
+
+ // These methods simply mirror the public wxRichToolTip ones.
+ virtual void SetBackgroundColour(const wxColour& col,
+ const wxColour& colEnd) = 0;
+ virtual void SetCustomIcon(const wxIcon& icon) = 0;
+ virtual void SetStandardIcon(int icon) = 0;
+ virtual void SetTimeout(unsigned milliseconds) = 0;
+ virtual void SetTipKind(wxTipKind tipKind) = 0;
+ virtual void SetTitleFont(const wxFont& font) = 0;
+
+ virtual void ShowFor(wxWindow* win) = 0;
+
+ virtual ~wxRichToolTipImpl() { }
+
+protected:
+ wxRichToolTipImpl() { }
+};
+
+#endif // _WX_PRIVATE_RICHTOOLTIP_H_
diff --git a/include/wx/richtooltip.h b/include/wx/richtooltip.h
new file mode 100644
index 0000000000..83ea72dee2
--- /dev/null
+++ b/include/wx/richtooltip.h
@@ -0,0 +1,99 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: wx/richtooltip.h
+// Purpose: Declaration of wxRichToolTip class.
+// Author: Vadim Zeitlin
+// Created: 2011-10-07
+// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_RICHTOOLTIP_H_
+#define _WX_RICHTOOLTIP_H_
+
+#if wxUSE_RICHTOOLTIP
+
+class WXDLLIMPEXP_FWD_CORE wxColour;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
+
+class wxRichToolTipImpl;
+
+// This enum describes the kind of the tip shown which combines both the tip
+// position and appearance because the two are related (when the tip is
+// positioned asymmetrically, a right handed triangle is used but an
+// equilateral one when it's in the middle of a side).
+//
+// Automatic selects the tip appearance best suited for the current platform
+// and the position best suited for the window the tooltip is shown for, i.e.
+// chosen in such a way that the tooltip is always fully on screen.
+//
+// Other values describe the position of the tooltip itself, not the window it
+// relates to. E.g. wxTipKind_Top places the tip on the top of the tooltip and
+// so the tooltip itself is located beneath its associated window.
+enum wxTipKind
+{
+ wxTipKind_None,
+ wxTipKind_TopLeft,
+ wxTipKind_Top,
+ wxTipKind_TopRight,
+ wxTipKind_BottomLeft,
+ wxTipKind_Bottom,
+ wxTipKind_BottomRight,
+ wxTipKind_Auto
+};
+
+// ----------------------------------------------------------------------------
+// wxRichToolTip: a customizable but not necessarily native tooltip.
+// ----------------------------------------------------------------------------
+
+// Notice that this class does not inherit from wxWindow.
+class WXDLLIMPEXP_ADV wxRichToolTip
+{
+public:
+ // Ctor must specify the tooltip title and main message, additional
+ // attributes can be set later.
+ wxRichToolTip(const wxString& title, const wxString& message);
+
+ // Set the background colour: if two colours are specified, the background
+ // is drawn using a gradient from top to bottom, otherwise a single solid
+ // colour is used.
+ void SetBackgroundColour(const wxColour& col,
+ const wxColour& colEnd = wxColour());
+
+ // Set the small icon to show: either one of the standard information/
+ // warning/error ones (the question icon doesn't make sense for a tooltip)
+ // or a custom icon.
+ void SetIcon(int icon = wxICON_INFORMATION);
+ void SetIcon(const wxIcon& icon);
+
+ // Set timeout after which the tooltip should disappear, in milliseconds.
+ // By default the tooltip is hidden after system-dependent interval of time
+ // elapses but this method can be used to change this or also disable
+ // hiding the tooltip automatically entirely by passing 0 in this parameter
+ // (but doing this can result in native version not being used).
+ void SetTimeout(unsigned milliseconds);
+
+ // Choose the tip kind, possibly none. By default the tip is positioned
+ // automatically, as if wxTipKind_Auto was used.
+ void SetTipKind(wxTipKind tipKind);
+
+ // Set the title text font. By default it's emphasized using the font style
+ // or colour appropriate for the current platform.
+ void SetTitleFont(const wxFont& font);
+
+ // Show the tooltip for the given window.
+ void ShowFor(wxWindow* win);
+
+ // Non-virtual dtor as this class is not supposed to be derived from.
+ ~wxRichToolTip();
+
+private:
+ wxRichToolTipImpl* const m_impl;
+
+ wxDECLARE_NO_COPY_CLASS(wxRichToolTip);
+};
+
+#endif // wxUSE_RICHTOOLTIP
+
+#endif // _WX_RICHTOOLTIP_H_
diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h
index 4168e64d59..f7d6ce80b4 100644
--- a/include/wx/setup_inc.h
+++ b/include/wx/setup_inc.h
@@ -1083,6 +1083,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/include/wx/univ/setup0.h b/include/wx/univ/setup0.h
index 632c93a5b0..f59ae50558 100644
--- a/include/wx/univ/setup0.h
+++ b/include/wx/univ/setup0.h
@@ -1086,6 +1086,14 @@
// Recommended setting: 1
#define wxUSE_NOTIFICATION_MESSAGE 1
+// wxRichToolTip is a customizable tooltip class which has more functionality
+// than the stock (but native, unlike this class) wxToolTip.
+//
+// Default is 1.
+//
+// Recommended setting: 1 (but can be safely set to 0 if you don't need it)
+#define wxUSE_RICHTOOLTIP 1
+
// Use wxSashWindow class.
//
// Default is 1.
diff --git a/interface/wx/nonownedwnd.h b/interface/wx/nonownedwnd.h
index 7db6d66037..4e1a6a7381 100644
--- a/interface/wx/nonownedwnd.h
+++ b/interface/wx/nonownedwnd.h
@@ -32,5 +32,28 @@ public:
This method is available in this class only since wxWidgets 2.9.3,
previous versions only provided it in wxTopLevelWindow.
*/
- virtual bool SetShape(const wxRegion& region);
+ bool SetShape(const wxRegion& region);
+
+ /**
+ Set the window shape to the given path.
+
+ Set the window shape to the interior of the given path and also draw
+ the window border along the specified path.
+
+ For example, to make a clock-like circular window you could use
+ @code
+ wxSize size = GetSize();
+ wxGraphicsPath
+ path = wxGraphicsRenderer::GetDefaultRenderer()->CreatePath();
+ path.AddCircle(size.x/2, size.y/2, 30);
+ SetShape(path);
+ @endcode
+
+ As the overload above, this method is not guaranteed to work on all
+ platforms but currently does work in wxMSW, wxOSX/Cocoa and wxGTK (with
+ the appropriate but almost always present X11 extensions) ports.
+
+ @since 2.9.3
+ */
+ bool SetShape(const wxGraphicsPath& path);
};
diff --git a/interface/wx/richtooltip.h b/interface/wx/richtooltip.h
new file mode 100644
index 0000000000..3a3dbbf5e5
--- /dev/null
+++ b/interface/wx/richtooltip.h
@@ -0,0 +1,195 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: interface/wx/richtooltip.h
+// Purpose: wxRichToolTip class documentation
+// Author: Vadim Zeitlin
+// Created: 2011-10-18
+// RCS-ID: $Id$
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+/**
+ Support tip kinds for wxRichToolTip.
+
+ This enum describes the kind of the tip shown which combines both the tip
+ position and appearance because the two are related (when the tip is
+ positioned asymmetrically, a right handed triangle is used but an
+ equilateral one when it's in the middle of a side).
+
+ Automatic selects the tip appearance best suited for the current platform
+ and the position best suited for the window the tooltip is shown for, i.e.
+ chosen in such a way that the tooltip is always fully on screen.
+
+ Other values describe the position of the tooltip itself, not the window it
+ relates to. E.g. wxTipKind_Top places the tip on the top of the tooltip and
+ so the tooltip itself is located beneath its associated window.
+ */
+enum wxTipKind
+{
+ /// Don't show any tip, the tooltip will be (roughly) rectangular.
+ wxTipKind_None,
+ /// Show a right triangle tip in the top left corner of the tooltip.
+ wxTipKind_TopLeft,
+ /// Show an equilateral triangle tip in the middle of the tooltip top side.
+ wxTipKind_Top,
+ /// Show a right triangle tip in the top right corner of the tooltip.
+ wxTipKind_TopRight,
+ /// Show a right triangle tip in the bottom left corner of the tooltip.
+ wxTipKind_BottomLeft,
+ /// Show an equilateral triangle tip in the middle of the tooltip bottom side.
+ wxTipKind_Bottom,
+ /// Show a right triangle tip in the bottom right corner of the tooltip.
+ wxTipKind_BottomRight,
+ /**
+ Choose the appropriate tip shape and position automatically.
+
+ This is the default and shouldn't normally need to be changed.
+
+ Notice that currently wxTipKind_Top or wxTipKind_Bottom are used under
+ Mac while one of the other four values is selected for the other
+ platforms.
+ */
+ wxTipKind_Auto
+};
+/**
+ Allows to show a tool tip with more customizations than wxToolTip.
+
+ Using this class is very simple, to give a standard warning for a password
+ text control if the password was entered correctly you could simply do:
+ @code
+ wxTextCtrl* password = new wxTextCtrl(..., wxTE_PASSWORD);
+ ...
+ wxRichToolTip tip("Caps Lock is on",
+ "You might have made an error in your password\n"
+ "entry because Caps Lock is turned on.\n"
+ "\n"
+ "Press Caps Lock key to turn it off.");
+ tip.SetIcon(wxICON_WARNING);
+ tip.ShowFor(password);
+ @endcode
+
+ Currently this class has generic implementation that can be used with any
+ window and implements all the functionality but doesn't exactly match the
+ appearance of the native tooltips (even though it makes some efforts to
+ use the style most appropriate for the current platform) and a native MSW
+ version which can be only used with text controls and doesn't provide as
+ much in the way of customization. Because of this, it's inadvisable to
+ customize the tooltips unnecessarily as doing this turns off auto-detection
+ of the native style in the generic version and may prevent the native MSW
+ version from being used at all.
+
+ Notice that this class is not derived from wxWindow and hence doesn't
+ represent a window, even if its ShowFor() method does create one internally
+ to show the tooltip.
+
+ The images below show some examples of rich tooltips on different
+ platforms, with various customizations applied.
+
+ @library{wxadv}
+ @category{miscwnd}
+ @appearance{richtooltip.png}
+
+ @since 2.9.3
+ */
+class wxRichToolTip
+{
+public:
+ /**
+ Constructor must specify the tooltip title and main message.
+
+ The main message can contain embedded new lines. Both the title and
+ message must be non-empty.
+
+ Additional attributes can be set later.
+ */
+ wxRichToolTip(const wxString& title, const wxString& message);
+
+ /**
+ Set the background colour.
+
+ If two colours are specified, the background is drawn using a gradient
+ from top to bottom, otherwise a single solid colour is used.
+
+ By default the colour or colours most appropriate for the current
+ platform are used. If a colour is explicitly set, native MSW version
+ won't be used as it doesn't support setting the colour.
+ */
+ void SetBackgroundColour(const wxColour& col,
+ const wxColour& colEnd = wxColour());
+
+ /**
+ Set the small icon to show.
+
+ The icon can be either one of the standard information/warning/error
+ ones, i.e. wxICON_INFORMATION, wxICON_WARNING or wxICON_ERROR
+ respectively (the question icon doesn't make sense for a tooltip so
+ wxICON_QUESTION can't be used here) or a custom icon. The latter is
+ unsupported by the native MSW implementation of this class so the use
+ of a standard icon is preferred.
+ */
+ //@{
+ void SetIcon(int icon = wxICON_INFORMATION);
+ void SetIcon(const wxIcon& icon);
+ //@}
+
+ /**
+ Set timeout after which the tooltip should disappear, in milliseconds.
+
+ By default the tooltip is hidden after system-dependent interval of
+ time elapses but this method can be used to change this or also disable
+ hiding the tooltip automatically entirely by passing 0 in this parameter
+ (but doing this will prevent the native MSW version from being used).
+
+ Notice that the tooltip will always be hidden if the user presses a key
+ or clicks a mouse button.
+ */
+ void SetTimeout(unsigned milliseconds);
+
+ /**
+ Choose the tip kind, possibly none.
+
+ See wxTipKind documentation for the possible choices here.
+
+ By default the tip is positioned automatically, as if wxTipKind_Auto
+ was used. Native MSW implementation doesn't support setting the tip
+ kind explicitly and won't be used if this method is called with any
+ value other than wxTipKind_Auto.
+
+ Notice that using non automatic tooltip kind may result in the tooltip
+ being positioned partially off screen and it's the callers
+ responsibility to ensure that this doesn't happen in this case.
+ */
+ void SetTipKind(wxTipKind tipKind);
+
+ /**
+ Set the title text font.
+
+ By default it's emphasized using the font style or colour appropriate
+ for the current platform. Calling this method prevents the native MSW
+ implementation from being used as it doesn't support changing the font.
+ */
+ void SetTitleFont(const wxFont& font);
+
+ /**
+ Show the tooltip for the given window.
+
+ The tooltip tip points to the (middle of the) specified window which
+ must be non-@NULL.
+
+ Currently the native MSW implementation is used only if @a win is a
+ wxTextCtrl. This limitation may be removed in the future.
+ */
+ void ShowFor(wxWindow* win);
+
+ /**
+ Destructor.
+
+ Notice that destroying this object does not hide the tooltip if it's
+ currently shown, it will be hidden and destroyed when the user
+ dismisses it or the timeout expires.
+
+ The destructor is non-virtual as this class is not supposed to be
+ derived from.
+ */
+ ~wxRichToolTip();
+};
diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp
index eeeecdac1f..ce73b79e39 100644
--- a/samples/dialogs/dialogs.cpp
+++ b/samples/dialogs/dialogs.cpp
@@ -257,6 +257,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(DIALOGS_NOTIFY_HIDE, MyFrame::OnNotifMsgHide)
#endif // wxUSE_NOTIFICATION_MESSAGE
+#if wxUSE_RICHTOOLTIP
+ EVT_MENU(DIALOGS_RICHTIP_DIALOG, MyFrame::OnRichTipDialog)
+#endif // wxUSE_RICHTOOLTIP
+
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()
@@ -527,6 +531,11 @@ bool MyApp::OnInit()
#endif // wxUSE_NOTIFICATION_MESSAGE
menuDlg->AppendSubMenu(menuNotif, "&User notifications");
+#if wxUSE_RICHTOOLTIP
+ menuDlg->Append(DIALOGS_RICHTIP_DIALOG, "Rich &tooltip dialog...\tCtrl-H");
+ menuDlg->AppendSeparator();
+#endif // wxUSE_RICHTOOLTIP
+
menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, wxT("&Standard Buttons Sizer Dialog"));
menuDlg->Append(DIALOGS_TEST_DEFAULT_ACTION, wxT("&Test dialog default action"));
@@ -1777,6 +1786,219 @@ void MyFrame::OnNotifMsgHide(wxCommandEvent& WXUNUSED(event))
#endif // wxUSE_NOTIFICATION_MESSAGE
+#if wxUSE_RICHTOOLTIP
+
+#include "wx/richtooltip.h"
+
+#include "tip.xpm"
+
+class RichTipDialog : public wxDialog
+{
+public:
+ RichTipDialog(wxWindow* parent)
+ : wxDialog(parent, wxID_ANY, "wxRichToolTip Test",
+ wxDefaultPosition, wxDefaultSize,
+ wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+ {
+ // Create the controls.
+ m_textTitle = new wxTextCtrl(this, wxID_ANY, "Tooltip title");
+ m_textBody = new wxTextCtrl(this, wxID_ANY, "Main tooltip text\n"
+ "possibly on several\n"
+ "lines.",
+ wxDefaultPosition, wxDefaultSize,
+ wxTE_MULTILINE);
+ wxButton* btnShowText = new wxButton(this, wxID_ANY, "Show for &text");
+ wxButton* btnShowBtn = new wxButton(this, wxID_ANY, "Show for &button");
+
+ const wxString icons[] =
+ {
+ "&None",
+ "&Information",
+ "&Warning",
+ "&Error",
+ "&Custom"
+ };
+ wxCOMPILE_TIME_ASSERT( WXSIZEOF(icons) == Icon_Max, IconMismatch );
+ m_icons = new wxRadioBox(this, wxID_ANY, "&Icon choice:",
+ wxDefaultPosition, wxDefaultSize,
+ WXSIZEOF(icons), icons,
+ 1, wxRA_SPECIFY_ROWS);
+ m_icons->SetSelection(Icon_Info);
+
+ const wxString tipKinds[] =
+ {
+ "&None", "Top left", "Top", "Top right",
+ "Bottom left", "Bottom", "Bottom right", "&Auto"
+ };
+ m_tipKinds = new wxRadioBox(this, wxID_ANY, "Tip &kind:",
+ wxDefaultPosition, wxDefaultSize,
+ WXSIZEOF(tipKinds), tipKinds,
+ 4, wxRA_SPECIFY_COLS);
+ m_tipKinds->SetSelection(wxTipKind_Auto);
+
+ const wxString bgStyles[] =
+ {
+ "&Default", "&Solid", "&Gradient",
+ };
+ wxCOMPILE_TIME_ASSERT( WXSIZEOF(bgStyles) == Bg_Max, BgMismatch );
+ m_bgStyles = new wxRadioBox(this, wxID_ANY, "Background style:",
+ wxDefaultPosition, wxDefaultSize,
+ WXSIZEOF(bgStyles), bgStyles,
+ 1, wxRA_SPECIFY_ROWS);
+
+ const wxString timeouts[] = { "&None", "&Default", "&3 seconds" };
+ wxCOMPILE_TIME_ASSERT( WXSIZEOF(timeouts) == Timeout_Max, TmMismatch );
+ m_timeouts = new wxRadioBox(this, wxID_ANY, "Timeout:",
+ wxDefaultPosition, wxDefaultSize,
+ WXSIZEOF(timeouts), timeouts,
+ 1, wxRA_SPECIFY_ROWS);
+ m_timeouts->SetSelection(Timeout_Default);
+
+ // Lay them out.
+ m_textBody->SetMinSize(wxSize(300, 200));
+
+ wxBoxSizer* const sizer = new wxBoxSizer(wxVERTICAL);
+ sizer->Add(m_textTitle, wxSizerFlags().Expand().Border());
+ sizer->Add(m_textBody, wxSizerFlags(1).Expand().Border());
+ sizer->Add(m_icons, wxSizerFlags().Expand().Border());
+ sizer->Add(m_tipKinds, wxSizerFlags().Centre().Border());
+ sizer->Add(m_bgStyles, wxSizerFlags().Centre().Border());
+ sizer->Add(m_timeouts, wxSizerFlags().Centre().Border());
+ wxBoxSizer* const sizerBtns = new wxBoxSizer(wxHORIZONTAL);
+ sizerBtns->Add(btnShowText, wxSizerFlags().Border(wxRIGHT));
+ sizerBtns->Add(btnShowBtn, wxSizerFlags().Border(wxLEFT));
+ sizer->Add(sizerBtns, wxSizerFlags().Centre().Border());
+ sizer->Add(CreateStdDialogButtonSizer(wxOK),
+ wxSizerFlags().Expand().Border());
+ SetSizerAndFit(sizer);
+
+
+ // And connect the event handlers.
+ btnShowText->Connect
+ (
+ wxEVT_COMMAND_BUTTON_CLICKED,
+ wxCommandEventHandler(RichTipDialog::OnShowTipForText),
+ NULL,
+ this
+ );
+
+ btnShowBtn->Connect
+ (
+ wxEVT_COMMAND_BUTTON_CLICKED,
+ wxCommandEventHandler(RichTipDialog::OnShowTipForBtn),
+ NULL,
+ this
+ );
+ }
+
+private:
+ enum
+ {
+ Icon_None,
+ Icon_Info,
+ Icon_Warning,
+ Icon_Error,
+ Icon_Custom,
+ Icon_Max
+ };
+
+ enum
+ {
+ Bg_Default,
+ Bg_Solid,
+ Bg_Gradient,
+ Bg_Max
+ };
+
+ enum
+ {
+ Timeout_None,
+ Timeout_Default,
+ Timeout_3sec,
+ Timeout_Max
+ };
+
+
+ void OnShowTipForText(wxCommandEvent& WXUNUSED(event))
+ {
+ DoShowTip(m_textTitle);
+ }
+
+ void OnShowTipForBtn(wxCommandEvent& WXUNUSED(event))
+ {
+ DoShowTip(FindWindow(wxID_OK));
+ }
+
+ void DoShowTip(wxWindow* win)
+ {
+ wxRichToolTip tip(m_textTitle->GetValue(), m_textBody->GetValue());
+ const int iconSel = m_icons->GetSelection();
+ if ( iconSel == Icon_Custom )
+ {
+ tip.SetIcon(tip_xpm);
+ }
+ else // Use a standard icon.
+ {
+ static const int stdIcons[] =
+ {
+ wxICON_NONE,
+ wxICON_INFORMATION,
+ wxICON_WARNING,
+ wxICON_ERROR,
+ };
+
+ tip.SetIcon(stdIcons[iconSel]);
+ }
+
+ switch ( m_bgStyles->GetSelection() )
+ {
+ case Bg_Default:
+ break;
+
+ case Bg_Solid:
+ tip.SetBackgroundColour(*wxLIGHT_GREY);
+ break;
+
+ case Bg_Gradient:
+ tip.SetBackgroundColour(*wxWHITE, wxColour(0xe4, 0xe5, 0xf0));
+ break;
+ }
+
+ switch ( m_timeouts->GetSelection() )
+ {
+ case Timeout_None:
+ tip.SetTimeout(0);
+ break;
+
+ case Timeout_Default:
+ break;
+
+ case Timeout_3sec:
+ tip.SetTimeout(3000);
+ break;
+ }
+
+ tip.SetTipKind(static_cast(m_tipKinds->GetSelection()));
+
+ tip.ShowFor(win);
+ }
+
+ wxTextCtrl* m_textTitle;
+ wxTextCtrl* m_textBody;
+ wxRadioBox* m_icons;
+ wxRadioBox* m_tipKinds;
+ wxRadioBox* m_bgStyles;
+ wxRadioBox* m_timeouts;
+};
+
+void MyFrame::OnRichTipDialog(wxCommandEvent& WXUNUSED(event))
+{
+ RichTipDialog dialog(this);
+ dialog.ShowModal();
+}
+
+#endif // wxUSE_RICHTOOLTIP
+
void MyFrame::OnStandardButtonsSizerDialog(wxCommandEvent& WXUNUSED(event))
{
StdButtonSizerDialog dialog(this);
diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h
index 61dd0f85aa..bfc8fa086f 100644
--- a/samples/dialogs/dialogs.h
+++ b/samples/dialogs/dialogs.h
@@ -465,6 +465,10 @@ public:
void OnNotifMsgHide(wxCommandEvent& event);
#endif // wxUSE_NOTIFICATION_MESSAGE
+#if wxUSE_RICHTOOLTIP
+ void OnRichTipDialog(wxCommandEvent& event);
+#endif // wxUSE_RICHTOOLTIP
+
void OnStandardButtonsSizerDialog(wxCommandEvent& event);
void OnTestDefaultActionDialog(wxCommandEvent& event);
@@ -576,6 +580,7 @@ enum
DIALOGS_NOTIFY_AUTO,
DIALOGS_NOTIFY_SHOW,
DIALOGS_NOTIFY_HIDE,
+ DIALOGS_RICHTIP_DIALOG,
DIALOGS_PROPERTY_SHEET,
DIALOGS_PROPERTY_SHEET_TOOLBOOK,
DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
diff --git a/samples/dialogs/tip.xpm b/samples/dialogs/tip.xpm
new file mode 100644
index 0000000000..28ea7559a1
--- /dev/null
+++ b/samples/dialogs/tip.xpm
@@ -0,0 +1,157 @@
+/* XPM */
+static const char *const tip_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 119 2",
+" c #141414",
+". c #1B1B1B",
+"X c #1F2527",
+"o c #242525",
+"O c #242728",
+"+ c #262A2B",
+"@ c #2B2B2B",
+"# c #2A2E30",
+"$ c #2C3233",
+"% c #2C3639",
+"& c #2F3A3D",
+"* c #313131",
+"= c #303C3F",
+"- c #2D3E42",
+"; c #323F42",
+": c #33454A",
+"> c #34494F",
+", c #324A50",
+"< c #3B4E52",
+"1 c #2F5058",
+"2 c #325157",
+"3 c #3D545A",
+"4 c #3A5A62",
+"5 c #34606A",
+"6 c #3F616A",
+"7 c #464646",
+"8 c #4B4B4B",
+"9 c #41585E",
+"0 c gray33",
+"q c #5D5D5D",
+"w c #425B62",
+"e c #456067",
+"r c #46646B",
+"t c #456972",
+"y c #4B6972",
+"u c #416F7A",
+"i c #646464",
+"p c gray42",
+"a c #696F71",
+"s c #767676",
+"d c #787777",
+"f c gray49",
+"g c #3E7582",
+"h c #3E7D8A",
+"j c #417A86",
+"k c #417F8E",
+"l c #3E8494",
+"z c #418595",
+"x c #4D8995",
+"c c #468D9E",
+"v c #6B848A",
+"b c #4795A7",
+"n c #4F92A1",
+"m c #4D9AAA",
+"M c #5695A4",
+"N c #55A2B3",
+"B c #5FAABA",
+"V c #7BA6AF",
+"C c #4FAFC5",
+"Z c #5DB7CA",
+"A c #52BAD1",
+"S c #58BDD4",
+"D c #62C2D5",
+"F c #64C3DA",
+"G c #73C8DA",
+"H c #7ECBDD",
+"J c #868686",
+"K c gray55",
+"L c #9FA0A0",
+"P c #98A8AB",
+"I c #ADADAC",
+"U c #AAB1B2",
+"Y c #A8B9BD",
+"T c gray70",
+"R c #90C3CF",
+"E c #87C8D7",
+"W c #82CADA",
+"Q c #91C8D4",
+"! c #93CFDC",
+"~ c #98CEDB",
+"^ c #93D1DF",
+"/ c #9AD1DC",
+"( c #A4CCD7",
+") c #A3CFDA",
+"_ c #A1D0DB",
+"` c #ACD1DA",
+"' c #B2D6DE",
+"] c #BCD7DD",
+"[ c #89D2E2",
+"{ c #9BD5E1",
+"} c #A9DEE9",
+"| c #BFE1E7",
+" . c #BDE3EB",
+".. c #C5C5C5",
+"X. c #CACACA",
+"o. c #C2D5D9",
+"O. c #C2D8DD",
+"+. c #CCD9DD",
+"@. c #D4DBDD",
+"#. c #DBDDDE",
+"$. c #E0DFDF",
+"%. c #CCDDE1",
+"&. c #D2DFE1",
+"*. c #CCE5EB",
+"=. c #D6E2E4",
+"-. c #DCE3E5",
+";. c #D4E6E9",
+":. c #DBE6E8",
+">. c #E2E4E4",
+",. c #E6E9E9",
+"<. c #ECECEC",
+"1. c #F1EFEF",
+"2. c #E1EDF0",
+"3. c #E9EFF0",
+"4. c #EEF3F3",
+"5. c #F5F5F4",
+"6. c #F8F7F7",
+"7. c #FBFBFA",
+"8. c None",
+/* pixels */
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.o o o o @ @ o o o o 8.8.8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.o o @ * * q q f J i q 7 * @ o o 8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.o O @ 7 K X.7.7.7.7.7.7.7.7.>.I i * @ o 8.8.8.8.8.8.",
+"8.8.8.8.8.o @ 8 T 6.7.7.7.7.7.7.7.7.7.7.7.7.7.#.s @ o o 8.8.8.8.",
+"8.8.8.o O * K 5.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7...8 O o 8.8.8.",
+"8.8.o O * I 7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.>.0 O o 8.8.",
+"8.8.o @ I 7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.<.7 O 8.8.",
+"8.o @ d 7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.X.@ o 8.",
+"8.O @ $.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.6.a O 8.",
+"o @ p 6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.Y @ o ",
+"o @ L 6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.*.$ o ",
+"o O U 6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.5. .; o ",
+"O $ P 5.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.4.} % o ",
+"o < v 3.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.2.W O o ",
+"o w < *.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.| x # o ",
+"8.$ < V :.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.;.[ , ; ",
+"8.o y : ( -.<.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.<.=.{ j 3 o 8.",
+"8.8.+ w 4 ` =.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.%.^ m > % . 8.",
+"8.8.o & 3 2 Q O.-.<.<.<.<.<.<.<.<.<.<.<.<.<.,.=.' H z : : . 8.8.",
+"8.8.8.o % w - M / ] &.-.,.,.<.<.<.<.<.<.<.>.O.! Z 5 < ; . 8.8.8.",
+"8.8.8.8.o O e : 1 n W ~ ` ] O.%.%.+.@.>.,.+.! z : w @ . 8.8.8.8.",
+"8.8.8.8.8.8.o % r 3 > 5 h N B G G R o.#.>.` D : ; . 8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.o + : w y w 3 3 - X ` @.%.W l w . 8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.. o o o o O + - ( +._ S 6 O 8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.o 4 ( ) F g = . 8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.O u E F z < . 8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.o 3 C A k > . 8.8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.9 c b t + . 8.8.8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.: % o . 8.8.8.8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.. 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.",
+"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8."
+};
diff --git a/samples/shaped/shaped.cpp b/samples/shaped/shaped.cpp
index 6f7ea9fb76..9b05903463 100644
--- a/samples/shaped/shaped.cpp
+++ b/samples/shaped/shaped.cpp
@@ -38,6 +38,7 @@
#endif
#include "wx/dcclient.h"
+#include "wx/graphics.h"
#include "wx/image.h"
#ifndef __WXMSW__
@@ -114,7 +115,16 @@ public:
void OnPaint(wxPaintEvent& evt);
private:
- bool m_hasShape;
+ enum ShapeKind
+ {
+ Shape_None,
+ Shape_Star,
+#if wxUSE_GRAPHICS_CONTEXT
+ Shape_Circle,
+#endif // wxUSE_GRAPHICS_CONTEXT
+ Shape_Max
+ } m_shapeKind;
+
wxBitmap m_bmp;
wxPoint m_delta;
@@ -382,29 +392,46 @@ ShapedFrame::ShapedFrame(wxFrame *parent)
| wxSTAY_ON_TOP
)
{
- m_hasShape = false;
+ m_shapeKind = Shape_None;
m_bmp = wxBitmap(wxT("star.png"), wxBITMAP_TYPE_PNG);
SetSize(wxSize(m_bmp.GetWidth(), m_bmp.GetHeight()));
- SetToolTip(wxT("Right-click to close"));
+ SetToolTip(wxT("Right-click to close, double click to cycle shape"));
SetWindowShape();
}
void ShapedFrame::SetWindowShape()
{
- wxRegion region(m_bmp, *wxWHITE);
- m_hasShape = SetShape(region);
+ switch ( m_shapeKind )
+ {
+ case Shape_None:
+ SetShape(wxRegion());
+ break;
+
+ case Shape_Star:
+ SetShape(wxRegion(m_bmp, *wxWHITE));
+ break;
+
+#if wxUSE_GRAPHICS_CONTEXT
+ case Shape_Circle:
+ {
+ wxGraphicsPath
+ path = wxGraphicsRenderer::GetDefaultRenderer()->CreatePath();
+ path.AddCircle(m_bmp.GetWidth()/2, m_bmp.GetHeight()/2, 30);
+ SetShape(path);
+ }
+ break;
+#endif // wxUSE_GRAPHICS_CONTEXT
+
+ case Shape_Max:
+ wxFAIL_MSG( "invalid shape kind" );
+ break;
+ }
}
void ShapedFrame::OnDoubleClick(wxMouseEvent& WXUNUSED(evt))
{
- if (m_hasShape)
- {
- wxRegion region;
- SetShape(region);
- m_hasShape = false;
- }
- else
- SetWindowShape();
+ m_shapeKind = static_cast((m_shapeKind + 1) % Shape_Max);
+ SetWindowShape();
}
void ShapedFrame::OnLeftDown(wxMouseEvent& evt)
diff --git a/setup.h.in b/setup.h.in
index 26ae556bdb..0147d6d774 100644
--- a/setup.h.in
+++ b/setup.h.in
@@ -470,6 +470,8 @@
#define wxUSE_NOTIFICATION_MESSAGE 0
+#define wxUSE_RICHTOOLTIP 0
+
#define wxUSE_SASH 0
#define wxUSE_SPLITTER 0
diff --git a/src/common/richtooltipcmn.cpp b/src/common/richtooltipcmn.cpp
new file mode 100644
index 0000000000..d2c829ba82
--- /dev/null
+++ b/src/common/richtooltipcmn.cpp
@@ -0,0 +1,82 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/common/richtooltipcmn.cpp
+// Purpose: wxRichToolTip implementation common to all platforms.
+// Author: Vadim Zeitlin
+// Created: 2011-10-18
+// RCS-ID: $Id: wxhead.cpp,v 1.11 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_RICHTOOLTIP
+
+#ifndef WX_PRECOMP
+ #include "wx/icon.h"
+#endif // WX_PRECOMP
+
+#include "wx/private/richtooltip.h"
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+wxRichToolTip::wxRichToolTip(const wxString& title,
+ const wxString& message) :
+ m_impl(wxRichToolTipImpl::Create(title, message))
+{
+}
+
+void
+wxRichToolTip::SetBackgroundColour(const wxColour& col, const wxColour& colEnd)
+{
+ m_impl->SetBackgroundColour(col, colEnd);
+}
+
+void wxRichToolTip::SetIcon(int icon)
+{
+ m_impl->SetStandardIcon(icon);
+}
+
+void wxRichToolTip::SetIcon(const wxIcon& icon)
+{
+ m_impl->SetCustomIcon(icon);
+}
+
+void wxRichToolTip::SetTimeout(unsigned milliseconds)
+{
+ m_impl->SetTimeout(milliseconds);
+}
+
+void wxRichToolTip::SetTipKind(wxTipKind tipKind)
+{
+ m_impl->SetTipKind(tipKind);
+}
+
+void wxRichToolTip::ShowFor(wxWindow* win)
+{
+ wxCHECK_RET( win, wxS("Must have a valid window") );
+
+ m_impl->ShowFor(win);
+}
+
+wxRichToolTip::~wxRichToolTip()
+{
+ delete m_impl;
+}
+
+#endif // wxUSE_RICHTOOLTIP
diff --git a/src/generic/richtooltip.cpp b/src/generic/richtooltip.cpp
new file mode 100644
index 0000000000..7cb677aad7
--- /dev/null
+++ b/src/generic/richtooltip.cpp
@@ -0,0 +1,673 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/generic/richtooltip.cpp
+// Purpose: Implementation of wxRichToolTip.
+// Author: Vadim Zeitlin
+// Created: 2011-10-07
+// RCS-ID: $Id: wxhead.cpp,v 1.11 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_RICHTOOLTIP
+
+#ifndef WX_PRECOMP
+ #include "wx/dcmemory.h"
+ #include "wx/icon.h"
+ #include "wx/region.h"
+ #include "wx/settings.h"
+ #include "wx/sizer.h"
+ #include "wx/statbmp.h"
+ #include "wx/stattext.h"
+ #include "wx/timer.h"
+ #include "wx/utils.h"
+#endif // WX_PRECOMP
+
+#include "wx/private/richtooltip.h"
+#include "wx/generic/private/richtooltip.h"
+
+#include "wx/artprov.h"
+#include "wx/custombgwin.h"
+#include "wx/display.h"
+#include "wx/graphics.h"
+#include "wx/popupwin.h"
+#include "wx/textwrapper.h"
+
+#ifdef __WXMSW__
+ #include "wx/msw/uxtheme.h"
+
+ static const int TTP_BALLOONTITLE = 4;
+
+ static const int TMT_TEXTCOLOR = 3803;
+ static const int TMT_GRADIENTCOLOR1 = 3810;
+ static const int TMT_GRADIENTCOLOR2 = 3811;
+#endif
+
+// ----------------------------------------------------------------------------
+// wxRichToolTipPopup: the popup window used by wxRichToolTip.
+// ----------------------------------------------------------------------------
+
+class wxRichToolTipPopup :
+ public wxCustomBackgroundWindow
+{
+public:
+ wxRichToolTipPopup(wxWindow* parent,
+ const wxString& title,
+ const wxString& message,
+ const wxIcon& icon,
+ wxTipKind tipKind,
+ const wxFont& titleFont_) :
+ m_timer(this)
+ {
+ Create(parent, wxFRAME_SHAPED);
+
+
+ wxBoxSizer* const sizerTitle = new wxBoxSizer(wxHORIZONTAL);
+ if ( icon.IsOk() )
+ {
+ sizerTitle->Add(new wxStaticBitmap(this, wxID_ANY, icon),
+ wxSizerFlags().Centre().Border(wxRIGHT));
+ }
+ //else: Simply don't show any icon.
+
+ wxStaticText* const labelTitle = new wxStaticText(this, wxID_ANY, "");
+ labelTitle->SetLabelText(title);
+
+ wxFont titleFont(titleFont_);
+ if ( !titleFont.IsOk() )
+ {
+ // Determine the appropriate title font for the current platform.
+ titleFont = labelTitle->GetFont();
+
+#ifdef __WXMSW__
+ // When using themes MSW tooltips use larger bluish version of the
+ // normal font.
+ wxUxThemeEngine* const theme = GetTooltipTheme();
+ if ( theme )
+ {
+ titleFont.MakeLarger();
+
+ COLORREF c;
+ if ( FAILED(theme->GetThemeColor
+ (
+ wxUxThemeHandle(parent, L"TOOLTIP"),
+ TTP_BALLOONTITLE,
+ 0,
+ TMT_TEXTCOLOR,
+ &c
+ )) )
+ {
+ // Use the standard value of this colour as fallback.
+ c = 0x993300;
+ }
+
+ labelTitle->SetForegroundColour(wxRGBToColour(c));
+ }
+ else
+#endif // __WXMSW__
+ {
+ // Everything else, including "classic" MSW look uses just the
+ // bold version of the base font.
+ titleFont.MakeBold();
+ }
+ }
+
+ labelTitle->SetFont(titleFont);
+ sizerTitle->Add(labelTitle, wxSizerFlags().Centre());
+
+ wxBoxSizer* const sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(sizerTitle,
+ wxSizerFlags().DoubleBorder(wxLEFT|wxRIGHT|wxTOP));
+
+ // Use a spacer as we don't want to have a double border between the
+ // elements, just a simple one will do.
+ sizerTop->AddSpacer(wxSizerFlags::GetDefaultBorder());
+
+ wxTextSizerWrapper wrapper(this);
+ wxSizer* sizerText = wrapper.CreateSizer(message, -1 /* No wrapping */);
+
+#ifdef __WXMSW__
+ if ( icon.IsOk() && GetTooltipTheme() )
+ {
+ // Themed tooltips under MSW align the text with the title, not
+ // with the icon, so use a helper horizontal sizer in this case.
+ wxBoxSizer* const sizerTextIndent = new wxBoxSizer(wxHORIZONTAL);
+ sizerTextIndent->AddSpacer(icon.GetWidth());
+ sizerTextIndent->Add(sizerText,
+ wxSizerFlags().Border(wxLEFT).Centre());
+
+ sizerText = sizerTextIndent;
+ }
+#endif // !__WXMSW__
+ sizerTop->Add(sizerText,
+ wxSizerFlags().DoubleBorder(wxLEFT|wxRIGHT|wxBOTTOM)
+ .Centre());
+
+ SetSizer(sizerTop);
+
+ const int offsetY = SetTipShapeAndSize(tipKind, GetBestSize());
+ if ( offsetY > 0 )
+ {
+ // Offset our contents by the tip height to make it appear in the
+ // main rectangle.
+ sizerTop->PrependSpacer(offsetY);
+ }
+
+ Layout();
+ }
+
+ void SetBackground(wxColour colStart, wxColour colEnd)
+ {
+ if ( !colStart.IsOk() )
+ {
+ // Determine the best colour(s) to use on our own.
+#ifdef __WXMSW__
+ wxUxThemeEngine* const theme = GetTooltipTheme();
+ if ( theme )
+ {
+ wxUxThemeHandle hTheme(GetParent(), L"TOOLTIP");
+
+ COLORREF c1, c2;
+ if ( FAILED(theme->GetThemeColor
+ (
+ hTheme,
+ TTP_BALLOONTITLE,
+ 0,
+ TMT_GRADIENTCOLOR1,
+ &c1
+ )) ||
+ FAILED(theme->GetThemeColor
+ (
+ hTheme,
+ TTP_BALLOONTITLE,
+ 0,
+ TMT_GRADIENTCOLOR2,
+ &c2
+ )) )
+ {
+ c1 = 0xffffff;
+ c2 = 0xf0e5e4;
+ }
+
+ colStart = wxRGBToColour(c1);
+ colEnd = wxRGBToColour(c2);
+ }
+ else
+#endif // __WXMSW__
+ {
+ colStart = wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK);
+ }
+ }
+
+ if ( colEnd.IsOk() )
+ {
+ // Use gradient-filled background bitmap.
+ const wxSize size = GetClientSize();
+ wxBitmap bmp(size);
+ {
+ wxMemoryDC dc(bmp);
+ dc.Clear();
+ dc.GradientFillLinear(size, colStart, colEnd, wxDOWN);
+ }
+
+ SetBackgroundBitmap(bmp);
+ }
+ else // Use solid colour.
+ {
+ SetBackgroundColour(colStart);
+ }
+ }
+
+ void DoShow()
+ {
+ wxPoint pos = GetTipPoint();
+
+ // We want our anchor point to coincide with this position so offset
+ // the position of the top left corner passed to Move() accordingly.
+ pos -= m_anchorPos;
+
+ Move(pos, wxSIZE_NO_ADJUSTMENTS);
+
+ Popup();
+ }
+
+ void SetTimeout(unsigned timeout)
+ {
+ if ( !timeout )
+ return;
+
+ Connect(wxEVT_TIMER, wxTimerEventHandler(wxRichToolTipPopup::OnTimer));
+
+ m_timer.Start(timeout, true /* one shot */);
+ }
+
+protected:
+ virtual void OnDismiss()
+ {
+ Destroy();
+ }
+
+private:
+#ifdef __WXMSW__
+ // Returns non-NULL theme only if we're using Win7-style tooltips.
+ static wxUxThemeEngine* GetTooltipTheme()
+ {
+ // Even themed applications under XP still use "classic" tooltips.
+ if ( wxGetWinVersion() <= wxWinVersion_XP )
+ return NULL;
+
+ return wxUxThemeEngine::GetIfActive();
+ }
+#endif // __WXMSW__
+
+ // For now we just hard code the tip height, would be nice to do something
+ // smarter in the future.
+ static int GetTipHeight()
+ {
+#ifdef __WXMSW__
+ if ( GetTooltipTheme() )
+ return 20;
+#endif // __WXMSW__
+
+ return 15;
+ }
+
+ // Get the point to which our tip should point.
+ wxPoint GetTipPoint() const
+ {
+ // Currently we always use the middle of the window. It seems that MSW
+ // native tooltips use a different point but it's not really clear how
+ // do they determine it nor whether it's worth the trouble to emulate
+ // their behaviour.
+ const wxRect r = GetParent()->GetScreenRect();
+ return wxPoint(r.x + r.width/2, r.y + r.height/2);
+ }
+
+ // Choose the correct orientation depending on the window position.
+ //
+ // Also use the tip kind appropriate for the current environment. For MSW
+ // the right triangles are used and for Mac the equilateral ones as this is
+ // the prevailing kind under these systems. For everything else we go with
+ // right triangles as well but without any real rationale so this could be
+ // tweaked in the future.
+ wxTipKind GetBestTipKind() const
+ {
+ const wxPoint pos = GetTipPoint();
+
+ // Use GetFromWindow() and not GetFromPoint() here to try to get the
+ // correct display even if the tip point itself is not visible.
+ int dpy = wxDisplay::GetFromWindow(GetParent());
+ if ( dpy == wxNOT_FOUND )
+ dpy = 0; // What else can we do?
+
+ const wxRect rectDpy = wxDisplay(dpy).GetClientArea();
+
+#ifdef __WXMAC__
+ return pos.y > rectDpy.height/2 ? wxTipKind_Bottom : wxTipKind_Top;
+#else // !__WXMAC__
+ return pos.y > rectDpy.height/2
+ ? pos.x > rectDpy.width/2
+ ? wxTipKind_BottomRight
+ : wxTipKind_BottomLeft
+ : pos.x > rectDpy.width/2
+ ? wxTipKind_TopRight
+ : wxTipKind_TopLeft;
+#endif // __WXMAC__/!__WXMAC__
+ }
+
+ // Set the size and shape of the tip window and returns the offset of its
+ // content area from the top (horizontal offset is always 0 currently).
+ int SetTipShapeAndSize(wxTipKind tipKind, const wxSize& contentSize)
+ {
+#if wxUSE_GRAPHICS_CONTEXT
+ wxSize size = contentSize;
+
+ // The size is the vertical size and the offset is the distance from
+ // edge for asymmetric tips, currently hard-coded to be the same as the
+ // size.
+ const int tipSize = GetTipHeight();
+ const int tipOffset = tipSize;
+
+ // The horizontal position of the tip.
+ int x = -1;
+
+ // The vertical coordinates of the tip base and apex.
+ int yBase = -1,
+ yApex = -1;
+
+ // The offset of the content part of the window.
+ int dy = -1;
+
+ // Define symbolic names for the rectangle corners and mid-way points
+ // that we use below in an attempt to make the code more clear. Notice
+ // that these values must be consecutive as we iterate over them.
+ enum RectPoint
+ {
+ RectPoint_TopLeft,
+ RectPoint_Top,
+ RectPoint_TopRight,
+ RectPoint_Right,
+ RectPoint_BotRight,
+ RectPoint_Bot,
+ RectPoint_BotLeft,
+ RectPoint_Left,
+ RectPoint_Max
+ };
+
+ // The starting point for AddArcToPoint() calls below, we iterate over
+ // all RectPoints from it.
+ RectPoint pointStart = RectPoint_Max;
+
+
+ // Hard-coded radius of the round main rectangle corners.
+ const double RADIUS = 5;
+
+ // Create a path defining the shape of the tooltip window.
+ wxGraphicsPath
+ path = wxGraphicsRenderer::GetDefaultRenderer()->CreatePath();
+
+ if ( tipKind == wxTipKind_Auto )
+ tipKind = GetBestTipKind();
+
+ // Points defining the tip shape (in clockwise order as we must end at
+ // tipPoints[0] after drawing the rectangle outline in this order).
+ wxPoint2DDouble tipPoints[3];
+
+ switch ( tipKind )
+ {
+ case wxTipKind_Auto:
+ wxFAIL_MSG( "Impossible kind value" );
+ break;
+
+ case wxTipKind_TopLeft:
+ x = tipOffset;
+ yApex = 0;
+ yBase = tipSize;
+ dy = tipSize;
+
+ tipPoints[0] = wxPoint2DDouble(x, yBase);
+ tipPoints[1] = wxPoint2DDouble(x, yApex);
+ tipPoints[2] = wxPoint2DDouble(x + tipSize, yBase);
+
+ pointStart = RectPoint_TopRight;
+ break;
+
+ case wxTipKind_TopRight:
+ x = size.x - tipOffset;
+ yApex = 0;
+ yBase = tipSize;
+ dy = tipSize;
+
+ tipPoints[0] = wxPoint2DDouble(x - tipSize, yBase);
+ tipPoints[1] = wxPoint2DDouble(x, yApex);
+ tipPoints[2] = wxPoint2DDouble(x, yBase);
+
+ pointStart = RectPoint_TopRight;
+ break;
+
+ case wxTipKind_BottomLeft:
+ x = tipOffset;
+ yApex = size.y + tipSize;
+ yBase = size.y;
+ dy = 0;
+
+ tipPoints[0] = wxPoint2DDouble(x + tipSize, yBase);
+ tipPoints[1] = wxPoint2DDouble(x, yApex);
+ tipPoints[2] = wxPoint2DDouble(x, yBase);
+
+ pointStart = RectPoint_BotLeft;
+ break;
+
+ case wxTipKind_BottomRight:
+ x = size.x - tipOffset;
+ yApex = size.y + tipSize;
+ yBase = size.y;
+ dy = 0;
+
+ tipPoints[0] = wxPoint2DDouble(x, yBase);
+ tipPoints[1] = wxPoint2DDouble(x, yApex);
+ tipPoints[2] = wxPoint2DDouble(x - tipSize, yBase);
+
+ pointStart = RectPoint_BotLeft;
+ break;
+
+ case wxTipKind_Top:
+ x = size.x/2;
+ yApex = 0;
+ yBase = tipSize;
+ dy = tipSize;
+
+ {
+ // A half-side of an equilateral triangle is its altitude
+ // divided by sqrt(3) ~= 1.73.
+ const double halfside = tipSize/1.73;
+
+ tipPoints[0] = wxPoint2DDouble(x - halfside, yBase);
+ tipPoints[1] = wxPoint2DDouble(x, yApex);
+ tipPoints[2] = wxPoint2DDouble(x + halfside, yBase);
+ }
+
+ pointStart = RectPoint_TopRight;
+ break;
+
+ case wxTipKind_Bottom:
+ x = size.x/2;
+ yApex = size.y + tipSize;
+ yBase = size.y;
+ dy = 0;
+
+ {
+ const double halfside = tipSize/1.73;
+
+ tipPoints[0] = wxPoint2DDouble(x + halfside, yBase);
+ tipPoints[1] = wxPoint2DDouble(x, yApex);
+ tipPoints[2] = wxPoint2DDouble(x - halfside, yBase);
+ }
+
+ pointStart = RectPoint_BotLeft;
+ break;
+
+ case wxTipKind_None:
+ x = size.x/2;
+ dy = 0;
+
+ path.AddRoundedRectangle(0, 0, size.x, size.y, RADIUS);
+ break;
+ }
+
+ wxASSERT_MSG( dy != -1, wxS("Unknown tip kind?") );
+
+ size.y += tipSize;
+ SetSize(size);
+
+ if ( tipKind != wxTipKind_None )
+ {
+ path.MoveToPoint(tipPoints[0]);
+ path.AddLineToPoint(tipPoints[1]);
+ path.AddLineToPoint(tipPoints[2]);
+
+ const double xLeft = 0.;
+ const double xMid = size.x/2.;
+ const double xRight = size.x;
+
+ const double yTop = dy;
+ const double yMid = (dy + size.y)/2.;
+ const double yBot = dy + contentSize.y;
+
+ wxPoint2DDouble rectPoints[RectPoint_Max];
+ rectPoints[RectPoint_TopLeft] = wxPoint2DDouble(xLeft, yTop);
+ rectPoints[RectPoint_Top] = wxPoint2DDouble(xMid, yTop);
+ rectPoints[RectPoint_TopRight] = wxPoint2DDouble(xRight, yTop);
+ rectPoints[RectPoint_Right] = wxPoint2DDouble(xRight, yMid);
+ rectPoints[RectPoint_BotRight] = wxPoint2DDouble(xRight, yBot);
+ rectPoints[RectPoint_Bot] = wxPoint2DDouble(xMid, yBot);
+ rectPoints[RectPoint_BotLeft] = wxPoint2DDouble(xLeft, yBot);
+ rectPoints[RectPoint_Left] = wxPoint2DDouble(xLeft, yMid);
+
+ // Iterate over all rectangle rectPoints for the first 3 corners.
+ unsigned n = pointStart;
+ for ( unsigned corner = 0; corner < 3; corner++ )
+ {
+ const wxPoint2DDouble& pt1 = rectPoints[n];
+
+ n = (n + 1) % RectPoint_Max;
+
+ const wxPoint2DDouble& pt2 = rectPoints[n];
+
+ path.AddArcToPoint(pt1.m_x, pt1.m_y, pt2.m_x, pt2.m_y, RADIUS);
+
+ n = (n + 1) % RectPoint_Max;
+ }
+
+ // Last one wraps to the first point of the tip.
+ const wxPoint2DDouble& pt1 = rectPoints[n];
+ const wxPoint2DDouble& pt2 = tipPoints[0];
+
+ path.AddArcToPoint(pt1.m_x, pt1.m_y, pt2.m_x, pt2.m_y, RADIUS);
+
+ path.CloseSubpath();
+ }
+
+ SetShape(path);
+#else // !wxUSE_GRAPHICS_CONTEXT
+ int x = contentSize.x/2,
+ yApex = 0,
+ dy = 0;
+
+ SetSize(contentSize);
+#endif // wxUSE_GRAPHICS_CONTEXT/!wxUSE_GRAPHICS_CONTEXT
+
+ m_anchorPos.x = x;
+ m_anchorPos.y = yApex;
+
+ return dy;
+ }
+
+ // Timer event handler hides the tooltip when the timeout expires.
+ void OnTimer(wxTimerEvent& WXUNUSED(event))
+ {
+ // Doing "Notify" here ensures that our OnDismiss() is called and so we
+ // also Destroy() ourselves. We could use Dismiss() and call Destroy()
+ // explicitly from here as well.
+ DismissAndNotify();
+ }
+
+
+ // The anchor point offset if we show a tip or the middle of the top side
+ // otherwise.
+ wxPoint m_anchorPos;
+
+ // The timer counting down the time until we're hidden.
+ wxTimer m_timer;
+
+ wxDECLARE_NO_COPY_CLASS(wxRichToolTipPopup);
+};
+
+// ----------------------------------------------------------------------------
+// wxRichToolTipGenericImpl: generic implementation of wxRichToolTip.
+// ----------------------------------------------------------------------------
+
+void
+wxRichToolTipGenericImpl::SetBackgroundColour(const wxColour& col,
+ const wxColour& colEnd)
+{
+ m_colStart = col;
+ m_colEnd = colEnd;
+}
+
+void wxRichToolTipGenericImpl::SetCustomIcon(const wxIcon& icon)
+{
+ m_icon = icon;
+}
+
+void wxRichToolTipGenericImpl::SetStandardIcon(int icon)
+{
+ switch ( icon & wxICON_MASK )
+ {
+ case wxICON_WARNING:
+ case wxICON_ERROR:
+ case wxICON_INFORMATION:
+ // Although we don't use this icon in a list, we need a smallish
+ // icon here and not an icon of a typical message box size so use
+ // wxART_LIST to get it.
+ m_icon = wxArtProvider::GetIcon
+ (
+ wxArtProvider::GetMessageBoxIconId(icon),
+ wxART_LIST
+ );
+ break;
+
+ case wxICON_QUESTION:
+ wxFAIL_MSG("Question icon doesn't make sense for a tooltip");
+ break;
+
+ case wxICON_NONE:
+ m_icon = wxNullIcon;
+ break;
+ }
+}
+
+void wxRichToolTipGenericImpl::SetTimeout(unsigned milliseconds)
+{
+ m_timeout = milliseconds;
+}
+
+void wxRichToolTipGenericImpl::SetTipKind(wxTipKind tipKind)
+{
+ m_tipKind = tipKind;
+}
+
+void wxRichToolTipGenericImpl::SetTitleFont(const wxFont& font)
+{
+ m_titleFont = font;
+}
+
+void wxRichToolTipGenericImpl::ShowFor(wxWindow* win)
+{
+ // Set the focus to the window the tooltip refers to to make it look active.
+ win->SetFocus();
+
+ wxRichToolTipPopup* const popup = new wxRichToolTipPopup
+ (
+ win,
+ m_title,
+ m_message,
+ m_icon,
+ m_tipKind,
+ m_titleFont
+ );
+
+ popup->SetBackground(m_colStart, m_colEnd);
+
+ popup->DoShow();
+
+ popup->SetTimeout(m_timeout);
+}
+
+// Currently only wxMSW provides a native implementation.
+#ifndef __WXMSW__
+
+/* static */
+wxRichToolTipImpl*
+wxRichToolTipImpl::Create(const wxString& title, const wxString& message)
+{
+ return new wxRichToolTipGenericImpl(title, message);
+}
+
+#endif // !__WXMSW__
+
+#endif // wxUSE_RICHTOOLTIP
diff --git a/src/msw/richtooltip.cpp b/src/msw/richtooltip.cpp
new file mode 100644
index 0000000000..1736eb0324
--- /dev/null
+++ b/src/msw/richtooltip.cpp
@@ -0,0 +1,173 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/msw/richtooltip.cpp
+// Purpose: Native MSW implementation of wxRichToolTip.
+// Author: Vadim Zeitlin
+// Created: 2011-10-18
+// RCS-ID: $Id: wxhead.cpp,v 1.11 2010-04-22 12:44:51 zeitlin Exp $
+// Copyright: (c) 2011 Vadim Zeitlin
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_RICHTOOLTIP
+
+#ifndef WX_PRECOMP
+#endif // WX_PRECOMP
+
+#include "wx/private/richtooltip.h"
+#include "wx/generic/private/richtooltip.h"
+#include "wx/msw/private.h"
+#include "wx/msw/uxtheme.h"
+
+// ============================================================================
+// wxRichToolTipMSWImpl: the real implementation.
+// ============================================================================
+
+class wxRichToolTipMSWImpl : public wxRichToolTipGenericImpl
+{
+public:
+ wxRichToolTipMSWImpl(const wxString& title, const wxString& message) :
+ wxRichToolTipGenericImpl(title, message)
+ {
+ // So far so good...
+ m_canUseNative = true;
+
+ m_ttiIcon = TTI_NONE;
+ }
+
+ virtual void SetBackgroundColour(const wxColour& col,
+ const wxColour& colEnd)
+ {
+ // Setting background colour is not supported neither.
+ m_canUseNative = false;
+
+ wxRichToolTipGenericImpl::SetBackgroundColour(col, colEnd);
+ }
+
+ virtual void SetCustomIcon(const wxIcon& icon)
+ {
+ // Custom icons are not supported by EM_SHOWBALLOONTIP.
+ m_canUseNative = false;
+
+ wxRichToolTipGenericImpl::SetCustomIcon(icon);
+ }
+
+ virtual void SetStandardIcon(int icon)
+ {
+ wxRichToolTipGenericImpl::SetStandardIcon(icon);
+ if ( !m_canUseNative )
+ return;
+
+ switch ( icon & wxICON_MASK )
+ {
+ case wxICON_WARNING:
+ m_ttiIcon = TTI_WARNING;
+ break;
+
+ case wxICON_ERROR:
+ m_ttiIcon = TTI_ERROR;
+ break;
+
+ case wxICON_INFORMATION:
+ m_ttiIcon = TTI_INFO;
+ break;
+
+ case wxICON_QUESTION:
+ wxFAIL_MSG("Question icon doesn't make sense for a tooltip");
+ break;
+
+ case wxICON_NONE:
+ m_ttiIcon = TTI_NONE;
+ break;
+ }
+ }
+
+ virtual void SetTimeout(unsigned milliseconds)
+ {
+ // We don't support changing the timeout (maybe TTM_SETDELAYTIME could
+ // be used for this?).
+ m_canUseNative = false;
+
+ wxRichToolTipGenericImpl::SetTimeout(milliseconds);
+ }
+
+ virtual void SetTipKind(wxTipKind tipKind)
+ {
+ // Setting non-default tip is not supported.
+ if ( tipKind != wxTipKind_Auto )
+ m_canUseNative = false;
+
+ wxRichToolTipGenericImpl::SetTipKind(tipKind);
+ }
+
+ virtual void SetTitleFont(const wxFont& font)
+ {
+ // Setting non-default font is not supported.
+ m_canUseNative = false;
+
+ wxRichToolTipGenericImpl::SetTitleFont(font);
+ }
+
+ virtual void ShowFor(wxWindow* win)
+ {
+ // TODO: We could use native tooltip control to show native balloon
+ // tooltips for any window but right now we use the simple
+ // EM_SHOWBALLOONTIP API which can only be used with text
+ // controls.
+ if ( m_canUseNative )
+ {
+ wxTextCtrl* const text = wxDynamicCast(win, wxTextCtrl);
+ if ( text )
+ {
+ EDITBALLOONTIP ebt;
+ ebt.cbStruct = sizeof(EDITBALLOONTIP);
+ ebt.pszTitle = m_title.wc_str();
+ ebt.pszText = m_message.wc_str();
+ ebt.ttiIcon = m_ttiIcon;
+ if ( Edit_ShowBalloonTip(GetHwndOf(text), &ebt) )
+ return;
+ }
+ }
+
+ // Don't set m_canUseNative to false here, we could be able to use the
+ // native tooltips if we're called for a different window the next
+ // time.
+ wxRichToolTipGenericImpl::ShowFor(win);
+ }
+
+private:
+ // If this is false, we've been requested to do something that the native
+ // version doesn't support and so need to fall back to the generic one.
+ bool m_canUseNative;
+
+ // One of TTI_NONE, TTI_INFO, TTI_WARNING or TTI_ERROR.
+ int m_ttiIcon;
+};
+
+/* static */
+wxRichToolTipImpl*
+wxRichToolTipImpl::Create(const wxString& title, const wxString& message)
+{
+ // EM_SHOWBALLOONTIP is only implemented by comctl32.dll v6 so don't even
+ // bother using the native implementation if we're not using themes.
+ if ( wxUxThemeEngine::GetIfActive() )
+ return new wxRichToolTipMSWImpl(title, message);
+
+ return new wxRichToolTipGenericImpl(title, message);
+}
+
+#endif // wxUSE_RICHTOOLTIP