m_lst=0;
return;
}
- assert(m_service_center);
+ ASSERT(m_service_center);
if (m_service_center->list(m_root, m_lst))
eDebug("no list available!");
{
painter.clip(eRect(offset, m_itemsize));
- bool marked = m_current_marked || (cursorValid() && isMarked(*m_cursor));
+ int marked = 0;
- if (marked)
- style.setStyle(painter, selected ? eWindowStyle::styleListboxMarkedAndSelected : eWindowStyle::styleListboxMarked);
+ if (m_current_marked && selected)
+ marked = 2;
+ else if (cursorValid() && isMarked(*m_cursor))
+ {
+ if (selected)
+ marked = 2;
+ else
+ marked = 1;
+ }
else
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
if (m_listbox)
local_style = m_listbox->getLocalStyle();
- if (marked)
+ if (marked == 1) // marked
{
- if (selected)
- {
- if (m_color_set[markedForegroundSelected])
- painter.setForegroundColor(m_color[markedForegroundSelected]);
- if (m_color_set[markedBackgroundSelected])
- painter.setBackgroundColor(m_color[markedBackgroundSelected]);
- }
- else
- {
- if (m_color_set[markedForeground])
- painter.setForegroundColor(m_color[markedForeground]);
- if (m_color_set[markedBackground])
- painter.setBackgroundColor(m_color[markedBackground]);
- }
+ style.setStyle(painter, eWindowStyle::styleListboxMarked);
+ if (m_color_set[markedForeground])
+ painter.setForegroundColor(m_color[markedForeground]);
+ if (m_color_set[markedBackground])
+ painter.setBackgroundColor(m_color[markedBackground]);
+ }
+ else if (marked == 2) // marked and selected
+ {
+ style.setStyle(painter, eWindowStyle::styleListboxMarkedAndSelected);
+ if (m_color_set[markedForegroundSelected])
+ painter.setForegroundColor(m_color[markedForegroundSelected]);
+ if (m_color_set[markedBackgroundSelected])
+ painter.setBackgroundColor(m_color[markedBackgroundSelected]);
}
else if (local_style)
{
painter.clear();
}
- painter.clear();
-
if (cursorValid())
{
/* get service information */
eServiceReference ref = *m_cursor;
bool isPlayable = !(ref.flags & eServiceReference::isDirectory || ref.flags & eServiceReference::isMarker);
- if (!marked && isPlayable && service_info && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
+ if (!marked && isPlayable && service_info && m_is_playable_ignore.valid() && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
{
if (m_color_set[serviceNotAvail])
painter.setForegroundColor(m_color[serviceNotAvail]);
case celServiceInfo:
{
ePtr<eServiceEvent> evt;
- if ( service_info && !service_info->getEvent(*m_cursor, evt) )
+ if ( isPlayable && service_info && !service_info->getEvent(*m_cursor, evt) )
{
std::string name = evt->getEventName();
if (!name.length())
void eListboxServiceContent::setIgnoreService( const eServiceReference &service )
{
m_is_playable_ignore=service;
+ if (m_listbox && m_listbox->isVisible())
+ m_listbox->invalidate();
}
-int eListboxServiceContent::setItemHeight(int height)
+void eListboxServiceContent::setItemHeight(int height)
{
m_itemheight = height;
if (m_listbox)