MCPcopy Create free account
hub / github.com/HandBrake/HandBrake / presets_drop_cb

Function presets_drop_cb

gtk/src/presets.c:2994–3139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2992}
2993
2994G_MODULE_EXPORT gboolean
2995presets_drop_cb (GtkDropTargetAsync *drop_target, GdkDrop *drop, double x, double y, signal_user_data_t *ud)
2996{
2997 GtkTreeView *tv;
2998 GtkTreeModel *dst_model;
2999 GtkTreePath *dst_treepath = NULL;
3000 GtkTreeViewDropPosition drop_pos;
3001 GtkTreeIter dst_iter, src_iter;
3002 gint src_ptype;
3003 gboolean src_folder, dst_folder;
3004
3005 tv = GTK_TREE_VIEW(gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(drop_target)));
3006 g_return_val_if_fail(GTK_IS_TREE_VIEW(tv), FALSE);
3007
3008 dst_model = gtk_tree_view_get_model(tv);
3009 gtk_tree_view_get_drag_dest_row(tv, &dst_treepath, &drop_pos);
3010 if (dst_treepath == NULL)
3011 {
3012 return FALSE;
3013 }
3014
3015 GtkTreeView *src_widget;
3016 GtkTreeModel *src_model;
3017 GtkTreeSelection *select;
3018 hb_preset_index_t *dst_path, *src_path;
3019
3020 src_widget = tv;
3021 select = gtk_tree_view_get_selection (src_widget);
3022 gtk_tree_selection_get_selected(select, &src_model, &src_iter);
3023
3024 src_path = tree_get_index(src_model, &src_iter);
3025 src_ptype = preset_get_type(src_path);
3026 src_folder = preset_is_folder(src_path);
3027
3028 // Don't allow repositioning of builtin presets
3029 if (src_ptype != HB_PRESET_TYPE_CUSTOM)
3030 {
3031 free(src_path);
3032 gtk_tree_path_free(dst_treepath);
3033 dst_treepath = NULL;
3034 return FALSE;
3035 }
3036
3037 dst_path = tree_path_get_index(dst_treepath);
3038 dst_folder = preset_is_folder(dst_path);
3039
3040 // Don't allow allow dropping source folders after/before non-folders
3041 if (src_folder && !dst_folder)
3042 {
3043 gtk_tree_path_up(dst_treepath);
3044 dst_path = tree_path_get_index(dst_treepath);
3045 dst_folder = preset_is_folder(dst_path);
3046
3047 drop_pos = GTK_TREE_VIEW_DROP_AFTER;
3048 }
3049
3050 // Don't allow dropping folders into other folders, only before/after
3051 if (src_folder && dst_folder)

Callers

nothing calls this directly

Calls 9

tree_get_indexFunction · 0.85
preset_get_typeFunction · 0.85
preset_is_folderFunction · 0.85
tree_path_get_indexFunction · 0.85
hb_preset_moveFunction · 0.85
presets_list_update_itemFunction · 0.85
select_preset2Function · 0.85
store_presetsFunction · 0.85
ghb_presets_menu_reinitFunction · 0.85

Tested by

no test coverage detected