aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-01-13 01:01:08 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-01-13 01:01:08 +0000
commit1f497d5b863644889bda758eed836a3d6be7be11 (patch)
treee9095725762a4867442523c8263cb6c554622fd9 /lib
parent28d2a74b9141e0b8bafbe4f708181dba0fe66ea6 (diff)
downloadenigma2-1f497d5b863644889bda758eed836a3d6be7be11.tar.gz
enigma2-1f497d5b863644889bda758eed836a3d6be7be11.zip
fix remove last entry in list
Diffstat (limited to 'lib')
-rw-r--r--lib/service/listboxservice.cpp31
1 files changed, 23 insertions, 8 deletions
diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp
index d87e3155..8bb02611 100644
--- a/lib/service/listboxservice.cpp
+++ b/lib/service/listboxservice.cpp
@@ -11,25 +11,40 @@ void eListboxServiceContent::addService(const eServiceReference &service, bool b
m_list.insert(m_cursor, service);
else
m_list.push_back(service);
- ++m_size;
- ++m_cursor_number;
- if (m_listbox)
- m_listbox->entryAdded(m_cursor_number-1);
+ if (m_size++)
+ {
+ ++m_cursor_number;
+ if (m_listbox)
+ m_listbox->entryAdded(m_cursor_number-1);
+ }
+ else
+ {
+ m_cursor = m_list.begin();
+ m_cursor_number=0;
+ m_listbox->entryAdded(0);
+ }
}
void eListboxServiceContent::removeCurrent()
{
if (m_size && m_listbox)
{
- --m_size;
- if (m_cursor_number == m_size-1)
+ if (m_cursor_number == --m_size)
{
m_list.erase(m_cursor--);
- --m_cursor_number;
+ if (m_size)
+ {
+ --m_cursor_number;
+ m_listbox->entryRemoved(m_cursor_number+1);
+ }
+ else
+ m_listbox->entryRemoved(m_cursor_number);
}
else
+ {
m_list.erase(m_cursor++);
- m_listbox->entryRemoved(m_cursor_number+1);
+ m_listbox->entryRemoved(m_cursor_number);
+ }
}
}