X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/549ed3c87c4d3fe093472aa199ca6742c1f3654f..43eacf2ca5189458bd43ca947242ec3b3bc5a5f4:/lib/service/listboxservice.cpp diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp index 9a8ea29f..c869b49c 100644 --- a/lib/service/listboxservice.cpp +++ b/lib/service/listboxservice.cpp @@ -48,6 +48,8 @@ void eListboxServiceContent::setCurrent(const eServiceReference &ref) m_cursor_number = index; break; } + if (m_listbox) + m_listbox->moveSelectionTo(index); } void eListboxServiceContent::getCurrent(eServiceReference &ref) @@ -189,6 +191,11 @@ void eListboxServiceContent::cursorHome() { if (m_current_marked && m_saved_cursor == m_list.end()) { + if (m_cursor_number >= m_size) + { + m_cursor_number = m_size-1; + --m_cursor; + } while (m_cursor_number) { std::iter_swap(m_cursor--, m_cursor); @@ -351,7 +358,7 @@ void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const if (m_current_marked && selected) style.setStyle(painter, eWindowStyle::styleListboxMarked); else if (cursorValid() && isMarked(*m_cursor)) - style.setStyle(painter, eWindowStyle::styleListboxMarked); + style.setStyle(painter, selected ? eWindowStyle::styleListboxMarkedAndSelected : eWindowStyle::styleListboxMarked); else style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear();