- /* Fixme: avoid useless lookups but we need some clean helpers */
- {
- /* Fixme: if we try to move a node on a top-level node, it will
- * fail because the node doesn't exist in onelevel and we will
- * do some shit in onelevel. We should recursively move all items
- * within the node */
- playlist_item_t *p_node_onelevel;
- playlist_item_t *p_item_onelevel;
- p_node_onelevel = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_node->p_input->i_id,
- p_playlist->p_root_onelevel,
- false );
- p_item_onelevel = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_item->p_input->i_id,
- p_playlist->p_root_onelevel,
- false );
- if( p_node_onelevel && p_item_onelevel )
- TreeMove( p_playlist, p_item_onelevel, p_node_onelevel, i_newpos );
- }
- {
- playlist_item_t *p_node_category;
- playlist_item_t *p_item_category;
- p_node_category = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_node->p_input->i_id,
- p_playlist->p_root_category,
- false );
- p_item_category = playlist_ItemFindFromInputAndRoot( p_playlist,
- p_item->p_input->i_id,
- p_playlist->p_root_category,
- false );
- if( p_node_category && p_item_category )
- TreeMove( p_playlist, p_item_category, p_node_category, 0 );
- }
- i_ret = VLC_SUCCESS;
+ playlist_item_t *p_item = pp_items[i];
+ int i_index = ItemIndex( p_item );
+ playlist_item_t *p_parent = p_item->p_parent;
+ REMOVE_ELEM( p_parent->pp_children, p_parent->i_children, i_index );
+ if ( p_parent == p_node && i_index < i_newpos ) i_newpos--;