From f228cfc8343e089176d885102558825bdb6a3d9c Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Wed, 28 Dec 2005 22:40:36 +0000 Subject: [PATCH] clip each single region in listbox multicontent --- lib/gui/elistboxcontent.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index 6e49dcb5..5959343a 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: -- 2.30.2