void nautilus_drag_slot_proxy_init (GtkWidget *widget, NautilusFile *target_file, NautilusWindowSlot *target_slot) { NautilusDragSlotProxyInfo *drag_info; const GtkTargetEntry targets[] = { { NAUTILUS_ICON_DND_GNOME_ICON_LIST_TYPE, 0, NAUTILUS_ICON_DND_GNOME_ICON_LIST }, { NAUTILUS_ICON_DND_NETSCAPE_URL_TYPE, 0, NAUTILUS_ICON_DND_NETSCAPE_URL }, { NAUTILUS_ICON_DND_XDNDDIRECTSAVE_TYPE, 0, NAUTILUS_ICON_DND_XDNDDIRECTSAVE }, /* XDS Protocol Type */ { NAUTILUS_ICON_DND_RAW_TYPE, 0, NAUTILUS_ICON_DND_RAW } }; GtkTargetList *target_list; g_assert (GTK_IS_WIDGET (widget)); drag_info = g_slice_new0 (NautilusDragSlotProxyInfo); g_object_set_data_full (G_OBJECT (widget), "drag-slot-proxy-data", drag_info, drag_info_free); drag_info->is_notebook = (g_object_get_data (G_OBJECT (widget), "nautilus-notebook-tab") != NULL); if (target_file != NULL) drag_info->target_file = nautilus_file_ref (target_file); if (target_slot != NULL) drag_info->target_slot = g_object_ref (target_slot); drag_info->widget = widget; gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_ASK); target_list = gtk_target_list_new (targets, G_N_ELEMENTS (targets)); gtk_target_list_add_uri_targets (target_list, NAUTILUS_ICON_DND_URI_LIST); gtk_target_list_add_text_targets (target_list, NAUTILUS_ICON_DND_TEXT); gtk_drag_dest_set_target_list (widget, target_list); gtk_target_list_unref (target_list); g_signal_connect (widget, "drag-motion", G_CALLBACK (slot_proxy_drag_motion), drag_info); g_signal_connect (widget, "drag-drop", G_CALLBACK (slot_proxy_drag_drop), drag_info); g_signal_connect (widget, "drag-data-received", G_CALLBACK (slot_proxy_drag_data_received), drag_info); g_signal_connect (widget, "drag-leave", G_CALLBACK (slot_proxy_drag_leave), drag_info); }
static VALUE rg_m_dest_set_target_list(VALUE self, VALUE widget, VALUE target_list) { gtk_drag_dest_set_target_list( RVAL2WIDGET(widget), NIL_P(target_list) ? NULL : RVAL2BOXED(target_list, GTK_TYPE_TARGET_LIST)); return self; }
static void gstyle_color_widget_init (GstyleColorWidget *self) { GtkStyleContext *context; GtkWidget *widget = GTK_WIDGET (self); gtk_widget_set_has_window (GTK_WIDGET (self), TRUE); self->label = GTK_LABEL (g_object_new (GTK_TYPE_LABEL, "ellipsize", PANGO_ELLIPSIZE_END, "visible", TRUE, "halign", GTK_ALIGN_CENTER, "valign", GTK_ALIGN_CENTER, NULL)); gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->label)); self->is_name_visible = TRUE; self->is_fallback_name_visible = TRUE; self->fallback_name_kind = GSTYLE_COLOR_KIND_RGB_HEX6; self->checkered_pattern = gstyle_utils_get_checkered_pattern (); gtk_widget_set_valign (widget, GTK_ALIGN_FILL); gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_hexpand (widget, TRUE); gtk_widget_set_vexpand (widget, TRUE); context = gtk_widget_get_style_context (GTK_WIDGET (self)); self->default_provider = gstyle_css_provider_init_default (gtk_style_context_get_screen (context)); self->target_list = gtk_target_list_new (dnd_targets, G_N_ELEMENTS (dnd_targets)); gtk_target_list_add_text_targets (self->target_list, 0); gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_MOVE); gtk_drag_dest_set_target_list (widget, self->target_list); gtk_drag_dest_set_track_motion (GTK_WIDGET (self), TRUE); update_container_parent_informations (self); self->multipress_gesture = gtk_gesture_multi_press_new (widget); gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (self->multipress_gesture), 0); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->multipress_gesture), GTK_PHASE_BUBBLE); g_signal_connect (self->multipress_gesture, "pressed", G_CALLBACK (gstyle_color_widget_multipress_gesture_pressed), widget); self->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (self)); g_signal_connect (self->drag_gesture, "drag-update", G_CALLBACK (gstyle_color_widget_drag_gesture_update), self); g_signal_connect_swapped (self, "key-press-event", G_CALLBACK (gstyle_color_widget_key_pressed_cb), self); gstyle_color_widget_actions_init (self); gtk_widget_set_can_focus (GTK_WIDGET (self), TRUE); }
void nemo_drag_slot_proxy_init (GtkWidget *widget, NemoFile *target_file, NemoWindowSlot *target_slot) { NemoDragSlotProxyInfo *drag_info; const GtkTargetEntry targets[] = { { NEMO_ICON_DND_GNOME_ICON_LIST_TYPE, 0, NEMO_ICON_DND_GNOME_ICON_LIST }, { NEMO_ICON_DND_NETSCAPE_URL_TYPE, 0, NEMO_ICON_DND_NETSCAPE_URL } }; GtkTargetList *target_list; g_assert (GTK_IS_WIDGET (widget)); drag_info = g_slice_new0 (NemoDragSlotProxyInfo); g_object_set_data_full (G_OBJECT (widget), "drag-slot-proxy-data", drag_info, drag_info_free); drag_info->desktop_dnd_source_fs = NULL; drag_info->desktop_dnd_can_delete_source = FALSE; if (target_file != NULL) drag_info->target_file = g_object_ref (target_file); if (target_slot != NULL) drag_info->target_slot = g_object_ref (target_slot); gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_ASK); target_list = gtk_target_list_new (targets, G_N_ELEMENTS (targets)); gtk_target_list_add_uri_targets (target_list, NEMO_ICON_DND_URI_LIST); gtk_drag_dest_set_target_list (widget, target_list); gtk_target_list_unref (target_list); g_signal_connect (widget, "drag-motion", G_CALLBACK (slot_proxy_drag_motion), drag_info); g_signal_connect (widget, "drag-drop", G_CALLBACK (slot_proxy_drag_drop), drag_info); g_signal_connect (widget, "drag-data-received", G_CALLBACK (slot_proxy_drag_data_received), drag_info); g_signal_connect (widget, "drag-leave", G_CALLBACK (slot_proxy_drag_leave), drag_info); }
void nautilus_drag_slot_proxy_init (GtkWidget *widget, GFile *target_location, NautilusWindowSlot *target_slot) { NautilusDragSlotProxyInfo *drag_info; const GtkTargetEntry targets[] = { { NAUTILUS_ICON_DND_GNOME_ICON_LIST_TYPE, 0, NAUTILUS_ICON_DND_GNOME_ICON_LIST }, { NAUTILUS_ICON_DND_NETSCAPE_URL_TYPE, 0, NAUTILUS_ICON_DND_NETSCAPE_URL } }; GtkTargetList *target_list; g_assert (GTK_IS_WIDGET (widget)); drag_info = g_slice_new0 (NautilusDragSlotProxyInfo); g_object_set_data_full (G_OBJECT (widget), "drag-slot-proxy-data", drag_info, drag_info_free); if (target_location != NULL) drag_info->target_location = g_object_ref (target_location); if (target_slot != NULL) drag_info->target_slot = g_object_ref (target_slot); gtk_drag_dest_set (widget, 0, NULL, 0, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_ASK); target_list = gtk_target_list_new (targets, G_N_ELEMENTS (targets)); gtk_target_list_add_uri_targets (target_list, NAUTILUS_ICON_DND_URI_LIST); gtk_drag_dest_set_target_list (widget, target_list); gtk_target_list_unref (target_list); g_signal_connect (widget, "drag-motion", G_CALLBACK (slot_proxy_drag_motion), drag_info); g_signal_connect (widget, "drag-drop", G_CALLBACK (slot_proxy_drag_drop), drag_info); g_signal_connect (widget, "drag-data-received", G_CALLBACK (slot_proxy_drag_data_received), drag_info); g_signal_connect (widget, "drag-leave", G_CALLBACK (slot_proxy_drag_leave), drag_info); }
/** * gtk_drag_dest_add_uri_targets: (method) * @widget: a #GtkWidget that’s a drag destination * * Add the URI targets supported by #GtkSelectionData to * the target list of the drag destination. The targets * are added with @info = 0. If you need another value, * use gtk_target_list_add_uri_targets() and * gtk_drag_dest_set_target_list(). * * Since: 2.6 */ void gtk_drag_dest_add_uri_targets (GtkWidget *widget) { GtkTargetList *target_list; target_list = gtk_drag_dest_get_target_list (widget); if (target_list) gtk_target_list_ref (target_list); else target_list = gtk_target_list_new (NULL, 0); gtk_target_list_add_uri_targets (target_list, 0); gtk_drag_dest_set_target_list (widget, target_list); gtk_target_list_unref (target_list); }
static void update_dest_target_list (GtkWidget *ebox) { GtkTargetList *target_list; target_list = gtk_target_list_new (NULL, 0); gtk_target_list_add_image_targets (target_list, TARGET_IMAGE, FALSE); gtk_target_list_add_text_targets (target_list, TARGET_TEXT); gtk_drag_dest_set_target_list (ebox, target_list); gtk_target_list_unref (target_list); }
int clip_GTK_DRAGDESTSETTARGETLIST(ClipMachine * cm) { C_widget *cwid = _fetch_cw_arg(cm); C_object *ctlist = _fetch_cobject(cm, _clip_spar(cm, 2)); CHECKCWID(cwid, GTK_IS_WIDGET); if (!ctlist || ctlist->type != GTK_TYPE_TARGET_LIST) goto err; gtk_drag_dest_set_target_list(GTK_WIDGET(cwid->widget), (GtkTargetList*)ctlist); return 0; err: return 1; }
void drop_widget_init(GtkWidget *widget, drag_data_received_cb callback, void *user_data) { static const GtkTargetEntry targets[] = { #if GTK_CHECK_VERSION(2,0,0) { "UTF8_STRING", 0, 3 }, { "text/plain;charset=utf-8", 0, 4 }, #endif /* Gtk+ >= 2.0 */ { "STRING", 0, 1 }, { "text/plain", 0, 2 }, }; g_return_if_fail(widget); g_return_if_fail(callback); gtk_drag_dest_set(widget, GTK_DEST_DEFAULT_ALL, targets, G_N_ELEMENTS(targets), GDK_ACTION_COPY | GDK_ACTION_MOVE); #if GTK_CHECK_VERSION(2,0,0) { static GtkClipboard *clipboard; if (!clipboard) { clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); } } gtk_drag_dest_set_target_list(widget, gtk_target_list_new(targets, G_N_ELEMENTS(targets))); #endif /* USE_GTK2 */ #if !GTK_CHECK_VERSION(2,0,0) gtk_selection_add_targets(widget, GDK_SELECTION_TYPE_STRING, targets, G_N_ELEMENTS(targets)); #endif /* USE_GTK1 */ gui_signal_connect(GTK_OBJECT(widget), "drag-data-received", callback, user_data); }