X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/02226aee689caad4d05e65448ec7640d33e8f659..c514ae52c43b9d90c482c63c35b466cc265fd8da:/lib/gui/elistboxcontent.cpp diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index 1391a2b5..5959343a 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -110,7 +110,7 @@ void eListboxTestContent::setSize(const eSize &size) void eListboxTestContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) { - ePtr fnt = new gFont("Arial", 20); + ePtr fnt = new gFont("Regular", 20); painter.clip(eRect(offset, m_size)); style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear(); @@ -219,7 +219,7 @@ void eListboxStringContent::setSize(const eSize &size) void eListboxStringContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) { - ePtr fnt = new gFont("Arial", 20); + ePtr fnt = new gFont("Regular", 20); painter.clip(eRect(offset, m_itemsize)); style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear(); @@ -246,6 +246,7 @@ void eListboxStringContent::setList(std::list &list) m_list = list; m_size = list.size(); cursorHome(); + m_listbox->entryReset(false); } ////////////////////////////////////// @@ -327,7 +328,7 @@ void eListboxPythonStringContent::setSize(const eSize &size) void eListboxPythonStringContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) { - ePtr fnt = new gFont("Arial", 20); + ePtr fnt = new gFont("Regular", 20); painter.clip(eRect(offset, m_itemsize)); style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear(); @@ -366,9 +367,8 @@ void eListboxPythonStringContent::setList(PyObject *list) Py_INCREF(m_list); } - //always invalidate when we get a new list if (m_listbox) - m_listbox->invalidate(); + m_listbox->entryReset(false); } PyObject *eListboxPythonStringContent::getCurrentSelection() @@ -398,8 +398,8 @@ void eListboxPythonStringContent::invalidate() void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) { - ePtr fnt = new gFont("Arial", 20); - ePtr fnt2 = new gFont("Arial", 16); + ePtr fnt = new gFont("Regular", 20); + ePtr fnt2 = new gFont("Regular", 16); painter.clip(eRect(offset, m_itemsize)); style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear(); @@ -422,7 +422,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, /* handle left part. get item from tuple, convert to string, display. */ text = PyTuple_GetItem(item, 0); - text = PyObject_Str(text); + text = PyObject_Str(text); /* creates a new object - old object was borrowed! */ const char *string = (text && PyString_Check(text)) ? PyString_AsString(text) : ""; eSize item_left = eSize(m_seperation, m_itemsize.height()); eSize item_right = eSize(m_itemsize.width() - m_seperation, m_itemsize.height()); @@ -525,7 +525,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, /* plist is 0 or borrowed */ } } - Py_XDECREF(type); + /* type is borrowed */ } else eWarning("eListboxPythonConfigContent: second value of tuple is not a tuple."); /* value is borrowed */ @@ -545,7 +545,8 @@ RESULT SwigFromPython(ePtr &res, PyObject *obj); void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) { - painter.clip(eRect(offset, m_itemsize)); + eRect itemrect(offset, m_itemsize); + painter.clip(itemrect); style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); painter.clear(); @@ -661,16 +662,25 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c } eRect r = eRect(x, y, width, height); r.moveBy(offset); + r &= itemrect; painter.setFont(m_font[fnt]); + painter.clip(r); painter.renderText(r, string, flags); + painter.clippop(); Py_XDECREF(pstring); break; } case 1: // pixmap { + if (!(px && py && pwidth && pheight && pfnt)) + { + eDebug("eListboxPythonMultiContent received too small tuple (must be (x, y, width, height, pixmap))"); + painter.clippop(); + return; + } int x = PyInt_AsLong(px); int y = PyInt_AsLong(py); int width = PyInt_AsLong(pwidth); @@ -678,8 +688,12 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c eRect r = eRect(x, y, width, height); r.moveBy(offset); + r &= itemrect; + painter.clip(r); painter.blit(pixmap, r.topLeft(), r); + painter.clippop(); + break; } default: