Index: kaccelprivate.h
===================================================================
--- kaccelprivate.h	(revision 480303)
+++ kaccelprivate.h	(working copy)
@@ -38,7 +38,9 @@
 	void menuItemActivated(KAccelAction*);
 
  private:
+#ifndef Q_WS_WIN /** @todo TEMP: new implementation (commit #424926) didn't work */
 	void emitActivatedSignal(KAccelAction*);
+#endif
 
  private slots:
 	void slotKeyPressed( int id );
Index: kaccel.cpp
===================================================================
--- kaccel.cpp	(revision 480349)
+++ kaccel.cpp	(working copy)
@@ -234,7 +234,11 @@
 	m_mapIDToKey[nID] = keyQt;
 
 	if( action.objSlotPtr() && action.methodSlotPtr() ) {
+#ifdef Q_WS_WIN /** @todo TEMP: new implementation (commit #424926) didn't work */
+		((QAccel*)m_pAccel)->connectItem( nID, action.objSlotPtr(), action.methodSlotPtr() );
+#else
 		((QAccel*)m_pAccel)->connectItem( nID, this, SLOT(slotKeyPressed(int)));
+#endif
 		if( !action.isEnabled() )
 			((QAccel*)m_pAccel)->setItemEnabled( nID, false );
 	}
@@ -327,7 +331,15 @@
 {
 	kdDebug(125) << "KAccelPrivate::slotMenuActivated( " << iAction << " )" << endl;
 	KAccelAction* pAction = actions().actionPtr( iAction );
-        emitActivatedSignal( pAction );
+#ifdef Q_WS_WIN /** @todo TEMP: new implementation (commit #424926) didn't work */
+	if( pAction ) {
+		connect( this, SIGNAL(menuItemActivated()), pAction->objSlotPtr(), pAction->methodSlotPtr() );
+		emit menuItemActivated();
+		disconnect( this, SIGNAL(menuItemActivated()), pAction->objSlotPtr(), pAction->methodSlotPtr() );
+	}
+#else
+	emitActivatedSignal( pAction );
+#endif
 }
 
 bool KAccelPrivate::eventFilter( QObject* /*pWatched*/, QEvent* pEvent )
@@ -347,7 +359,16 @@
 					KAccelAction* pAction = m_mapIDToAction[nID];
 					if( !pAction->isEnabled() )
 						continue;
+#ifdef Q_WS_WIN /** @todo TEMP: new implementation (commit #424926) didn't work */
+					QGuardedPtr<KAccelPrivate> me = this;
+					connect( this, SIGNAL(menuItemActivated()), pAction->objSlotPtr(), pAction->methodSlotPtr() );
+					emit menuItemActivated();
+					if (me) {
+						disconnect( me, SIGNAL(menuItemActivated()), pAction->objSlotPtr(), pAction->methodSlotPtr() );
+					}
+#else
 					emitActivatedSignal( pAction );
+#endif
 				} else
 					slotKeyPressed( nID );
 
@@ -360,6 +381,7 @@
 	return false;
 }
 
+#ifndef Q_WS_WIN /** @todo TEMP: new implementation (commit #424926) didn't work */
 void KAccelPrivate::emitActivatedSignal( KAccelAction* pAction )
 {
 	if( pAction ) {
@@ -383,8 +405,8 @@
 		}
 	}
 }
+#endif
 
-
 //---------------------------------------------------------------------
 // KAccel
 //---------------------------------------------------------------------
