track_motion = gtk_drop_target_get_track_motion (dest);
armed = gtk_drop_target_get_armed (dest);
- if ((flags & GTK_DEST_DEFAULT_HIGHLIGHT) && armed)
- gtk_drag_unhighlight (widget);
-
if (!(flags & GTK_DEST_DEFAULT_MOTION) || armed || track_motion)
gtk_drop_target_emit_drag_leave (dest, drop, time);
if (actions && target)
{
- if (!gtk_drop_target_get_armed (dest))
- {
- gtk_drop_target_set_armed (dest, TRUE);
- if (flags & GTK_DEST_DEFAULT_HIGHLIGHT)
- gtk_drag_highlight (widget);
- }
-
+ gtk_drop_target_set_armed (dest, TRUE);
gdk_drop_status (drop, dest_actions);
}
else
PROP_ACTIONS,
PROP_DEFAULTS,
PROP_TRACK_MOTION,
+ PROP_ARMED,
NUM_PROPERTIES
};
g_value_set_boolean (value, gtk_drop_target_get_track_motion (dest));
break;
+ case PROP_ARMED:
+ g_value_set_boolean (value, gtk_drop_target_get_armed (dest));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+ /**
+ * GtkDropTarget:armmed:
+ *
+ * Whether the drop target is currently the targed of an ongoing drag operation,
+ * and highlighted.
+ */
+ properties[PROP_ARMED] =
+ g_param_spec_boolean ("armed", P_("Armed"), P_("Armed"),
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
/**
gtk_drop_target_set_armed (GtkDropTarget *target,
gboolean armed)
{
+ if (target->armed == armed)
+ return;
+
target->armed = armed;
+
+ if (target->widget)
+ {
+ if (armed)
+ gtk_drag_highlight (target->widget);
+ else
+ gtk_drag_unhighlight (target->widget);
+ }
+
+ g_object_notify_by_pspec (G_OBJECT (target), properties[PROP_ARMED]);
}
gboolean
* widget will check if the drag matches this widget’s list of possible formats
* and actions.
* GTK+ will then call gdk_drag_status() as appropriate.
- * @GTK_DEST_DEFAULT_HIGHLIGHT: If set for a widget, GTK+ will draw a highlight on
- * this widget as long as a drag is over this widget and the widget drag format
- * and action are acceptable.
+ * @GTK_DEST_DEFAULT_HIGHLIGHT: Does not do anything now. GTK always adds
+ * the dnd style class to armed drop sites.
* @GTK_DEST_DEFAULT_DROP: Does not do anything now.
* @GTK_DEST_DEFAULT_ALL: If set, specifies that all default actions should
* be taken.