I hope dnd won't crash anymore and I didn't
break too much else. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@8053 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -186,8 +186,14 @@ void wxapp_install_idle_handler()
|
|||||||
|
|
||||||
#if wxUSE_THREADS
|
#if wxUSE_THREADS
|
||||||
|
|
||||||
|
static int g_threadUninstallLevel = 0;
|
||||||
|
|
||||||
void wxapp_install_thread_wakeup()
|
void wxapp_install_thread_wakeup()
|
||||||
{
|
{
|
||||||
|
g_threadUninstallLevel++;
|
||||||
|
|
||||||
|
if (g_threadUninstallLevel != 1) return;
|
||||||
|
|
||||||
if (wxTheApp->m_wakeUpTimerTag) return;
|
if (wxTheApp->m_wakeUpTimerTag) return;
|
||||||
|
|
||||||
wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 50, wxapp_wakeup_timerout_callback, (gpointer) NULL );
|
wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 50, wxapp_wakeup_timerout_callback, (gpointer) NULL );
|
||||||
@@ -195,6 +201,10 @@ void wxapp_install_thread_wakeup()
|
|||||||
|
|
||||||
void wxapp_uninstall_thread_wakeup()
|
void wxapp_uninstall_thread_wakeup()
|
||||||
{
|
{
|
||||||
|
g_threadUninstallLevel--;
|
||||||
|
|
||||||
|
if (g_threadUninstallLevel != 0) return;
|
||||||
|
|
||||||
if (!wxTheApp->m_wakeUpTimerTag) return;
|
if (!wxTheApp->m_wakeUpTimerTag) return;
|
||||||
|
|
||||||
gtk_timeout_remove( wxTheApp->m_wakeUpTimerTag );
|
gtk_timeout_remove( wxTheApp->m_wakeUpTimerTag );
|
||||||
|
@@ -226,6 +226,11 @@ static gboolean target_drag_drop( GtkWidget *widget,
|
|||||||
if (context->suggested_action == GDK_ACTION_COPY) result = wxDragCopy;
|
if (context->suggested_action == GDK_ACTION_COPY) result = wxDragCopy;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* reset the block here as someone might very well
|
||||||
|
show a dialog as a reaction to a drop and this
|
||||||
|
wouldn't work without events */
|
||||||
|
g_blockEventsOnDrag = FALSE;
|
||||||
|
|
||||||
bool ret = drop_target->OnDrop( x, y );
|
bool ret = drop_target->OnDrop( x, y );
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
@@ -736,8 +741,12 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
|
|||||||
if (m_data->GetFormatCount() == 0)
|
if (m_data->GetFormatCount() == 0)
|
||||||
return (wxDragResult) wxDragNone;
|
return (wxDragResult) wxDragNone;
|
||||||
|
|
||||||
|
// still in drag
|
||||||
|
if (g_blockEventsOnDrag)
|
||||||
|
return (wxDragResult) wxDragNone;
|
||||||
|
|
||||||
// disabled for now
|
// disabled for now
|
||||||
g_blockEventsOnDrag = FALSE;
|
g_blockEventsOnDrag = TRUE;
|
||||||
|
|
||||||
RegisterWindow();
|
RegisterWindow();
|
||||||
|
|
||||||
|
@@ -186,8 +186,14 @@ void wxapp_install_idle_handler()
|
|||||||
|
|
||||||
#if wxUSE_THREADS
|
#if wxUSE_THREADS
|
||||||
|
|
||||||
|
static int g_threadUninstallLevel = 0;
|
||||||
|
|
||||||
void wxapp_install_thread_wakeup()
|
void wxapp_install_thread_wakeup()
|
||||||
{
|
{
|
||||||
|
g_threadUninstallLevel++;
|
||||||
|
|
||||||
|
if (g_threadUninstallLevel != 1) return;
|
||||||
|
|
||||||
if (wxTheApp->m_wakeUpTimerTag) return;
|
if (wxTheApp->m_wakeUpTimerTag) return;
|
||||||
|
|
||||||
wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 50, wxapp_wakeup_timerout_callback, (gpointer) NULL );
|
wxTheApp->m_wakeUpTimerTag = gtk_timeout_add( 50, wxapp_wakeup_timerout_callback, (gpointer) NULL );
|
||||||
@@ -195,6 +201,10 @@ void wxapp_install_thread_wakeup()
|
|||||||
|
|
||||||
void wxapp_uninstall_thread_wakeup()
|
void wxapp_uninstall_thread_wakeup()
|
||||||
{
|
{
|
||||||
|
g_threadUninstallLevel--;
|
||||||
|
|
||||||
|
if (g_threadUninstallLevel != 0) return;
|
||||||
|
|
||||||
if (!wxTheApp->m_wakeUpTimerTag) return;
|
if (!wxTheApp->m_wakeUpTimerTag) return;
|
||||||
|
|
||||||
gtk_timeout_remove( wxTheApp->m_wakeUpTimerTag );
|
gtk_timeout_remove( wxTheApp->m_wakeUpTimerTag );
|
||||||
|
@@ -226,6 +226,11 @@ static gboolean target_drag_drop( GtkWidget *widget,
|
|||||||
if (context->suggested_action == GDK_ACTION_COPY) result = wxDragCopy;
|
if (context->suggested_action == GDK_ACTION_COPY) result = wxDragCopy;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* reset the block here as someone might very well
|
||||||
|
show a dialog as a reaction to a drop and this
|
||||||
|
wouldn't work without events */
|
||||||
|
g_blockEventsOnDrag = FALSE;
|
||||||
|
|
||||||
bool ret = drop_target->OnDrop( x, y );
|
bool ret = drop_target->OnDrop( x, y );
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
@@ -736,8 +741,12 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
|
|||||||
if (m_data->GetFormatCount() == 0)
|
if (m_data->GetFormatCount() == 0)
|
||||||
return (wxDragResult) wxDragNone;
|
return (wxDragResult) wxDragNone;
|
||||||
|
|
||||||
|
// still in drag
|
||||||
|
if (g_blockEventsOnDrag)
|
||||||
|
return (wxDragResult) wxDragNone;
|
||||||
|
|
||||||
// disabled for now
|
// disabled for now
|
||||||
g_blockEventsOnDrag = FALSE;
|
g_blockEventsOnDrag = TRUE;
|
||||||
|
|
||||||
RegisterWindow();
|
RegisterWindow();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user