git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix handy like jumping in sorted service list
[enigma2.git]
/
lib
/
gui
/
elistbox.cpp
diff --git
a/lib/gui/elistbox.cpp
b/lib/gui/elistbox.cpp
index 0d92e10790ef9a9ce3d0e0b0db82d0d71e2f9cb2..e2f1c26f878691063247a066fe25aa18b36a2d7f 100644
(file)
--- a/
lib/gui/elistbox.cpp
+++ b/
lib/gui/elistbox.cpp
@@
-10,6
+10,7
@@
eListbox::eListbox(eWidget *parent): eWidget(parent)
eActionMap::getInstance(ptr);
m_itemheight = 25;
eActionMap::getInstance(ptr);
m_itemheight = 25;
+ m_selection_enabled = 1;
ptr->bindAction("ListboxActions", 0, 0, this);
}
ptr->bindAction("ListboxActions", 0, 0, this);
}
@@
-95,17
+96,16
@@
void eListbox::moveSelection(int dir)
/* now, look wether the current selection is out of screen */
m_selected = m_content->cursorGet();
/* now, look wether the current selection is out of screen */
m_selected = m_content->cursorGet();
-
-
if
(m_selected < m_top)
+
+
while
(m_selected < m_top)
{
m_top -= m_items_per_page;
if (m_top < 0)
m_top = 0;
{
m_top -= m_items_per_page;
if (m_top < 0)
m_top = 0;
- } else if (m_selected >= m_top + m_items_per_page)
- {
- /* m_top should be always valid here as it's selected */
- m_top += m_items_per_page;
}
}
+ while (m_selected >= m_top + m_items_per_page)
+ /* m_top should be always valid here as it's selected */
+ m_top += m_items_per_page;
if (m_top != oldtop)
invalidate();
if (m_top != oldtop)
invalidate();
@@
-120,6
+120,14
@@
void eListbox::moveSelection(int dir)
}
}
}
}
+void eListbox::moveSelectionTo(int index)
+{
+ printf("Moving to listbox-entry with index %d\n", index);
+ m_content->cursorHome();
+ m_content->cursorMove(index);
+ moveSelection(justCheck);
+}
+
int eListbox::event(int event, void *data, void *data2)
{
switch (event)
int eListbox::event(int event, void *data, void *data2)
{
switch (event)
@@
-142,9
+150,9
@@
int eListbox::event(int event, void *data, void *data2)
m_content->cursorSave();
m_content->cursorMove(m_top - m_selected);
m_content->cursorSave();
m_content->cursorMove(m_top - m_selected);
- for (int y = 0, i = 0; i < m_items_per_page; y += m_itemheight, ++i)
+ for (int y = 0, i = 0; i <
=
m_items_per_page; y += m_itemheight, ++i)
{
{
- m_content->paint(painter, *style, ePoint(0, y), m_selected == m_content->cursorGet());
+ m_content->paint(painter, *style, ePoint(0, y), m_selected == m_content->cursorGet()
&& m_content->size() && m_selection_enabled
);
m_content->cursorMove(+1);
}
m_content->cursorMove(+1);
}
@@
-183,6
+191,14
@@
void eListbox::setItemHeight(int h)
recalcSize();
}
recalcSize();
}
+void eListbox::setSelectionEnable(int en)
+{
+ if (m_selection_enabled == en)
+ return;
+ m_selection_enabled = en;
+ entryChanged(m_selected); /* redraw current entry */
+}
+
void eListbox::entryAdded(int index)
{
/* manage our local pointers. when the entry was added before the current position, we have to advance. */
void eListbox::entryAdded(int index)
{
/* manage our local pointers. when the entry was added before the current position, we have to advance. */