diff --git a/.cvsignore b/.cvsignore
index dec6629..4f08118 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-wxGTK-2.8.7.tar.bz2
+wxGTK-2.8.8.tar.bz2
diff --git a/sources b/sources
index 2fefdad..e58b7bc 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b25e85eeee524903214ebb520753f4bd  wxGTK-2.8.7.tar.bz2
+6c73103878bd2a44b42a7b5fbb4c5605  wxGTK-2.8.8.tar.bz2
diff --git a/wxGTK-2.8.7-race-fix.patch b/wxGTK-2.8.7-race-fix.patch
deleted file mode 100644
index c58f395..0000000
--- a/wxGTK-2.8.7-race-fix.patch
+++ /dev/null
@@ -1,109 +0,0 @@
---- wxWidgets/src/gtk/app.cpp	2008/03/13 02:56:21	52464
-+++ wxWidgets/src/gtk/app.cpp	2008/03/13 04:37:03	52465
-@@ -174,59 +174,63 @@
-     if (!wxTheApp)
-         return false;
- 
--    bool moreIdles = false;
--
-+    guint idleID_save;
-+    {
-+        // Allow another idle source to be added while this one is busy.
-+        // Needed if an idle event handler runs a new event loop,
-+        // for example by showing a dialog.
-+#if wxUSE_THREADS
-+        wxMutexLocker lock(gs_idleTagsMutex);
-+#endif
-+        idleID_save = wxTheApp->m_idleTag;
-+        wxTheApp->m_idleTag = 0;
-+        g_isIdle = true;
-+        wxAddEmissionHook();
-+    }
- #ifdef __WXDEBUG__
-     // don't generate the idle events while the assert modal dialog is shown,
-     // this matches the behavior of wxMSW
--    if (!wxTheApp->IsInAssert())
-+    if (wxTheApp->IsInAssert())
-+        return false;
- #endif // __WXDEBUG__
--    {
--        guint idleID_save;
--        {
--            // Allow another idle source to be added while this one is busy.
--            // Needed if an idle event handler runs a new event loop,
--            // for example by showing a dialog.
--#if wxUSE_THREADS
--            wxMutexLocker lock(gs_idleTagsMutex);
--#endif
--            idleID_save = wxTheApp->m_idleTag;
--            wxTheApp->m_idleTag = 0;
--            g_isIdle = true;
--            wxAddEmissionHook();
--        }
- 
--        // When getting called from GDK's time-out handler
--        // we are no longer within GDK's grab on the GUI
--        // thread so we must lock it here ourselves.
--        gdk_threads_enter();
--
--        // Send idle event to all who request them as long as
--        // no events have popped up in the event queue.
--        do {
--            moreIdles = wxTheApp->ProcessIdle();
--        } while (moreIdles && gtk_events_pending() == 0);
-+    // When getting called from GDK's time-out handler
-+    // we are no longer within GDK's grab on the GUI
-+    // thread so we must lock it here ourselves.
-+    gdk_threads_enter();
- 
--        // Release lock again
--        gdk_threads_leave();
--        
--        {
--            // If another idle source was added, remove it
-+    // Send idle event to all who request them as long as
-+    // no events have popped up in the event queue.
-+    bool moreIdles;
-+    do {
-+        moreIdles = wxTheApp->ProcessIdle();
-+    } while (moreIdles && gtk_events_pending() == 0);
-+
-+    // Release lock again
-+    gdk_threads_leave();
-+    
- #if wxUSE_THREADS
--            wxMutexLocker lock(gs_idleTagsMutex);
-+    wxMutexLocker lock(gs_idleTagsMutex);
- #endif
--            if (wxTheApp->m_idleTag != 0)
--                g_source_remove(wxTheApp->m_idleTag);
--            wxTheApp->m_idleTag = idleID_save;
--            g_isIdle = false;
--        }
--    }
-+    // If another idle source was added, remove it
-+    if (wxTheApp->m_idleTag != 0)
-+        g_source_remove(wxTheApp->m_idleTag);
-+    wxTheApp->m_idleTag = idleID_save;
-+    g_isIdle = false;
- 
--    if (!moreIdles)
--    {
- #if wxUSE_THREADS
--        wxMutexLocker lock(gs_idleTagsMutex);
-+    if (wxPendingEventsLocker)
-+        wxPendingEventsLocker->Enter();
- #endif
-+    // Pending events can be added asynchronously,
-+    // need to keep idle source if any have appeared
-+    moreIdles = moreIdles || (wxPendingEvents && !wxPendingEvents->IsEmpty());
-+#if wxUSE_THREADS
-+    if (wxPendingEventsLocker)
-+        wxPendingEventsLocker->Leave();
-+#endif
-+    if (!moreIdles)
-+    {
-         // Indicate that we are now in idle mode and event handlers
-         // will have to reinstall the idle handler again.
-         g_isIdle = true;
-
diff --git a/wxGTK.spec b/wxGTK.spec
index ea0f545..a9b1aba 100644
--- a/wxGTK.spec
+++ b/wxGTK.spec
@@ -5,8 +5,8 @@
 %define withodbc 0
 
 Name:           wxGTK
-Version:        2.8.7
-Release:        2%{?dist}
+Version:        2.8.8
+Release:        1%{?dist}
 Summary:        GTK2 port of the wxWidgets GUI library
 # The wxWindows licence is the LGPL with a specific exemption allowing
 # distribution of derived binaries under any terms. (This will eventually
@@ -15,7 +15,6 @@ License:        wxWidgets Library Licence
 Group:          System Environment/Libraries
 URL:            http://www.wxwidgets.org/
 Source0:        http://dl.sf.net/wxwindows/%{name}-%{version}.tar.bz2
-Patch0:         wxGTK-2.8.7-race-fix.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -122,7 +121,6 @@ libraries or the X Window System.
 
 %prep
 %setup -q
-%patch0 -p1 -b .racefix
 
 sed -i -e 's|/usr/lib\b|%{_libdir}|' wx-config.in configure
 
@@ -264,6 +262,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Thu Jul 31 2008 Dan Horak <dan[at]danny.cz> - 2.8.8-1
+- update to 2.8.8 (rh bug #457406)
+
 * Tue Apr  1 2008 Dan Horak <dan[at]danny.cz> - 2.8.7-2
 - added fix for a race condition (rh bug #440011)