private void MoveItemBetweenListboxes(MyGuiControlListbox listboxFrom, MyGuiControlListbox listboxTo, bool copyItem, bool deleteItem)
        {
            bool moved = false;
            MyGuiControlListboxItem selectedItem = listboxFrom.GetSelectedItem();
            if (selectedItem != null)
            {
                System.Diagnostics.Debug.Assert(m_itemsRepository.Contains(selectedItem.Key));

                if (!IsListboxFull(listboxTo) && m_itemsRepository.Contains(selectedItem.Key))
                {
                    MyInventoryItem item = m_itemsRepository.GetItem(selectedItem.Key);
                    if (!CanDropItem(item, listboxFrom, listboxTo)) 
                    {
                        return;
                    }
                    
                    if (m_tradeForMoney)
                    {
                        selectedItem.ToolTip = GetListboxItemTooltip(listboxTo, selectedItem.Key);
                        bool tradeForMoneyResult = HandleTradeForMoney(listboxFrom, listboxTo, item);
                        if (!tradeForMoneyResult) 
                        {
                            return;
                        }
                    }

                    if (NeedHandleSmallShipDrop(item))
                    {
                        HandleSmallShipDrop(listboxFrom, listboxTo, item);                        
                    }

                    // we make copy of moved item
                    if (copyItem)
                    {
                        listboxTo.AddItem(CreateCopyOfListboxItem(selectedItem));
                    }
                    else
                    {
                        listboxFrom.RemoveItem(selectedItem.Key, false);
                        // if we don't want delete moved item
                        if (!deleteItem)
                        {
                            listboxTo.AddItem(selectedItem);
                        }
                    }
                    moved = true;
                    m_wasAnythingTrasfered = true;

                    if (m_tradeForMoney) 
                    {
                        UpdateOtherSideInventoryListboxForTrading();
                    }
                }
                else
                {
                    MyAudio.AddCue2D(MySoundCuesEnum.HudInventoryFullWarning);
                }
            }

            if (moved && listboxTo.GetEmptyRowsCount() == 0)
            {
                AddFreeRowsIfCan(listboxTo, 1);                
            }
        }