Starting with gtk 2.10.7, drags are canceled when the toolkit-private drag
widget is grab-shadowed by another gtk_grab_add call in the application. This is a
necessary fix to avoid "stuck drag" situations when a modal dialog pops up
while a drag is in progress.

Unfortunately, the mozilla dnd implementation does just that - it calls
gtk_grab_add in the nsDragService::GetTargetDragData method. This causes
drags of mesages from the message list to the folder tree in thunderbird
to fail with gtk 2.10.7.

Fortunately, the gtk_grab_add in nsDragService::GetTargetDragData doesn't
seem to have any real purpose - at least the nsDragService code doesn't
make any use of the grabbing, and just removing the grab_add/grab_remove
calls in that function makes dnd work again in thunderbird.

Patch by Matthias Clasen <mclasen@redhat.com>
r=caillon@redhat.com
sr=roc@ocallahan.org
This commit is contained in:
caillon%redhat.com 2007-01-19 14:59:46 +00:00
Родитель 4e8a6898a5
Коммит 281df32ee0
1 изменённых файлов: 0 добавлений и 2 удалений

Просмотреть файл

@ -799,7 +799,6 @@ nsDragService::IsTargetContextList(void)
void
nsDragService::GetTargetDragData(GdkAtom aFlavor)
{
gtk_grab_add(mHiddenWidget);
PR_LOG(sDragLm, PR_LOG_DEBUG, ("getting data flavor %d\n", aFlavor));
PR_LOG(sDragLm, PR_LOG_DEBUG, ("mLastWidget is %p and mLastContext is %p\n",
mTargetWidget, mTargetDragContext));
@ -817,7 +816,6 @@ nsDragService::GetTargetDragData(GdkAtom aFlavor)
gtk_main_iteration();
}
PR_LOG(sDragLm, PR_LOG_DEBUG, ("finished inner iteration\n"));
gtk_grab_remove(mHiddenWidget);
}
void