- if ( m_current_marked && m_saved_cursor == m_list.end() && m_cursor != m_list.end() )
- m_swap = m_cursor;
- m_cursor = m_list.end();
- m_cursor_number = m_size;
+ if (m_current_marked && m_saved_cursor == m_list.end())
+ {
+ while (m_cursor != m_list.end())
+ {
+ list::iterator prev = m_cursor++;
+ ++m_cursor_number;
+ if ( prev != m_list.end() && m_cursor != m_list.end() )
+ {
+ std::iter_swap(m_cursor, prev);
+ if ( m_listbox )
+ m_listbox->entryChanged(m_cursor_number);
+ }
+ }
+ }
+ else
+ {
+ m_cursor = m_list.end();
+ m_cursor_number = m_size;
+ }