start timer after message box is actually visible
[enigma2.git] / lib / service / listboxservice.cpp
index 2e0dfa983dd3b3ea630ac7613478e1133547a182..bcd6342bdcd4c9de17c15fecb34c25d55cba5e5d 100644 (file)
@@ -8,19 +8,20 @@
 void eListboxServiceContent::addService(const eServiceReference &service, bool beforeCurrent)
 {
        if (beforeCurrent && m_size)
-       {
                m_list.insert(m_cursor, service);
-               --m_cursor;
-       }
        else
                m_list.push_back(service);
        ++m_size;
+       ++m_cursor_number;
+       if (m_listbox)
+               m_listbox->entryAdded(m_cursor_number-1);
 }
 
 void eListboxServiceContent::removeCurrent()
 {
        if (m_size && m_listbox)
        {
+               --m_size;
                if (m_cursor_number == m_size-1)
                {
                        m_list.erase(m_cursor--);
@@ -28,8 +29,7 @@ void eListboxServiceContent::removeCurrent()
                }
                else
                        m_list.erase(m_cursor++);
-               --m_size;
-               m_listbox->entryRemoved(m_cursor_number);
+               m_listbox->entryRemoved(m_cursor_number+1);
        }
 }
 
@@ -482,7 +482,7 @@ void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const
                                case celServiceInfo:
                                {
                                        ePtr<eServiceEvent> evt;
-                                       if ( !service_info->getEvent(*m_cursor, evt) )
+                                       if ( service_info && !service_info->getEvent(*m_cursor, evt) )
                                        {
                                                std::string name = evt->getEventName();
                                                if (!name.length())