From: Andreas Monzner Date: Wed, 28 Dec 2005 22:40:36 +0000 (+0000) Subject: clip each single region in listbox multicontent X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=f228cfc8343e089176d885102558825bdb6a3d9c clip each single region in listbox multicontent --- diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index 6e49dcb..5959343 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -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: