m_content_changed(false), m_enabled_wrap_around(false), m_top(0), m_selected(0), m_itemheight(25),
m_items_per_page(0), m_selection_enabled(1), m_scrollbar(NULL)
{
+ memset(&m_style, 0, sizeof(m_style));
// setContent(new eListboxStringContent());
ePtr<eActionMap> ptr;
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();
}
void eListbox::entryAdded(int index)
{
- /* manage our local pointers. when the entry was added before the current position, we have to advance. */
+ if (m_content && (m_content->size() % m_items_per_page) == 1)
+ m_content_changed=true;
+ /* manage our local pointers. when the entry was added before the current position, we have to advance. */
/* we need to check <= - when the new entry has the (old) index of the cursor, the cursor was just moved down. */
if (index <= m_selected)
void eListbox::entryRemoved(int index)
{
- if (index == m_selected && m_content)
+ if (m_content && !(m_content->size() % m_items_per_page))
+ m_content_changed=true;
+
+ if (index == m_selected && m_content)
m_selected = m_content->cursorGet();
moveSelection(justCheck);
moveSelection(justCheck);
invalidate();
}
+
+void eListbox::setBackgroundColor(gRGB &col)
+{
+ m_style.m_background_color = col;
+ m_style.m_background_color_set = 1;
+}
+
+void eListbox::setForegroundColor(gRGB &col)
+{
+ m_style.m_foreground_color = col;
+ m_style.m_foreground_color_set = 1;
+}
+
+void eListbox::setBackgroundPicture(ePtr<gPixmap> &pm)
+{
+ m_style.m_background = pm;
+}
+
+void eListbox::setSelectionPicture(ePtr<gPixmap> &pm)
+{
+ m_style.m_selection = pm;
+}
+
+struct eListboxStyle *eListbox::getLocalStyle(void)
+{
+ /* transparency is set directly in the widget */
+ m_style.m_transparent_background = isTransparent();
+ return &m_style;
+}