static gint
gtk_dnd_window_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxDropSource *source )
{
- if (g_isIdle)
- wxapp_install_idle_handler();
+ // don't need to install idle handler, its done from "event" signal
source->GiveFeedback( ConvertFromGTK(source->m_dragContext->action) );
UnregisterWindow();
+ // this shouldn't be needed but somehow, sometimes, without this the cursor
+ // stays grabbed even when the DND operation ends and the application
+ // becomes unresponsive and has to be killed resulting in loss of all
+ // unsaved data, so while this fix is ugly it's still better than
+ // alternative
+ if ( gdk_pointer_is_grabbed() )
+ gdk_pointer_ungrab(GDK_CURRENT_TIME);
+
return m_retValue;
}