diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2019-10-25 22:03:22 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-25 22:03:22 +0200 | 
| commit | c96ee7605c6c8a0c15609ee96af99c9965b863ab (patch) | |
| tree | bc8985ffe28418f267024822a0ad88b0148b6a93 /editor/filesystem_dock.cpp | |
| parent | dac22c4b13ae63ddab511573d53870e4a476dcda (diff) | |
| parent | f1265541ee164092878ca27f644a1f87338863e2 (diff) | |
Merge pull request #32946 from DavidSichma/fav-drag
Made favorites dragable
Diffstat (limited to 'editor/filesystem_dock.cpp')
| -rw-r--r-- | editor/filesystem_dock.cpp | 28 | 
1 files changed, 17 insertions, 11 deletions
| diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index e3f0021fbc..be05183f92 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -333,10 +333,11 @@ void FileSystemDock::_notification(int p_what) {  		case NOTIFICATION_DRAG_BEGIN: {  			Dictionary dd = get_viewport()->gui_get_drag_data();  			if (tree->is_visible_in_tree() && dd.has("type")) { -				if ((String(dd["type"]) == "files") || (String(dd["type"]) == "files_and_dirs") || (String(dd["type"]) == "resource")) { +				if (dd.has("favorite")) { +					if ((String(dd["favorite"]) == "all")) +						tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN); +				} else if ((String(dd["type"]) == "files") || (String(dd["type"]) == "files_and_dirs") || (String(dd["type"]) == "resource")) {  					tree->set_drop_mode_flags(Tree::DROP_MODE_ON_ITEM | Tree::DROP_MODE_INBETWEEN); -				} else if ((String(dd["type"]) == "favorite")) { -					tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN);  				}  			}  		} break; @@ -1839,7 +1840,7 @@ Variant FileSystemDock::get_drag_data_fw(const Point2 &p_point, Control *p_from)  			all_not_favorites &= !is_favorite;  			selected = tree->get_next_selected(selected);  		} -		if (all_favorites) { +		if (!all_not_favorites) {  			paths = _tree_get_selected(false);  		} else {  			paths = _tree_get_selected(); @@ -1857,12 +1858,9 @@ Variant FileSystemDock::get_drag_data_fw(const Point2 &p_point, Control *p_from)  	if (paths.empty())  		return Variant(); -	if (!all_favorites && !all_not_favorites) -		return Variant(); -  	Dictionary drag_data = EditorNode::get_singleton()->drag_files_and_dirs(paths, p_from); -	if (all_favorites) { -		drag_data["type"] = "favorite"; +	if (!all_not_favorites) { +		drag_data["favorite"] = all_favorites ? "all" : "mixed";  	}  	return drag_data;  } @@ -1870,7 +1868,11 @@ Variant FileSystemDock::get_drag_data_fw(const Point2 &p_point, Control *p_from)  bool FileSystemDock::can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const {  	Dictionary drag_data = p_data; -	if (drag_data.has("type") && String(drag_data["type"]) == "favorite") { +	if (drag_data.has("favorite")) { + +		if (String(drag_data["favorite"]) != "all") { +			return false; +		}  		// Moving favorite around.  		TreeItem *ti = tree->get_item_at_position(p_point); @@ -1937,7 +1939,11 @@ void FileSystemDock::drop_data_fw(const Point2 &p_point, const Variant &p_data,  	Vector<String> dirs = EditorSettings::get_singleton()->get_favorites(); -	if (drag_data.has("type") && String(drag_data["type"]) == "favorite") { +	if (drag_data.has("favorite")) { + +		if (String(drag_data["favorite"]) != "all") { +			return; +		}  		// Moving favorite around.  		TreeItem *ti = tree->get_item_at_position(p_point);  		if (!ti) |