X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/daceed220bdfbb2bd48d08372dbb77d450a8be61..2d2f681283ecec948254e21180e61aa5152ebc2c:/lib/gui/elistboxcontent.cpp diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index 4da1618c..4b4b58c1 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -49,7 +49,7 @@ int iListboxContent::currentCursorSelectable() DEFINE_REF(eListboxPythonStringContent); -eListboxPythonStringContent::eListboxPythonStringContent(): m_itemheight(25) +eListboxPythonStringContent::eListboxPythonStringContent(): m_itemheight(25), m_cursor(0) { } @@ -81,7 +81,7 @@ int eListboxPythonStringContent::cursorMove(int count) int eListboxPythonStringContent::cursorValid() { - return m_cursor < size(); + return ((unsigned int)m_cursor) < size(); } int eListboxPythonStringContent::cursorSet(int n) @@ -182,7 +182,7 @@ void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style, { if (local_style->m_background && cursorValid) painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST); - else + else if (selected && !local_style->m_selection) painter.clear(); } @@ -319,7 +319,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, { if (local_style->m_background && cursorValid) painter.blit(local_style->m_background, offset, eRect(), gPainter::BT_ALPHATEST); - else + else if (selected && !local_style->m_selection) painter.clear(); } @@ -533,6 +533,8 @@ static void clearRegionHelper(gPainter &painter, eListboxStyle *local_style, con painter.blit(local_style->m_background, offset, eRect(), 0); return; } + else if (local_style->m_transparent_background) + return; } painter.clear(); } @@ -907,6 +909,10 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c if ((filled < 0) && data) /* if the string is in a negative number, it refers to the 'data' list. */ filled = PyInt_AsLong(PyTuple_GetItem(data, -filled)); + + /* don't do anything if percent out of range */ + if ((filled < 0) || (filled > 100)) + continue; int bwidth = pborderWidth ? PyInt_AsLong(pborderWidth) : 2; @@ -939,6 +945,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c break; } + case TYPE_PIXMAP_ALPHABLEND: case TYPE_PIXMAP_ALPHATEST: case TYPE_PIXMAP: // pixmap { @@ -991,7 +998,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c clearRegion(painter, style, local_style, ePyObject(), ePyObject(), pbackColor, pbackColorSelected, selected, rc, sel_clip, offset, cursorValid); } - painter.blit(pixmap, rect.topLeft(), rect, (type == TYPE_PIXMAP_ALPHATEST) ? gPainter::BT_ALPHATEST : 0); + painter.blit(pixmap, rect.topLeft(), rect, (type == TYPE_PIXMAP_ALPHATEST) ? gPainter::BT_ALPHATEST : (type == TYPE_PIXMAP_ALPHABLEND) ? gPainter::BT_ALPHABLEND : 0); painter.clippop(); break; } @@ -1002,7 +1009,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c } } - if (selected && (!local_style || !local_style->m_selection)) + if (selected && !sel_clip.valid() && (!local_style || !local_style->m_selection)) style.drawFrame(painter, eRect(offset, m_itemsize), eWindowStyle::frameListboxEntry); error_out: @@ -1041,7 +1048,7 @@ int eListboxPythonMultiContent::currentCursorSelectable() { bool retval = ret == Py_True; Py_DECREF(ret); - return ret; + return retval; } eDebug("call m_selectableFunc failed!!! assume not callable"); }