From e36a173933aaa81b28a27979c3748e8bc42ef88c Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Sat, 24 Nov 2007 01:56:13 +0000
Subject: [PATCH] added wxNotificationMessage and implemented it generically
 and natively for Maemo

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 Makefile.in                      |  57 ++++++++-
 build/bakefiles/files.bkl        |   5 +
 build/msw/makefile.bcc           |  24 ++++
 build/msw/makefile.gcc           |  24 ++++
 build/msw/makefile.vc            |  24 ++++
 build/msw/makefile.wat           |  24 ++++
 build/msw/wx_adv.dsp             |  12 ++
 build/msw/wx_core.dsp            |   8 ++
 configure                        |  54 +++++++-
 configure.in                     |   5 +
 docs/changes.txt                 |   1 +
 docs/latex/wx/classes.tex        |   1 +
 docs/latex/wx/notifmsg.tex       |  94 ++++++++++++++
 include/wx/chkconf.h             |   8 ++
 include/wx/generic/notifmsg.h    |  60 +++++++++
 include/wx/gtk/hildon/notifmsg.h |  59 +++++++++
 include/wx/mac/setup0.h          |  11 ++
 include/wx/motif/setup0.h        |  11 ++
 include/wx/msw/setup0.h          |  11 ++
 include/wx/msw/wince/setup.h     |  11 ++
 include/wx/notifmsg.h            | 131 +++++++++++++++++++
 include/wx/os2/setup0.h          |  11 ++
 include/wx/palmos/setup0.h       |  11 ++
 include/wx/setup_inc.h           |  11 ++
 samples/dialogs/dialogs.cpp      |  75 ++++++++++-
 samples/dialogs/dialogs.h        |  15 +++
 setup.h.in                       |   2 +
 src/generic/notifmsgg.cpp        | 211 +++++++++++++++++++++++++++++++
 src/gtk/hildon/notifmsg.cpp      | 126 ++++++++++++++++++
 29 files changed, 1086 insertions(+), 11 deletions(-)
 create mode 100644 docs/latex/wx/notifmsg.tex
 create mode 100644 include/wx/generic/notifmsg.h
 create mode 100644 include/wx/gtk/hildon/notifmsg.h
 create mode 100644 include/wx/notifmsg.h
 create mode 100644 src/generic/notifmsgg.cpp
 create mode 100644 src/gtk/hildon/notifmsg.cpp

diff --git a/Makefile.in b/Makefile.in
index e1e3f7dd69..5946f47040 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2923,9 +2923,12 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION__ADVANCED_PLATFORM_HDR =  \
 	wx/unix/taskbarx11.h \
 	wx/generic/animate.h
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION__ADVANCED_PLATFORM_HDR)
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ADVANCED_PLATFORM_HDR \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@	= wx/unix/joystick.h wx/unix/sound.h \
-@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@	wx/unix/taskbarx11.h
+COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_ADVANCED_PLATFORM_HDR =  \
+	wx/unix/joystick.h \
+	wx/unix/sound.h \
+	wx/unix/taskbarx11.h \
+	wx/gtk/hildon/notifmsg.h
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@ADVANCED_PLATFORM_HDR = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_ADVANCED_PLATFORM_HDR)
 COND_TOOLKIT_MAC_ADVANCED_PLATFORM_HDR =  \
 	wx/generic/animate.h \
 	wx/mac/carbon/drawer.h \
@@ -2979,6 +2982,7 @@ COND_WXUNIV_0_ADVANCED_HDR =  \
 	wx/generic/helpext.h \
 	wx/generic/hyperlink.h \
 	wx/generic/laywin.h \
+	wx/generic/notifmsg.h \
 	wx/generic/propdlg.h \
 	wx/generic/sashwin.h \
 	wx/generic/splash.h \
@@ -2987,6 +2991,7 @@ COND_WXUNIV_0_ADVANCED_HDR =  \
 	wx/hyperlink.h \
 	wx/joystick.h \
 	wx/laywin.h \
+	wx/notifmsg.h \
 	wx/odcombo.h \
 	wx/propdlg.h \
 	wx/sashwin.h \
@@ -3021,6 +3026,7 @@ COND_WXUNIV_1_ADVANCED_HDR =  \
 	wx/generic/helpext.h \
 	wx/generic/hyperlink.h \
 	wx/generic/laywin.h \
+	wx/generic/notifmsg.h \
 	wx/generic/propdlg.h \
 	wx/generic/sashwin.h \
 	wx/generic/splash.h \
@@ -3029,6 +3035,7 @@ COND_WXUNIV_1_ADVANCED_HDR =  \
 	wx/hyperlink.h \
 	wx/joystick.h \
 	wx/laywin.h \
+	wx/notifmsg.h \
 	wx/odcombo.h \
 	wx/propdlg.h \
 	wx/sashwin.h \
@@ -5255,6 +5262,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS =  \
 	monodll_helpext.o \
 	monodll_hyperlinkg.o \
 	monodll_laywin.o \
+	monodll_notifmsgg.o \
 	monodll_odcombo.o \
 	monodll_propdlg.o \
 	monodll_sashwin.o \
@@ -5280,6 +5288,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS =  \
 	monodll_helpext.o \
 	monodll_hyperlinkg.o \
 	monodll_laywin.o \
+	monodll_notifmsgg.o \
 	monodll_odcombo.o \
 	monodll_propdlg.o \
 	monodll_sashwin.o \
@@ -7148,6 +7157,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_1 =  \
 	monolib_helpext.o \
 	monolib_hyperlinkg.o \
 	monolib_laywin.o \
+	monolib_notifmsgg.o \
 	monolib_odcombo.o \
 	monolib_propdlg.o \
 	monolib_sashwin.o \
@@ -7173,6 +7183,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_1 =  \
 	monolib_helpext.o \
 	monolib_hyperlinkg.o \
 	monolib_laywin.o \
+	monolib_notifmsgg.o \
 	monolib_odcombo.o \
 	monolib_propdlg.o \
 	monolib_sashwin.o \
@@ -10871,6 +10882,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_2 =  \
 	advdll_helpext.o \
 	advdll_hyperlinkg.o \
 	advdll_laywin.o \
+	advdll_notifmsgg.o \
 	advdll_odcombo.o \
 	advdll_propdlg.o \
 	advdll_sashwin.o \
@@ -10896,6 +10908,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_2 =  \
 	advdll_helpext.o \
 	advdll_hyperlinkg.o \
 	advdll_laywin.o \
+	advdll_notifmsgg.o \
 	advdll_odcombo.o \
 	advdll_propdlg.o \
 	advdll_sashwin.o \
@@ -10942,6 +10955,7 @@ COND_WXUNIV_0___ADVANCED_SRC_OBJECTS_3 =  \
 	advlib_helpext.o \
 	advlib_hyperlinkg.o \
 	advlib_laywin.o \
+	advlib_notifmsgg.o \
 	advlib_odcombo.o \
 	advlib_propdlg.o \
 	advlib_sashwin.o \
@@ -10967,6 +10981,7 @@ COND_WXUNIV_1___ADVANCED_SRC_OBJECTS_3 =  \
 	advlib_helpext.o \
 	advlib_hyperlinkg.o \
 	advlib_laywin.o \
+	advlib_notifmsgg.o \
 	advlib_odcombo.o \
 	advlib_propdlg.o \
 	advlib_sashwin.o \
@@ -11699,7 +11714,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS =  \
 	monodll_sound.o \
 	monodll_taskbarx11.o \
 	monodll_taskbar.o \
-	monodll_eggtrayicon.o
+	monodll_eggtrayicon.o \
+	monodll_notifmsg.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS)
 COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS =  \
 	monodll_taskbarcmn.o \
@@ -11772,7 +11788,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_0 =  \
 	monolib_sound.o \
 	monolib_taskbarx11.o \
 	monolib_taskbar.o \
-	monolib_eggtrayicon.o
+	monolib_eggtrayicon.o \
+	monolib_notifmsg.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_0 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_0)
 COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_0 =  \
 	monolib_taskbarcmn.o \
@@ -11845,7 +11862,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_8 =  \
 	advdll_sound.o \
 	advdll_taskbarx11.o \
 	advdll_taskbar.o \
-	advdll_eggtrayicon.o
+	advdll_eggtrayicon.o \
+	advdll_notifmsg.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_8 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_8)
 COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_8 =  \
 	advdll_taskbarcmn.o \
@@ -11909,7 +11927,8 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_9 =  \
 	advlib_sound.o \
 	advlib_taskbarx11.o \
 	advlib_taskbar.o \
-	advlib_eggtrayicon.o
+	advlib_eggtrayicon.o \
+	advlib_notifmsg.o
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@__ADVANCED_PLATFORM_SRC_OBJECTS_9 = $(COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___ADVANCED_PLATFORM_SRC_OBJECTS_9)
 COND_TOOLKIT_MAC___ADVANCED_PLATFORM_SRC_OBJECTS_9 =  \
 	advlib_taskbarcmn.o \
@@ -17682,6 +17701,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@monodll_laywin.o: $(srcdir)/src/generic/laywin.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
 
+@COND_USE_GUI_1@monodll_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
 @COND_USE_GUI_1@monodll_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
 
@@ -17838,6 +17860,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@	$(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(MONODLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monodll_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
 
@@ -22149,6 +22174,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@monolib_laywin.o: $(srcdir)/src/generic/laywin.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
 
+@COND_USE_GUI_1@monolib_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
 @COND_USE_GUI_1@monolib_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
 
@@ -22305,6 +22333,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@	$(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(MONOLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@monolib_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
 
@@ -30222,6 +30253,9 @@ advdll_hyperlinkg.o: $(srcdir)/src/generic/hyperlinkg.cpp $(ADVDLL_ODEP)
 advdll_laywin.o: $(srcdir)/src/generic/laywin.cpp $(ADVDLL_ODEP)
 	$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
 
+advdll_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(ADVDLL_ODEP)
+	$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
 advdll_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(ADVDLL_ODEP)
 	$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
 
@@ -30408,6 +30442,9 @@ advdll_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_@advdll_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(ADVDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_@	$(CCC) -c -o $@ $(ADVDLL_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advdll_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(ADVDLL_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@	$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
 @COND_TOOLKIT_MSW_WXUNIV_0@advdll_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(ADVDLL_ODEP)
 @COND_TOOLKIT_MSW_WXUNIV_0@	$(CXXC) -c -o $@ $(ADVDLL_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
 
@@ -30468,6 +30505,9 @@ advlib_hyperlinkg.o: $(srcdir)/src/generic/hyperlinkg.cpp $(ADVLIB_ODEP)
 advlib_laywin.o: $(srcdir)/src/generic/laywin.cpp $(ADVLIB_ODEP)
 	$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/laywin.cpp
 
+advlib_notifmsgg.o: $(srcdir)/src/generic/notifmsgg.cpp $(ADVLIB_ODEP)
+	$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/notifmsgg.cpp
+
 advlib_odcombo.o: $(srcdir)/src/generic/odcombo.cpp $(ADVLIB_ODEP)
 	$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/generic/odcombo.cpp
 
@@ -30654,6 +30694,9 @@ advlib_wizard.o: $(srcdir)/src/generic/wizard.cpp $(ADVLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_@advlib_eggtrayicon.o: $(srcdir)/src/gtk1/eggtrayicon.c $(ADVLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION_@	$(CCC) -c -o $@ $(ADVLIB_CFLAGS) $(srcdir)/src/gtk1/eggtrayicon.c
 
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@advlib_notifmsg.o: $(srcdir)/src/gtk/hildon/notifmsg.cpp $(ADVLIB_ODEP)
+@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2@	$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/gtk/hildon/notifmsg.cpp
+
 @COND_TOOLKIT_MSW_WXUNIV_0@advlib_datectrl.o: $(srcdir)/src/msw/datectrl.cpp $(ADVLIB_ODEP)
 @COND_TOOLKIT_MSW_WXUNIV_0@	$(CXXC) -c -o $@ $(ADVLIB_CXXFLAGS) $(srcdir)/src/msw/datectrl.cpp
 
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 93ae093520..7485165a77 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -2789,6 +2789,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/generic/helpext.cpp
     src/generic/hyperlinkg.cpp
     src/generic/laywin.cpp
+    src/generic/notifmsgg.cpp
     src/generic/odcombo.cpp
     src/generic/propdlg.cpp
     src/generic/sashwin.cpp
@@ -2818,6 +2819,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/generic/helpext.h
     wx/generic/hyperlink.h
     wx/generic/laywin.h
+    wx/generic/notifmsg.h
     wx/generic/propdlg.h
     wx/generic/sashwin.h
     wx/generic/splash.h
@@ -2826,6 +2828,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/hyperlink.h
     wx/joystick.h
     wx/laywin.h
+    wx/notifmsg.h
     wx/odcombo.h
     wx/propdlg.h
     wx/sashwin.h
@@ -2937,8 +2940,10 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 <set var="ADVANCED_GTK_SRC" hints="files">
     src/gtk/taskbar.cpp
     src/gtk/eggtrayicon.c
+    src/gtk/hildon/notifmsg.cpp
 </set>
 <set var="ADVANCED_GTK_HDR" hints="files">
+    wx/gtk/hildon/notifmsg.h
 </set>
 
 <set var="ADVANCED_GTK_NATIVE_SRC" hints="files">
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index c07c6dc124..bb716c3b86 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -1930,6 +1930,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpext.obj \
 	$(OBJS)\monodll_hyperlinkg.obj \
 	$(OBJS)\monodll_laywin.obj \
+	$(OBJS)\monodll_notifmsgg.obj \
 	$(OBJS)\monodll_odcombo.obj \
 	$(OBJS)\monodll_propdlg.obj \
 	$(OBJS)\monodll_sashwin.obj \
@@ -1961,6 +1962,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpext.obj \
 	$(OBJS)\monodll_hyperlinkg.obj \
 	$(OBJS)\monodll_laywin.obj \
+	$(OBJS)\monodll_notifmsgg.obj \
 	$(OBJS)\monodll_odcombo.obj \
 	$(OBJS)\monodll_propdlg.obj \
 	$(OBJS)\monodll_sashwin.obj \
@@ -2569,6 +2571,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpext.obj \
 	$(OBJS)\monolib_hyperlinkg.obj \
 	$(OBJS)\monolib_laywin.obj \
+	$(OBJS)\monolib_notifmsgg.obj \
 	$(OBJS)\monolib_odcombo.obj \
 	$(OBJS)\monolib_propdlg.obj \
 	$(OBJS)\monolib_sashwin.obj \
@@ -2600,6 +2603,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpext.obj \
 	$(OBJS)\monolib_hyperlinkg.obj \
 	$(OBJS)\monolib_laywin.obj \
+	$(OBJS)\monolib_notifmsgg.obj \
 	$(OBJS)\monolib_odcombo.obj \
 	$(OBJS)\monolib_propdlg.obj \
 	$(OBJS)\monolib_sashwin.obj \
@@ -3597,6 +3601,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\advdll_helpext.obj \
 	$(OBJS)\advdll_hyperlinkg.obj \
 	$(OBJS)\advdll_laywin.obj \
+	$(OBJS)\advdll_notifmsgg.obj \
 	$(OBJS)\advdll_odcombo.obj \
 	$(OBJS)\advdll_propdlg.obj \
 	$(OBJS)\advdll_sashwin.obj \
@@ -3628,6 +3633,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\advdll_helpext.obj \
 	$(OBJS)\advdll_hyperlinkg.obj \
 	$(OBJS)\advdll_laywin.obj \
+	$(OBJS)\advdll_notifmsgg.obj \
 	$(OBJS)\advdll_odcombo.obj \
 	$(OBJS)\advdll_propdlg.obj \
 	$(OBJS)\advdll_sashwin.obj \
@@ -3663,6 +3669,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\advlib_helpext.obj \
 	$(OBJS)\advlib_hyperlinkg.obj \
 	$(OBJS)\advlib_laywin.obj \
+	$(OBJS)\advlib_notifmsgg.obj \
 	$(OBJS)\advlib_odcombo.obj \
 	$(OBJS)\advlib_propdlg.obj \
 	$(OBJS)\advlib_sashwin.obj \
@@ -3694,6 +3701,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\advlib_helpext.obj \
 	$(OBJS)\advlib_hyperlinkg.obj \
 	$(OBJS)\advlib_laywin.obj \
+	$(OBJS)\advlib_notifmsgg.obj \
 	$(OBJS)\advlib_odcombo.obj \
 	$(OBJS)\advlib_propdlg.obj \
 	$(OBJS)\advlib_sashwin.obj \
@@ -7129,6 +7137,11 @@ $(OBJS)\monodll_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -9219,6 +9232,11 @@ $(OBJS)\monolib_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -12653,6 +12671,9 @@ $(OBJS)\advdll_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
 $(OBJS)\advdll_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
 
+$(OBJS)\advdll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
+
 $(OBJS)\advdll_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) -q -c -P -o$@ $(ADVDLL_CXXFLAGS) $**
 
@@ -12745,6 +12766,9 @@ $(OBJS)\advlib_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
 $(OBJS)\advlib_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
 
+$(OBJS)\advlib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
+
 $(OBJS)\advlib_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) -q -c -P -o$@ $(ADVLIB_CXXFLAGS) $**
 
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index c31e781d8f..0f771555cf 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -1948,6 +1948,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpext.o \
 	$(OBJS)\monodll_hyperlinkg.o \
 	$(OBJS)\monodll_laywin.o \
+	$(OBJS)\monodll_notifmsgg.o \
 	$(OBJS)\monodll_odcombo.o \
 	$(OBJS)\monodll_propdlg.o \
 	$(OBJS)\monodll_sashwin.o \
@@ -1979,6 +1980,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpext.o \
 	$(OBJS)\monodll_hyperlinkg.o \
 	$(OBJS)\monodll_laywin.o \
+	$(OBJS)\monodll_notifmsgg.o \
 	$(OBJS)\monodll_odcombo.o \
 	$(OBJS)\monodll_propdlg.o \
 	$(OBJS)\monodll_sashwin.o \
@@ -2593,6 +2595,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpext.o \
 	$(OBJS)\monolib_hyperlinkg.o \
 	$(OBJS)\monolib_laywin.o \
+	$(OBJS)\monolib_notifmsgg.o \
 	$(OBJS)\monolib_odcombo.o \
 	$(OBJS)\monolib_propdlg.o \
 	$(OBJS)\monolib_sashwin.o \
@@ -2624,6 +2627,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpext.o \
 	$(OBJS)\monolib_hyperlinkg.o \
 	$(OBJS)\monolib_laywin.o \
+	$(OBJS)\monolib_notifmsgg.o \
 	$(OBJS)\monolib_odcombo.o \
 	$(OBJS)\monolib_propdlg.o \
 	$(OBJS)\monolib_sashwin.o \
@@ -3649,6 +3653,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\advdll_helpext.o \
 	$(OBJS)\advdll_hyperlinkg.o \
 	$(OBJS)\advdll_laywin.o \
+	$(OBJS)\advdll_notifmsgg.o \
 	$(OBJS)\advdll_odcombo.o \
 	$(OBJS)\advdll_propdlg.o \
 	$(OBJS)\advdll_sashwin.o \
@@ -3680,6 +3685,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\advdll_helpext.o \
 	$(OBJS)\advdll_hyperlinkg.o \
 	$(OBJS)\advdll_laywin.o \
+	$(OBJS)\advdll_notifmsgg.o \
 	$(OBJS)\advdll_odcombo.o \
 	$(OBJS)\advdll_propdlg.o \
 	$(OBJS)\advdll_sashwin.o \
@@ -3719,6 +3725,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\advlib_helpext.o \
 	$(OBJS)\advlib_hyperlinkg.o \
 	$(OBJS)\advlib_laywin.o \
+	$(OBJS)\advlib_notifmsgg.o \
 	$(OBJS)\advlib_odcombo.o \
 	$(OBJS)\advlib_propdlg.o \
 	$(OBJS)\advlib_sashwin.o \
@@ -3750,6 +3757,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\advlib_helpext.o \
 	$(OBJS)\advlib_hyperlinkg.o \
 	$(OBJS)\advlib_laywin.o \
+	$(OBJS)\advlib_notifmsgg.o \
 	$(OBJS)\advlib_odcombo.o \
 	$(OBJS)\advlib_propdlg.o \
 	$(OBJS)\advlib_sashwin.o \
@@ -7369,6 +7377,11 @@ $(OBJS)\monodll_laywin.o: ../../src/generic/laywin.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_odcombo.o: ../../src/generic/odcombo.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -9561,6 +9574,11 @@ $(OBJS)\monolib_laywin.o: ../../src/generic/laywin.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_odcombo.o: ../../src/generic/odcombo.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -13197,6 +13215,9 @@ $(OBJS)\advdll_hyperlinkg.o: ../../src/generic/hyperlinkg.cpp
 $(OBJS)\advdll_laywin.o: ../../src/generic/laywin.cpp
 	$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\advdll_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+	$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\advdll_odcombo.o: ../../src/generic/odcombo.cpp
 	$(CXX) -c -o $@ $(ADVDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -13289,6 +13310,9 @@ $(OBJS)\advlib_hyperlinkg.o: ../../src/generic/hyperlinkg.cpp
 $(OBJS)\advlib_laywin.o: ../../src/generic/laywin.cpp
 	$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\advlib_notifmsgg.o: ../../src/generic/notifmsgg.cpp
+	$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\advlib_odcombo.o: ../../src/generic/odcombo.cpp
 	$(CXX) -c -o $@ $(ADVLIB_CXXFLAGS) $(CPPDEPS) $<
 
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index a05e194740..5a44c1aa4c 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -2104,6 +2104,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpext.obj \
 	$(OBJS)\monodll_hyperlinkg.obj \
 	$(OBJS)\monodll_laywin.obj \
+	$(OBJS)\monodll_notifmsgg.obj \
 	$(OBJS)\monodll_odcombo.obj \
 	$(OBJS)\monodll_propdlg.obj \
 	$(OBJS)\monodll_sashwin.obj \
@@ -2135,6 +2136,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_helpext.obj \
 	$(OBJS)\monodll_hyperlinkg.obj \
 	$(OBJS)\monodll_laywin.obj \
+	$(OBJS)\monodll_notifmsgg.obj \
 	$(OBJS)\monodll_odcombo.obj \
 	$(OBJS)\monodll_propdlg.obj \
 	$(OBJS)\monodll_sashwin.obj \
@@ -2749,6 +2751,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpext.obj \
 	$(OBJS)\monolib_hyperlinkg.obj \
 	$(OBJS)\monolib_laywin.obj \
+	$(OBJS)\monolib_notifmsgg.obj \
 	$(OBJS)\monolib_odcombo.obj \
 	$(OBJS)\monolib_propdlg.obj \
 	$(OBJS)\monolib_sashwin.obj \
@@ -2780,6 +2783,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_helpext.obj \
 	$(OBJS)\monolib_hyperlinkg.obj \
 	$(OBJS)\monolib_laywin.obj \
+	$(OBJS)\monolib_notifmsgg.obj \
 	$(OBJS)\monolib_odcombo.obj \
 	$(OBJS)\monolib_propdlg.obj \
 	$(OBJS)\monolib_sashwin.obj \
@@ -3819,6 +3823,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\advdll_helpext.obj \
 	$(OBJS)\advdll_hyperlinkg.obj \
 	$(OBJS)\advdll_laywin.obj \
+	$(OBJS)\advdll_notifmsgg.obj \
 	$(OBJS)\advdll_odcombo.obj \
 	$(OBJS)\advdll_propdlg.obj \
 	$(OBJS)\advdll_sashwin.obj \
@@ -3850,6 +3855,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\advdll_helpext.obj \
 	$(OBJS)\advdll_hyperlinkg.obj \
 	$(OBJS)\advdll_laywin.obj \
+	$(OBJS)\advdll_notifmsgg.obj \
 	$(OBJS)\advdll_odcombo.obj \
 	$(OBJS)\advdll_propdlg.obj \
 	$(OBJS)\advdll_sashwin.obj \
@@ -3891,6 +3897,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\advlib_helpext.obj \
 	$(OBJS)\advlib_hyperlinkg.obj \
 	$(OBJS)\advlib_laywin.obj \
+	$(OBJS)\advlib_notifmsgg.obj \
 	$(OBJS)\advlib_odcombo.obj \
 	$(OBJS)\advlib_propdlg.obj \
 	$(OBJS)\advlib_sashwin.obj \
@@ -3922,6 +3929,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\advlib_helpext.obj \
 	$(OBJS)\advlib_hyperlinkg.obj \
 	$(OBJS)\advlib_laywin.obj \
+	$(OBJS)\advlib_notifmsgg.obj \
 	$(OBJS)\advlib_odcombo.obj \
 	$(OBJS)\advlib_propdlg.obj \
 	$(OBJS)\advlib_sashwin.obj \
@@ -7461,6 +7469,11 @@ $(OBJS)\monodll_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -9551,6 +9564,11 @@ $(OBJS)\monolib_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -12985,6 +13003,9 @@ $(OBJS)\advdll_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
 $(OBJS)\advdll_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
 
+$(OBJS)\advdll_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
+
 $(OBJS)\advdll_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(ADVDLL_CXXFLAGS) $**
 
@@ -13077,6 +13098,9 @@ $(OBJS)\advlib_hyperlinkg.obj: ..\..\src\generic\hyperlinkg.cpp
 $(OBJS)\advlib_laywin.obj: ..\..\src\generic\laywin.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
 
+$(OBJS)\advlib_notifmsgg.obj: ..\..\src\generic\notifmsgg.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
+
 $(OBJS)\advlib_odcombo.obj: ..\..\src\generic\odcombo.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(ADVLIB_CXXFLAGS) $**
 
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index c82e9b4db1..8823b2ee9e 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -689,6 +689,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_helpext.obj &
 	$(OBJS)\monodll_hyperlinkg.obj &
 	$(OBJS)\monodll_laywin.obj &
+	$(OBJS)\monodll_notifmsgg.obj &
 	$(OBJS)\monodll_odcombo.obj &
 	$(OBJS)\monodll_propdlg.obj &
 	$(OBJS)\monodll_sashwin.obj &
@@ -720,6 +721,7 @@ ____ADVANCED_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_helpext.obj &
 	$(OBJS)\monodll_hyperlinkg.obj &
 	$(OBJS)\monodll_laywin.obj &
+	$(OBJS)\monodll_notifmsgg.obj &
 	$(OBJS)\monodll_odcombo.obj &
 	$(OBJS)\monodll_propdlg.obj &
 	$(OBJS)\monodll_sashwin.obj &
@@ -1339,6 +1341,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_helpext.obj &
 	$(OBJS)\monolib_hyperlinkg.obj &
 	$(OBJS)\monolib_laywin.obj &
+	$(OBJS)\monolib_notifmsgg.obj &
 	$(OBJS)\monolib_odcombo.obj &
 	$(OBJS)\monolib_propdlg.obj &
 	$(OBJS)\monolib_sashwin.obj &
@@ -1370,6 +1373,7 @@ ____ADVANCED_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_helpext.obj &
 	$(OBJS)\monolib_hyperlinkg.obj &
 	$(OBJS)\monolib_laywin.obj &
+	$(OBJS)\monolib_notifmsgg.obj &
 	$(OBJS)\monolib_odcombo.obj &
 	$(OBJS)\monolib_propdlg.obj &
 	$(OBJS)\monolib_sashwin.obj &
@@ -2411,6 +2415,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\advdll_helpext.obj &
 	$(OBJS)\advdll_hyperlinkg.obj &
 	$(OBJS)\advdll_laywin.obj &
+	$(OBJS)\advdll_notifmsgg.obj &
 	$(OBJS)\advdll_odcombo.obj &
 	$(OBJS)\advdll_propdlg.obj &
 	$(OBJS)\advdll_sashwin.obj &
@@ -2442,6 +2447,7 @@ ____ADVANCED_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\advdll_helpext.obj &
 	$(OBJS)\advdll_hyperlinkg.obj &
 	$(OBJS)\advdll_laywin.obj &
+	$(OBJS)\advdll_notifmsgg.obj &
 	$(OBJS)\advdll_odcombo.obj &
 	$(OBJS)\advdll_propdlg.obj &
 	$(OBJS)\advdll_sashwin.obj &
@@ -2483,6 +2489,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\advlib_helpext.obj &
 	$(OBJS)\advlib_hyperlinkg.obj &
 	$(OBJS)\advlib_laywin.obj &
+	$(OBJS)\advlib_notifmsgg.obj &
 	$(OBJS)\advlib_odcombo.obj &
 	$(OBJS)\advlib_propdlg.obj &
 	$(OBJS)\advlib_sashwin.obj &
@@ -2514,6 +2521,7 @@ ____ADVANCED_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\advlib_helpext.obj &
 	$(OBJS)\advlib_hyperlinkg.obj &
 	$(OBJS)\advlib_laywin.obj &
+	$(OBJS)\advlib_notifmsgg.obj &
 	$(OBJS)\advlib_odcombo.obj &
 	$(OBJS)\advlib_propdlg.obj &
 	$(OBJS)\advlib_sashwin.obj &
@@ -7603,6 +7611,11 @@ $(OBJS)\monodll_laywin.obj :  .AUTODEPEND ..\..\src\generic\laywin.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_notifmsgg.obj :  .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_odcombo.obj :  .AUTODEPEND ..\..\src\generic\odcombo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -9795,6 +9808,11 @@ $(OBJS)\monolib_laywin.obj :  .AUTODEPEND ..\..\src\generic\laywin.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_notifmsgg.obj :  .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_odcombo.obj :  .AUTODEPEND ..\..\src\generic\odcombo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -13431,6 +13449,9 @@ $(OBJS)\advdll_hyperlinkg.obj :  .AUTODEPEND ..\..\src\generic\hyperlinkg.cpp
 $(OBJS)\advdll_laywin.obj :  .AUTODEPEND ..\..\src\generic\laywin.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
+$(OBJS)\advdll_notifmsgg.obj :  .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
+
 $(OBJS)\advdll_odcombo.obj :  .AUTODEPEND ..\..\src\generic\odcombo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(ADVDLL_CXXFLAGS) $<
 
@@ -13523,6 +13544,9 @@ $(OBJS)\advlib_hyperlinkg.obj :  .AUTODEPEND ..\..\src\generic\hyperlinkg.cpp
 $(OBJS)\advlib_laywin.obj :  .AUTODEPEND ..\..\src\generic\laywin.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
+$(OBJS)\advlib_notifmsgg.obj :  .AUTODEPEND ..\..\src\generic\notifmsgg.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
+
 $(OBJS)\advlib_odcombo.obj :  .AUTODEPEND ..\..\src\generic\odcombo.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(ADVLIB_CXXFLAGS) $<
 
diff --git a/build/msw/wx_adv.dsp b/build/msw/wx_adv.dsp
index 387e2d3b3a..4a2778eaa0 100644
--- a/build/msw/wx_adv.dsp
+++ b/build/msw/wx_adv.dsp
@@ -727,6 +727,10 @@ SOURCE=..\..\src\generic\laywin.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\generic\notifmsgg.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\generic\odcombo.cpp
 # End Source File
 # Begin Source File
@@ -1264,6 +1268,10 @@ SOURCE=..\..\include\wx\generic\laywin.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\notifmsg.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\propdlg.h
 # End Source File
 # Begin Source File
@@ -1340,6 +1348,10 @@ SOURCE=..\..\include\wx\laywin.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\notifmsg.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\odcombo.h
 # End Source File
 # Begin Source File
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index f5df6be904..c95ed92121 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -8440,6 +8440,10 @@ SOURCE=..\..\include\wx\generic\notebook.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\generic\notifmsg.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\generic\numdlgg.h
 # End Source File
 # Begin Source File
@@ -9244,6 +9248,10 @@ SOURCE=..\..\include\wx\notebook.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\notifmsg.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\numdlg.h
 # End Source File
 # Begin Source File
diff --git a/configure b/configure
index f33124c9b4..fc39feac0f 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Id: configure.in 50116 2007-11-20 22:35:40Z VS .
+# From configure.in Id: configure.in 50135 2007-11-21 14:24:40Z VZ .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0.
 #
@@ -1781,6 +1781,7 @@ Optional Features:
   --enable-listbox        use wxListBox class
   --enable-listctrl       use wxListCtrl class
   --enable-notebook       use wxNotebook class
+  --enable-notifmsg       use wxNotificationMessage class
   --enable-odcombobox     use wxOwnerDrawnComboBox class
   --enable-radiobox       use wxRadioBox class
   --enable-radiobtn       use wxRadioButton class
@@ -10692,6 +10693,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}-notifmsg" >&5
+echo $ECHO_N "checking for --${enablestring:-enable}-notifmsg... $ECHO_C" >&6; }
+          # Check whether --enable-notifmsg was given.
+if test "${enable_notifmsg+set}" = set; then
+  enableval=$enable_notifmsg;
+                          if test "$enableval" = yes; then
+                            wx_cv_use_notifmsg='wxUSE_NOTIFICATION_MESSAGE=yes'
+                          else
+                            wx_cv_use_notifmsg='wxUSE_NOTIFICATION_MESSAGE=no'
+                          fi
+
+else
+
+                          wx_cv_use_notifmsg='wxUSE_NOTIFICATION_MESSAGE=${'DEFAULT_wxUSE_NOTIFICATION_MESSAGE":-$defaultval}"
+
+fi
+
+
+          eval "$wx_cv_use_notifmsg"
+
+          if test x"$enablestring" = xdisable; then
+            if test $wxUSE_NOTIFICATION_MESSAGE = yes; then
+              result=no
+            else
+              result=yes
+            fi
+          else
+            result=$wxUSE_NOTIFICATION_MESSAGE
+          fi
+
+          { echo "$as_me:$LINENO: result: $result" >&5
+echo "${ECHO_T}$result" >&6; }
+
+
           enablestring=
           defaultval=$wxUSE_ALL_FEATURES
           if test -z "$defaultval"; then
@@ -45133,6 +45178,13 @@ _ACEOF
     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS notebook"
 fi
 
+if test "$wxUSE_NOTIFICATION_MESSAGE" = "yes"; then
+    cat >>confdefs.h <<\_ACEOF
+#define wxUSE_NOTIFICATION_MESSAGE 1
+_ACEOF
+
+fi
+
 if test "$wxUSE_ODCOMBOBOX" = "yes"; then
   cat >>confdefs.h <<\_ACEOF
 #define wxUSE_ODCOMBOBOX 1
diff --git a/configure.in b/configure.in
index d578f98a35..0111e0580d 100644
--- a/configure.in
+++ b/configure.in
@@ -821,6 +821,7 @@ WX_ARG_FEATURE(listbook,    [  --enable-listbook       use wxListbook class], wx
 WX_ARG_FEATURE(listbox,     [  --enable-listbox        use wxListBox class], wxUSE_LISTBOX)
 WX_ARG_FEATURE(listctrl,    [  --enable-listctrl       use wxListCtrl class], wxUSE_LISTCTRL)
 WX_ARG_FEATURE(notebook,    [  --enable-notebook       use wxNotebook class], wxUSE_NOTEBOOK)
+WX_ARG_FEATURE(notifmsg,    [  --enable-notifmsg       use wxNotificationMessage class], wxUSE_NOTIFICATION_MESSAGE)
 WX_ARG_FEATURE(odcombobox,  [  --enable-odcombobox     use wxOwnerDrawnComboBox class], wxUSE_ODCOMBOBOX)
 WX_ARG_FEATURE(radiobox,    [  --enable-radiobox       use wxRadioBox class], wxUSE_RADIOBOX)
 WX_ARG_FEATURE(radiobtn,    [  --enable-radiobtn       use wxRadioButton class], wxUSE_RADIOBTN)
@@ -6508,6 +6509,10 @@ if test "$wxUSE_NOTEBOOK" = "yes"; then
     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS notebook"
 fi
 
+if test "$wxUSE_NOTIFICATION_MESSAGE" = "yes"; then
+    AC_DEFINE(wxUSE_NOTIFICATION_MESSAGE)
+fi
+
 if test "$wxUSE_ODCOMBOBOX" = "yes"; then
   AC_DEFINE(wxUSE_ODCOMBOBOX)
   USES_CONTROLS=1
diff --git a/docs/changes.txt b/docs/changes.txt
index fe6bb73f8d..757591fd5b 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -193,6 +193,7 @@ All (GUI):
 
 - Added {wxTextCtrl,wxComboBox}::AutoComplete() and AutoCompleteFileNames()
 - Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty).
+- Added wxNotificationMessage class for non-intrusive notifications
 - Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron).
 - Added support for drop down toolbar buttons (Tim Kosse).
 - Added support for labels for toolbar controls (Vince Harron).
diff --git a/docs/latex/wx/classes.tex b/docs/latex/wx/classes.tex
index e19606d4bc..cfa0522bcc 100644
--- a/docs/latex/wx/classes.tex
+++ b/docs/latex/wx/classes.tex
@@ -291,6 +291,7 @@
 \input notebook.tex
 \input noteevt.tex
 \input nbsizer.tex
+\input notifmsg.tex
 \input notifevt.tex
 \input object.tex
 \input objectdataptr.tex
diff --git a/docs/latex/wx/notifmsg.tex b/docs/latex/wx/notifmsg.tex
new file mode 100644
index 0000000000..481f6ac428
--- /dev/null
+++ b/docs/latex/wx/notifmsg.tex
@@ -0,0 +1,94 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name:        notifmsg.tex
+%% Purpose:     wxNotificationMessage documentation
+%% Author:      Vadim Zeitlin
+%% Created:     2007-11-24
+%% RCS-ID:      $Id: cmdlpars.tex 49199 2007-10-17 17:32:16Z VZ $
+%% Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwidgets.org>
+%% License:     wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\class{wxNotificationMessage}}\label{wxnotificationmessage}
+
+This class allows to show the user a message non intrusively. Currently it is
+implemented natively only for the Maemo platform and uses (non-modal) dialogs
+for the display of the notifications under the other platforms but it will be
+extended to use the platform-specific notifications in the other ports in the
+future.
+
+Notice that this class is not a window and so doesn't derive from wxWindow.
+
+\wxheading{Derived from}
+
+\helpref{wxEvtHandler}{wxevthandler}
+
+\wxheading{Include files}
+
+<wx/notifmsg.h>
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxNotificationMessage::wxNotificationMessage}\label{wxnotificationmessagewxnotificationmessage}
+
+\func{}{wxNotificationMessage}{\void}
+
+Default constructor, use \helpref{SetParent}{\wxnotificationmessagesetparent}, 
+\helpref{SetTitle}{wxnotificationmessagesettitle} and 
+\helpref{SetMessage}{wxnotificationmessagesetmessage} to initialize the object
+before showing it.
+
+
+\func{}{wxNotificationMessage}{\param{const wxString\& }{title}, \param{const wxString\& }{message = wxString()}, \param{wxWindow* }{parent = NULL}}
+
+Create a notification object with the given title and message (the
+latter may be empty in which case only the title will be shown).
+
+
+\membersection{wxNotificationMessage::Close}\label{wxnotificationmessageclose}
+
+\func{bool}{Close}{\void}
+
+Hides the notification.
+
+Returns \true if it was hidden or \false if it couldn't be done (e.g. on some
+systems automatically hidden notifications can't be hidden manually)
+
+
+\membersection{wxNotificationMessage::SetMessage}\label{wxnotificationmessagesetmessage}
+
+\func{void}{SetMessage}{\param{const wxString\& }{message}}
+
+Set the main text of the notification.
+
+
+\membersection{wxNotificationMessage::SetParent}\label{wxnotificationmessagesetparent}
+
+\func{void}{SetParent}{\param{wxWindow* }{parent}}
+
+Set the parent for this notification: the notification will be associated with
+the top level parent of this window or, if this method is not called, with the
+main application window by default
+
+
+\membersection{wxNotificationMessage::SetTitle}\label{wxnotificationmessagesettitle}
+
+\func{void}{SetTitle}{\param{const wxString\& }{title}}
+
+Set the title, it must be a concise string, use 
+\helpref{SetMessage}{wxnotificationmessagesetmessage} to give the user more
+details.
+
+
+\membersection{wxNotificationMessage::Show}\label{wxnotificationmessageshow}
+
+\func{bool}{Show}{\param{int }{timeout = Timeout\_Auto}}
+
+Show the notification to the user and hides it after timeout seconds
+pass. Special values \texttt{Timeout\_Auto} and \texttt{Timeout\_Never} can be
+used here, notice that you shouldn't rely on \arg{timeout} being exactly
+respected because the current platform may only support default timeout value
+and also because the user may be able to close the notification.
+
+Returns \false if an error occurred.
+
diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h
index 237b479b54..7ff4cb9010 100644
--- a/include/wx/chkconf.h
+++ b/include/wx/chkconf.h
@@ -741,6 +741,14 @@
 #   endif
 #endif /* !defined(wxUSE_NOTEBOOK) */
 
+#ifndef wxUSE_NOTIFICATION_MESSAGE
+#   ifdef wxABORT_ON_CONFIG_ERROR
+#       error "wxUSE_NOTIFICATION_MESSAGE must be defined."
+#   else
+#       define wxUSE_NOTIFICATION_MESSAGE 0
+#   endif
+#endif /* !defined(wxUSE_NOTIFICATION_MESSAGE) */
+
 #ifndef wxUSE_ODCOMBOBOX
 #   ifdef wxABORT_ON_CONFIG_ERROR
 #       error "wxUSE_ODCOMBOBOX must be defined."
diff --git a/include/wx/generic/notifmsg.h b/include/wx/generic/notifmsg.h
new file mode 100644
index 0000000000..e4beca030e
--- /dev/null
+++ b/include/wx/generic/notifmsg.h
@@ -0,0 +1,60 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/generic/notifmsg.h
+// Purpose:     generic implementation of wxNotificationMessage
+// Author:      Vadim Zeitlin
+// Created:     2007-11-24
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GENERIC_NOTIFMSG_H_
+#define _WX_GENERIC_NOTIFMSG_H_
+
+class wxNotificationMessageDialog;
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessage
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxNotificationMessage : public wxNotificationMessageBase
+{
+public:
+    wxNotificationMessage() { Init(); }
+    wxNotificationMessage(const wxString& title,
+                          const wxString& message = wxString(),
+                          wxWindow *parent = NULL)
+        : wxNotificationMessageBase(title, message, parent)
+    {
+        Init();
+    }
+
+    virtual ~wxNotificationMessage();
+
+
+    virtual bool Show(int timeout = Timeout_Auto);
+    virtual bool Close();
+
+    // generic implementation-specific methods
+
+    // get/set the default timeout (used if Timeout_Auto is specified)
+    static int GetDefaultTimeout() { return ms_timeout; }
+    static void SetDefaultTimeout(int timeout);
+
+private:
+    void Init();
+
+
+    // default timeout
+    static int ms_timeout;
+
+    // notification message is represented by a modeless dialog in this
+    // implementation
+    wxNotificationMessageDialog *m_dialog;
+
+
+    DECLARE_NO_COPY_CLASS(wxNotificationMessage)
+};
+
+#endif // _WX_GENERIC_NOTIFMSG_H_
+
diff --git a/include/wx/gtk/hildon/notifmsg.h b/include/wx/gtk/hildon/notifmsg.h
new file mode 100644
index 0000000000..5f3b5504f7
--- /dev/null
+++ b/include/wx/gtk/hildon/notifmsg.h
@@ -0,0 +1,59 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/gtk/hildon/notifmsg.h
+// Purpose:     Hildon implementation of wxNotificationMessage
+// Author:      Vadim Zeitlin
+// Created:     2007-11-21
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_GTK_HILDON_NOTIFMSG_H_
+#define _WX_GTK_HILDON_NOTIFMSG_H_
+
+typedef struct _HildonBanner HildonBanner;
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessage
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxNotificationMessage : public wxNotificationMessageBase
+{
+public:
+    wxNotificationMessage() { Init(); }
+    wxNotificationMessage(const wxString& title,
+                          const wxString& message = wxString(),
+                          wxWindow *parent = NULL)
+        : wxNotificationMessageBase(title, message, parent)
+    {
+        Init();
+    }
+
+    virtual ~wxNotificationMessage();
+
+
+    virtual bool Show(int timeout = Timeout_Auto);
+    virtual bool Close();
+
+private:
+    void Init() { m_banner = NULL; }
+
+    // return the string containing markup for both the title and, if
+    // specified, the message
+    wxString HildonGetMarkup() const;
+
+    // returns the widget of the parent GtkWindow to use or NULL
+    GtkWidget *HildonGetWindow() const;
+
+
+    // the banner we're showing, only non-NULL if it's an animation or progress
+    // banner as the informational dialog times out on its own and we don't
+    // need to store it (nor do we have any way to get its widget anyhow)
+    GtkWidget *m_banner;
+
+
+    DECLARE_NO_COPY_CLASS(wxNotificationMessage)
+};
+
+#endif // _WX_GTK_HILDON_NOTIFMSG_H_
+
diff --git a/include/wx/mac/setup0.h b/include/wx/mac/setup0.h
index a617ff9a49..1e5083e394 100644
--- a/include/wx/mac/setup0.h
+++ b/include/wx/mac/setup0.h
@@ -852,6 +852,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/include/wx/motif/setup0.h b/include/wx/motif/setup0.h
index 5637c68c82..b9a5c9c6b0 100644
--- a/include/wx/motif/setup0.h
+++ b/include/wx/motif/setup0.h
@@ -851,6 +851,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/include/wx/msw/setup0.h b/include/wx/msw/setup0.h
index 58b967d0d8..709b7fe5f9 100644
--- a/include/wx/msw/setup0.h
+++ b/include/wx/msw/setup0.h
@@ -851,6 +851,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/include/wx/msw/wince/setup.h b/include/wx/msw/wince/setup.h
index cefc9000ac..fb40f30a33 100644
--- a/include/wx/msw/wince/setup.h
+++ b/include/wx/msw/wince/setup.h
@@ -851,6 +851,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/include/wx/notifmsg.h b/include/wx/notifmsg.h
new file mode 100644
index 0000000000..532b258be2
--- /dev/null
+++ b/include/wx/notifmsg.h
@@ -0,0 +1,131 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/notifmsg.h
+// Purpose:     class allowing to show notification messages to the user
+// Author:      Vadim Zeitlin
+// Created:     2007-11-19
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_NOTIFMSG_H_
+#define _WX_NOTIFMSG_H_
+
+#include "wx/event.h"
+
+#if wxUSE_NOTIFICATION_MESSAGE
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessage: allows to show the user a message non intrusively
+// ----------------------------------------------------------------------------
+
+// notice that this class is not a window and so doesn't derive from wxWindow
+
+class WXDLLIMPEXP_ADV wxNotificationMessageBase : public wxEvtHandler
+{
+public:
+    // ctors and initializers
+    // ----------------------
+
+    // default ctor, use setters below to initialize it later
+    wxNotificationMessageBase() { }
+
+    // create a notification object with the given title and message (the
+    // latter may be empty in which case only the title will be shown)
+    wxNotificationMessageBase(const wxString& title,
+                              const wxString& message = wxString(),
+                              wxWindow *parent = NULL)
+        : m_title(title),
+          m_message(message),
+          m_parent(parent)
+    {
+    }
+
+    // note that the setters must be called before Show()
+
+    // set the title: short string, markup not allowed
+    void SetTitle(const wxString& title) { m_title = title; }
+
+    // set the text of the message: this is a longer string than the title and
+    // some platforms allow simple HTML-like markup in it
+    void SetMessage(const wxString& message) { m_message = message; }
+
+    // set the parent for this notification: we'll be associated with the top
+    // level parent of this window or, if this method is not called, with the
+    // main application window by default
+    void SetParent(wxWindow *parent) { m_parent = parent; }
+
+
+    // showing and hiding
+    // ------------------
+
+    // possible values for Show() timeout
+    enum
+    {
+        Timeout_Auto = -1,  // notification will be hidden automatically
+        Timeout_Never = 0   // notification will never time out
+    };
+
+    // show the notification to the user and hides it after timeout seconds
+    // pass (special values Timeout_Auto and Timeout_Never can be used)
+    //
+    // returns false if an error occurred
+    virtual bool Show(int timeout = Timeout_Auto) = 0;
+
+    // hide the notification, returns true if it was hidden or false if it
+    // couldn't be done (e.g. on some systems automatically hidden
+    // notifications can't be hidden manually)
+    virtual bool Close() = 0;
+
+protected:
+    // accessors for the derived classes
+    const wxString& GetTitle() const { return m_title; }
+    const wxString& GetMessage() const { return m_message; }
+    wxWindow *GetParent() const { return m_parent; }
+
+    // return the concatenation of title and message separated by a new line,
+    // this is suitable for simple implementation which have no support for
+    // separate title and message parts of the notification
+    wxString GetFullMessage() const
+    {
+        wxString text(m_title);
+        if ( !m_message.empty() )
+        {
+            text << "\n\n" << m_message;
+        }
+
+        return text;
+    }
+
+private:
+    wxString m_title,
+             m_message;
+
+    wxWindow *m_parent;
+
+    DECLARE_NO_COPY_CLASS(wxNotificationMessageBase)
+};
+
+#define wxUSE_GENERIC_NOTIFICATION_MESSAGE 1
+
+#if defined(__WXGTK__) && wxUSE_LIBHILDON
+    // we always use the native implementation in Hildon while the other ports
+    // will fall back to the generic one even if they have a native version too
+    #undef wxUSE_GENERIC_NOTIFICATION_MESSAGE
+    #define wxUSE_GENERIC_NOTIFICATION_MESSAGE 0
+
+    #include "wx/gtk/hildon/notifmsg.h"
+/*
+    TODO: provide support for
+        - libnotify (Gnome)
+        - Snarl (http://www.fullphat.net/, Win32)
+        - Growl (http://growl.info/, OS X)
+ */
+#else
+    #include "wx/generic/notifmsg.h"
+#endif
+
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
+#endif // _WX_NOTIFMSG_H_
+
diff --git a/include/wx/os2/setup0.h b/include/wx/os2/setup0.h
index 7de4161ad8..be39d4b4fa 100644
--- a/include/wx/os2/setup0.h
+++ b/include/wx/os2/setup0.h
@@ -851,6 +851,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/include/wx/palmos/setup0.h b/include/wx/palmos/setup0.h
index 313ba4f3bd..01ee5a4cf8 100644
--- a/include/wx/palmos/setup0.h
+++ b/include/wx/palmos/setup0.h
@@ -851,6 +851,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/include/wx/setup_inc.h b/include/wx/setup_inc.h
index 5e329cba58..07ed994071 100644
--- a/include/wx/setup_inc.h
+++ b/include/wx/setup_inc.h
@@ -847,6 +847,17 @@
 // Recommended setting: 1 (can't be disabled under MSW)
 #define wxUSE_MENUS         1
 
+// Use wxNotificationMessage.
+//
+// wxNotificationMessage allows to show non-intrusive messages to the user
+// using balloons, banners, popups or whatever is the appropriate method for
+// the current platform.
+//
+// Default is 1.
+//
+// Recommended setting: 1
+#define wxUSE_NOTIFICATION_MESSAGE 1
+
 // Use wxSashWindow class.
 //
 // Default is 1.
diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp
index ad0fff1d44..29195ad6df 100644
--- a/samples/dialogs/dialogs.cpp
+++ b/samples/dialogs/dialogs.cpp
@@ -29,6 +29,7 @@
 #include "wx/imaglist.h"
 #include "wx/minifram.h"
 #include "wx/sysopt.h"
+#include "wx/notifmsg.h"
 
 #if wxUSE_COLOURDLG
     #include "wx/colordlg.h"
@@ -219,10 +220,16 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(DIALOGS_PROPERTY_SHEET,                MyFrame::OnPropertySheet)
     EVT_MENU(DIALOGS_PROPERTY_SHEET_TOOLBOOK,       MyFrame::OnPropertySheet)
     EVT_MENU(DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK, MyFrame::OnPropertySheet)
-#endif
+#endif // USE_SETTINGS_DIALOG
 
     EVT_MENU(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG,  MyFrame::OnStandardButtonsSizerDialog)
+
     EVT_MENU(DIALOGS_REQUEST,                       MyFrame::OnRequestUserAttention)
+#if wxUSE_NOTIFICATION_MESSAGE
+    EVT_MENU(DIALOGS_NOTIFY_AUTO,                   MyFrame::OnNotifMsgAuto)
+    EVT_MENU(DIALOGS_NOTIFY_SHOW,                   MyFrame::OnNotifMsgShow)
+    EVT_MENU(DIALOGS_NOTIFY_HIDE,                   MyFrame::OnNotifMsgHide)
+#endif // wxUSE_NOTIFICATION_MESSAGE
 
     EVT_MENU(wxID_EXIT,                             MyFrame::OnExit)
 END_EVENT_TABLE()
@@ -422,9 +429,16 @@ bool MyApp::OnInit()
     menuDlg->Append(wxID_ANY, _T("&Property sheets"), sheet_menu);
 #endif // USE_SETTINGS_DIALOG
 
-    menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, _T("&Standard Buttons Sizer Dialog"));
+    wxMenu *menuNotif = new wxMenu;
+    menuNotif->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
+#if wxUSE_NOTIFICATION_MESSAGE
+    menuNotif->Append(DIALOGS_NOTIFY_AUTO, "&Automatically hidden notification");
+    menuNotif->Append(DIALOGS_NOTIFY_SHOW, "&Show manual notification");
+    menuNotif->Append(DIALOGS_NOTIFY_HIDE, "&Hide manual notification");
+#endif // wxUSE_NOTIFICATION_MESSAGE
+    menuDlg->AppendSubMenu(menuNotif, "&User notifications");
 
-    menuDlg->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
+    menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, _T("&Standard Buttons Sizer Dialog"));
 
     menuDlg->AppendSeparator();
     menuDlg->Append(wxID_EXIT, _T("E&xit\tAlt-X"));
@@ -483,11 +497,22 @@ MyFrame::MyFrame(wxWindow *parent,
     }
 #endif // wxUSE_COLOURDLG
 
+#if wxUSE_NOTIFICATION_MESSAGE
+    m_notifMsg = NULL;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
 #if wxUSE_STATUSBAR
     CreateStatusBar();
 #endif // wxUSE_STATUSBAR
 }
 
+MyFrame::~MyFrame()
+{
+#if wxUSE_NOTIFICATION_MESSAGE
+    delete m_notifMsg;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+}
+
 #if wxUSE_COLOURDLG
 
 void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event))
@@ -1147,6 +1172,50 @@ void MyFrame::OnRequestUserAttention(wxCommandEvent& WXUNUSED(event))
     RequestUserAttention(wxUSER_ATTENTION_ERROR);
 }
 
+#if wxUSE_NOTIFICATION_MESSAGE
+
+void MyFrame::OnNotifMsgAuto(wxCommandEvent& WXUNUSED(event))
+{
+    if ( !wxNotificationMessage
+          (
+            "Automatic Notification",
+            "Nothing important has happened\n"
+            "this notification will disappear soon."
+          ).Show() )
+    {
+        wxLogStatus("Failed to show notification message");
+    }
+}
+
+void MyFrame::OnNotifMsgShow(wxCommandEvent& WXUNUSED(event))
+{
+    if ( !m_notifMsg )
+    {
+        m_notifMsg = new wxNotificationMessage
+                         (
+                            "wxWidgets Manual Notification",
+                            "You can hide this notification from the menu",
+                            this
+                         );
+    }
+
+    if ( !m_notifMsg->Show(wxNotificationMessage::Timeout_Never) )
+    {
+        wxLogStatus("Failed to show manual notification message");
+    }
+}
+
+void MyFrame::OnNotifMsgHide(wxCommandEvent& WXUNUSED(event))
+{
+    if ( m_notifMsg )
+    {
+        if ( !m_notifMsg->Close() )
+            wxLogStatus("Failed to hide manual notification message");
+    }
+}
+
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
 void MyFrame::OnStandardButtonsSizerDialog(wxCommandEvent& WXUNUSED(event))
 {
     StdButtonSizerDialog  dialog(this);
diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h
index 9e46371a4e..659e9c4e79 100644
--- a/samples/dialogs/dialogs.h
+++ b/samples/dialogs/dialogs.h
@@ -206,6 +206,7 @@ class MyFrame: public wxFrame
 {
 public:
     MyFrame(wxWindow *parent, const wxString& title);
+    virtual ~MyFrame();
 
 #if wxUSE_MSGDLG
     void MessageBox(wxCommandEvent& event);
@@ -304,7 +305,14 @@ public:
 #endif // USE_FONTDLG_GENERIC
 
     void OnPropertySheet(wxCommandEvent& event);
+
     void OnRequestUserAttention(wxCommandEvent& event);
+#if wxUSE_NOTIFICATION_MESSAGE
+    void OnNotifMsgAuto(wxCommandEvent& event);
+    void OnNotifMsgShow(wxCommandEvent& event);
+    void OnNotifMsgHide(wxCommandEvent& event);
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
     void OnStandardButtonsSizerDialog(wxCommandEvent& event);
     void OnExit(wxCommandEvent& event);
 
@@ -324,6 +332,10 @@ private:
                         *m_dlgReplace;
 #endif // wxUSE_FINDREPLDLG
 
+#if wxUSE_NOTIFICATION_MESSAGE
+    wxNotificationMessage *m_notifMsg;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
     wxColourData m_clrData;
 
     DECLARE_EVENT_TABLE()
@@ -384,6 +396,9 @@ enum
     DIALOGS_FIND,
     DIALOGS_REPLACE,
     DIALOGS_REQUEST,
+    DIALOGS_NOTIFY_AUTO,
+    DIALOGS_NOTIFY_SHOW,
+    DIALOGS_NOTIFY_HIDE,
     DIALOGS_PROPERTY_SHEET,
     DIALOGS_PROPERTY_SHEET_TOOLBOOK,
     DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
diff --git a/setup.h.in b/setup.h.in
index 585313f3e0..62e68e9d92 100644
--- a/setup.h.in
+++ b/setup.h.in
@@ -399,6 +399,8 @@
 
 #define wxUSE_MENUS         0
 
+#define wxUSE_NOTIFICATION_MESSAGE 0
+
 #define wxUSE_SASH          0
 
 #define wxUSE_SPLITTER      0
diff --git a/src/generic/notifmsgg.cpp b/src/generic/notifmsgg.cpp
new file mode 100644
index 0000000000..2f95e1ca76
--- /dev/null
+++ b/src/generic/notifmsgg.cpp
@@ -0,0 +1,211 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/generic/notifmsgg.cpp
+// Purpose:     generic implementation of wxNotificationMessage
+// Author:      Vadim Zeitlin
+// Created:     2007-11-24
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+// include this before the test below, wxUSE_GENERIC_NOTIFICATION_MESSAGE is
+// defined in this header
+#include "wx/notifmsg.h"
+
+#if wxUSE_GENERIC_NOTIFICATION_MESSAGE
+
+#ifndef WX_PRECOMP
+    #include "wx/dialog.h"
+    #include "wx/timer.h"
+#endif //WX_PRECOMP
+
+// ----------------------------------------------------------------------------
+// wxNotificationMessageDialog
+// ----------------------------------------------------------------------------
+
+class wxNotificationMessageDialog : public wxDialog
+{
+public:
+    wxNotificationMessageDialog(wxWindow *parent,
+                                const wxString& text,
+                                int timeout);
+
+    void Set(wxWindow *parent,
+             const wxString& text,
+             int timeout);
+
+    bool IsAutomatic() const { return m_timer.IsRunning(); }
+    void SetDeleteOnHide() { m_deleteOnHide = true; }
+
+private:
+    void OnClose(wxCloseEvent& event);
+    void OnTimer(wxTimerEvent& event);
+
+    // if true, delete the dialog when it should disappear, otherwise just hide
+    // it (initially false)
+    bool m_deleteOnHide;
+
+    // timer which will hide this dialog when it expires, if it's not running
+    // it means we were created without timeout
+    wxTimer m_timer;
+
+
+    DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxNotificationMessageDialog)
+};
+
+// ============================================================================
+// wxNotificationMessageDialog implementation
+// ============================================================================
+
+BEGIN_EVENT_TABLE(wxNotificationMessageDialog, wxDialog)
+    EVT_CLOSE(wxNotificationMessageDialog::OnClose)
+
+    EVT_TIMER(wxID_ANY, wxNotificationMessageDialog::OnTimer)
+END_EVENT_TABLE()
+
+wxNotificationMessageDialog::wxNotificationMessageDialog(wxWindow *parent,
+                                                         const wxString& text,
+                                                         int timeout)
+                           : wxDialog(parent, wxID_ANY, _("Notice"),
+                                      wxDefaultPosition, wxDefaultSize,
+                                      0 /* no caption, no border styles */),
+                             m_timer(this)
+{
+    m_deleteOnHide = false;
+
+    Set(parent, text, timeout);
+}
+
+void
+wxNotificationMessageDialog::Set(wxWindow * WXUNUSED(parent),
+                                 const wxString& text,
+                                 int timeout)
+{
+    wxSizer *sizer = CreateTextSizer(text);
+    SetSizerAndFit(sizer);
+
+    if ( timeout != wxNotificationMessage::Timeout_Never )
+    {
+        // wxTimer uses ms, timeout is in seconds
+        m_timer.Start(timeout*1000, true /* one shot only */);
+    }
+    else if ( m_timer.IsRunning() )
+    {
+        m_timer.Stop();
+    }
+}
+
+void wxNotificationMessageDialog::OnClose(wxCloseEvent& event)
+{
+    if ( m_deleteOnHide )
+    {
+        // we don't need to keep this dialog alive any more
+        Destroy();
+    }
+    else // don't really close, just hide, as we can be shown again later
+    {
+        event.Veto();
+
+        Hide();
+    }
+}
+
+void wxNotificationMessageDialog::OnTimer(wxTimerEvent& WXUNUSED(event))
+{
+    if ( m_deleteOnHide )
+        Destroy();
+    else
+        Hide();
+}
+
+// ============================================================================
+// wxNotificationMessage implementation
+// ============================================================================
+
+int wxNotificationMessage::ms_timeout = 10;
+
+/* static */ void wxNotificationMessage::SetDefaultTimeout(int timeout)
+{
+    wxASSERT_MSG( timeout > 0,
+                "negative or zero default timeout doesn't make sense" );
+
+    ms_timeout = timeout;
+}
+
+void wxNotificationMessage::Init()
+{
+    m_dialog = NULL;
+}
+
+wxNotificationMessage::~wxNotificationMessage()
+{
+    if ( m_dialog->IsAutomatic() )
+    {
+        // we want to allow the user to create an automatically hidden
+        // notification just by creating a local wxNotificationMessage object
+        // and so we shouldn't hide the notification when this object goes out
+        // of scope
+        m_dialog->SetDeleteOnHide();
+    }
+    else // manual dialog, hide it immediately
+    {
+        // OTOH for permanently shown dialogs only the code can hide them and
+        // if the object is deleted, we must do it now as it won't be
+        // accessible programmatically any more
+        delete m_dialog;
+    }
+}
+
+bool wxNotificationMessage::Show(int timeout)
+{
+    if ( timeout == Timeout_Auto )
+    {
+        timeout = GetDefaultTimeout();
+    }
+
+    if ( !m_dialog )
+    {
+        m_dialog = new wxNotificationMessageDialog
+                       (
+                        GetParent(),
+                        GetFullMessage(),
+                        timeout
+                       );
+    }
+    else // update the existing dialog
+    {
+        m_dialog->Set(GetParent(), GetFullMessage(), timeout);
+    }
+
+    m_dialog->Show();
+
+    return true;
+}
+
+bool wxNotificationMessage::Close()
+{
+    if ( !m_dialog )
+        return false;
+
+    m_dialog->Hide();
+
+    return true;
+}
+
+#endif // wxUSE_GENERIC_NOTIFICATION_MESSAGE
diff --git a/src/gtk/hildon/notifmsg.cpp b/src/gtk/hildon/notifmsg.cpp
new file mode 100644
index 0000000000..3cad17868e
--- /dev/null
+++ b/src/gtk/hildon/notifmsg.cpp
@@ -0,0 +1,126 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        gtk/hildon/notifmsg.cpp
+// Purpose:     Hildon implementation of wxNotificationMessage
+// Author:      Vadim Zeitlin
+// Created:     2007-11-21
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#if wxUSE_LIBHILDON
+
+#ifndef WX_PRECOMP
+#endif //WX_PRECOMP
+
+#include "wx/notifmsg.h"
+#include "wx/toplevel.h"
+
+#include <hildon-widgets/hildon-banner.h>
+
+// ============================================================================
+// wxNotificationMessage implementation
+// ============================================================================
+
+wxString wxNotificationMessage::HildonGetMarkup() const
+{
+    const wxString& message = GetMessage(),
+                    title = GetTitle();
+
+    wxString text;
+    if ( message.empty() )
+    {
+        text = title;
+    }
+    else // combine title with message in a single string
+    {
+        text << "<big><b>" << title << "</b></big>\n"
+                "\n"
+             << message;
+    }
+
+    return text;
+}
+
+GtkWidget *wxNotificationMessage::HildonGetWindow() const
+{
+    wxWindow *parent = GetParent();
+    if ( parent )
+    {
+        parent = wxGetTopLevelParent(parent);
+        if ( parent )
+        {
+            wxTopLevelWindow * const
+                tlw = wxDynamicCast(parent, wxTopLevelWindow);
+            if ( tlw )
+                return tlw->m_mainWidget;
+        }
+    }
+
+    return NULL;
+}
+
+bool wxNotificationMessage::Show(int timeout)
+{
+    if ( timeout == Timeout_Never )
+    {
+        m_banner = hildon_banner_show_animation
+                   (
+                    HildonGetWindow(),
+                    NULL,
+                    GetFullMessage() // markup not supported here
+                   );
+        if ( !m_banner )
+            return false;
+    }
+    else // the message will time out
+    {
+        // we don't have any way to set the timeout interval so we just let it
+        // time out automatically
+        hildon_banner_show_information_with_markup
+        (
+            HildonGetWindow(),
+            NULL,
+            HildonGetMarkup()
+        );
+    }
+
+    return true;
+}
+
+bool wxNotificationMessage::Close()
+{
+    if ( !m_banner )
+    {
+        // either we hadn't been shown or we are using an information banner
+        // which will disappear on its own, nothing we can do about it
+        return false;
+    }
+
+    gtk_widget_destroy(m_banner);
+    m_banner = NULL;
+
+    return true;
+}
+
+wxNotificationMessage::~wxNotificationMessage()
+{
+    Close();
+}
+
+#endif // wxUSE_LIBHILDON
-- 
2.50.0

