mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
quartz: Implement NO_TARGET drag result
This is necessary to make notebook tab DND work. https://bugzilla.gnome.org/show_bug.cgi?id=752638
This commit is contained in:
parent
6d04183c5d
commit
6ac07a2e85
@ -2054,14 +2054,23 @@ gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
|
|||||||
static gboolean
|
static gboolean
|
||||||
drag_drop_finished_idle_cb (gpointer data)
|
drag_drop_finished_idle_cb (gpointer data)
|
||||||
{
|
{
|
||||||
|
GtkDragSourceInfo* info = (GtkDragSourceInfo*) data;
|
||||||
|
if (info->success)
|
||||||
gtk_drag_source_info_destroy (data);
|
gtk_drag_source_info_destroy (data);
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_drag_drop_finished (GtkDragSourceInfo *info)
|
gtk_drag_drop_finished (GtkDragSourceInfo *info,
|
||||||
|
GtkDragResult result)
|
||||||
{
|
{
|
||||||
if (info->success && info->delete)
|
gboolean success = (result == GTK_DRAG_RESULT_SUCCESS);
|
||||||
|
|
||||||
|
if (!success)
|
||||||
|
g_signal_emit_by_name (info->source_widget, "drag-failed",
|
||||||
|
info->context, GTK_DRAG_RESULT_NO_TARGET, &success);
|
||||||
|
|
||||||
|
if (success && info->delete)
|
||||||
g_signal_emit_by_name (info->source_widget, "drag-data-delete",
|
g_signal_emit_by_name (info->source_widget, "drag-data-delete",
|
||||||
info->context);
|
info->context);
|
||||||
|
|
||||||
@ -2089,6 +2098,7 @@ _gtk_drag_source_handle_event (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkDragSourceInfo *info;
|
GtkDragSourceInfo *info;
|
||||||
GdkDragContext *context;
|
GdkDragContext *context;
|
||||||
|
GtkDragResult result;
|
||||||
|
|
||||||
g_return_if_fail (widget != NULL);
|
g_return_if_fail (widget != NULL);
|
||||||
g_return_if_fail (event != NULL);
|
g_return_if_fail (event != NULL);
|
||||||
@ -2101,7 +2111,8 @@ _gtk_drag_source_handle_event (GtkWidget *widget,
|
|||||||
switch (event->type)
|
switch (event->type)
|
||||||
{
|
{
|
||||||
case GDK_DROP_FINISHED:
|
case GDK_DROP_FINISHED:
|
||||||
gtk_drag_drop_finished (info);
|
result = (gdk_drag_context_get_dest_window (context) != NULL) ? GTK_DRAG_RESULT_SUCCESS : GTK_DRAG_RESULT_NO_TARGET;
|
||||||
|
gtk_drag_drop_finished (info, result);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
|
Loading…
Reference in New Issue
Block a user