git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'experimental' of git.opendreambox.org:/git/enigma2 into experimental
[enigma2.git]
/
lib
/
gui
/
elistbox.cpp
diff --git
a/lib/gui/elistbox.cpp
b/lib/gui/elistbox.cpp
index 383ac42d8378d454be82c7e49677da78409162b2..c13114e83ebbf8bc93df4571ef0e6029a7b621d2 100644
(file)
--- a/
lib/gui/elistbox.cpp
+++ b/
lib/gui/elistbox.cpp
@@
-54,16
+54,10
@@
void eListbox::setWrapAround(bool state)
void eListbox::setContent(iListboxContent *content)
{
void eListbox::setContent(iListboxContent *content)
{
- int oldsel = m_selected;
m_content = content;
if (content)
m_content->setListbox(this);
entryReset();
m_content = content;
if (content)
m_content->setListbox(this);
entryReset();
- /* if oldsel != m_selected, selectionChanged was already
- emitted in entryReset. we want it in any case, so otherwise,
- emit it now. */
- if (oldsel == m_selected)
- /* emit */ selectionChanged();
}
bool eListbox::atBegin()
}
bool eListbox::atBegin()
@@
-99,7
+93,7
@@
void eListbox::moveToEnd()
}
}
}
}
-void eListbox::moveSelection(
int
dir)
+void eListbox::moveSelection(
long
dir)
{
/* refuse to do anything without a valid list. */
if (!m_content)
{
/* refuse to do anything without a valid list. */
if (!m_content)
@@
-285,7
+279,7
@@
void eListbox::updateScrollBar()
if ((pages*m_items_per_page) < entries)
++pages;
int start=(m_top*100)/(pages*m_items_per_page);
if ((pages*m_items_per_page) < entries)
++pages;
int start=(m_top*100)/(pages*m_items_per_page);
- int vis=(m_items_per_page*100)/(pages*m_items_per_page);
+ int vis=(m_items_per_page*100
+pages*m_items_per_page-1
)/(pages*m_items_per_page);
if (vis < 3)
vis=3;
m_scrollbar->setStartEnd(start,start+vis);
if (vis < 3)
vis=3;
m_scrollbar->setStartEnd(start,start+vis);
@@
-308,7
+302,7
@@
int eListbox::event(int event, void *data, void *data2)
if (!m_content)
return eWidget::event(event, data, data2);
if (!m_content)
return eWidget::event(event, data, data2);
-
assert
(m_content);
+
ASSERT
(m_content);
getStyle(style);
getStyle(style);
@@
-331,7
+325,7
@@
int eListbox::event(int event, void *data, void *data2)
m_content->paint(painter, *style, ePoint(0, y), m_selected == m_content->cursorGet() && m_content->size() && m_selection_enabled);
/* (we could clip with entry_clip_rect, but
m_content->paint(painter, *style, ePoint(0, y), m_selected == m_content->cursorGet() && m_content->size() && m_selection_enabled);
/* (we could clip with entry_clip_rect, but
- this shouldn't change the behavio
u
r of any
+ this shouldn't change the behavior of any
well behaving content, so it would just
degrade performance without any gain.) */
well behaving content, so it would just
degrade performance without any gain.) */
@@
-360,7
+354,7
@@
int eListbox::event(int event, void *data, void *data2)
case evtAction:
if (isVisible())
{
case evtAction:
if (isVisible())
{
- moveSelection((
int
)data2);
+ moveSelection((
long
)data2);
return 1;
}
return 0;
return 1;
}
return 0;
@@
-432,7
+426,10
@@
void eListbox::entryRemoved(int index)
if (index == m_selected && m_content)
m_selected = m_content->cursorGet();
if (index == m_selected && m_content)
m_selected = m_content->cursorGet();
- moveSelection(justCheck);
+ if (m_content && m_content->cursorGet() >= m_content->size())
+ moveSelection(moveUp);
+ else
+ moveSelection(justCheck);
if ((m_top <= index) && (index < (m_top + m_items_per_page)))
{
if ((m_top <= index) && (index < (m_top + m_items_per_page)))
{
@@
-454,6
+451,7
@@
void eListbox::entryReset(bool selectionHome)
{
m_content_changed = true;
m_prev_scrollbar_page = -1;
{
m_content_changed = true;
m_prev_scrollbar_page = -1;
+ int oldsel;
if (selectionHome)
{
if (selectionHome)
{
@@
-470,10
+468,15
@@
void eListbox::entryReset(bool selectionHome)
else
m_selected = 0;
m_content->cursorSet(m_selected);
else
m_selected = 0;
m_content->cursorSet(m_selected);
- selectionChanged();
}
}
+ oldsel = m_selected;
moveSelection(justCheck);
moveSelection(justCheck);
+ /* if oldsel != m_selected, selectionChanged was already
+ emitted in moveSelection. we want it in any case, so otherwise,
+ emit it now. */
+ if (oldsel == m_selected)
+ /* emit */ selectionChanged();
invalidate();
}
invalidate();
}