DashDND: Don't allow positioning before or after self

Don't allow the icon to be dropped immediately next to
itself.

https://bugzilla.gnome.org/show_bug.cgi?id=637104
This commit is contained in:
Adel Gadllah 2011-01-06 14:19:44 +01:00
parent ce2efc6a67
commit cff503922c

View File

@ -273,7 +273,11 @@ Dash.prototype = {
if (app == null || app.is_transient()) if (app == null || app.is_transient())
return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.NO_DROP;
let numFavorites = AppFavorites.getAppFavorites().getFavorites().length; let favorites = AppFavorites.getAppFavorites().getFavorites();
let numFavorites = favorites.length;
let favPos = favorites.indexOf(app);
let numChildren = this._box.get_children().length; let numChildren = this._box.get_children().length;
let boxHeight = this._box.height; let boxHeight = this._box.height;
@ -291,15 +295,16 @@ Dash.prototype = {
this._dragPlaceholderPos = pos; this._dragPlaceholderPos = pos;
if (this._dragPlaceholder) if (this._dragPlaceholder)
this._dragPlaceholder.destroy(); this._dragPlaceholder.destroy();
// Don't allow positioning before or after self
if (favPos != -1 && (pos == favPos || pos == favPos + 1))
return DND.DragMotionResult.CONTINUE;
this._dragPlaceholder = new St.Bin({ style_class: 'dash-placeholder' }); this._dragPlaceholder = new St.Bin({ style_class: 'dash-placeholder' });
this._box.insert_actor(this._dragPlaceholder, pos); this._box.insert_actor(this._dragPlaceholder, pos);
} }
let id = app.get_id(); let srcIsFavorite = (favPos != -1);
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
let srcIsFavorite = (id in favorites);
if (srcIsFavorite) if (srcIsFavorite)
return DND.DragMotionResult.MOVE_DROP; return DND.DragMotionResult.MOVE_DROP;