X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fgui%2Felistboxcontent.cpp;h=ba0794e73ccb416fe85b22aab90e06e99f705ed1;hp=7bb84c3d0a1cf828c7d6569bfd29dfb98e0e9d03;hb=83e780aa14c8f51c89ff80c7ac2b67de5b8dc3b8;hpb=d37c356fa54be2fd93a92566c686a468a741cd0f diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index 7bb84c3..ba0794e 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -343,7 +343,6 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, if (PyTuple_Check(item)) { /* handle left part. get item from tuple, convert to string, display. */ - text = PyTuple_GET_ITEM(item, 0); text = PyObject_Str(text); /* creates a new object - old object was borrowed! */ const char *string = (text && PyString_Check(text)) ? PyString_AsString(text) : ""; @@ -357,7 +356,9 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, int value_alignment_left = !*string; /* now, handle the value. get 2nd part from tuple*/ - value = PyTuple_GET_ITEM(item, 1); + if (PyTuple_Size(item) >= 2) // when no 2nd entry is in tuple this is a non selectable entry without config part + value = PyTuple_GET_ITEM(item, 1); + if (value) { ePyObject args = PyTuple_New(1); @@ -468,7 +469,7 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, } } /* type is borrowed */ - } else + } else if (value) eWarning("eListboxPythonConfigContent: second value of tuple is not a tuple."); if (value) Py_DECREF(value); @@ -500,6 +501,7 @@ eListboxPythonMultiContent::~eListboxPythonMultiContent() { Py_XDECREF(m_buildFunc); Py_XDECREF(m_selectableFunc); + Py_XDECREF(m_template); } void eListboxPythonMultiContent::setSelectionClip(eRect &rect, bool update) @@ -639,7 +641,8 @@ static ePyObject lookupColor(ePyObject color, ePyObject data) if ((icolor & 0xFF000000) == 0xFF000000) { int index = icolor & 0xFFFFFF; - eDebug("[eListboxPythonMultiContent] template color index: %d", index); + if (PyTuple_GetItem(data, index) == Py_None) + return ePyObject(); return PyTuple_GetItem(data, index); } @@ -966,6 +969,9 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c if (ppixmap) { ePtr pixmap; + if (PyInt_Check(ppixmap) && data) /* if the pixmap is in fact a number, it refers to the data list */ + ppixmap = PyTuple_GetItem(data, PyInt_AsLong(ppixmap)); + if (SwigFromPython(pixmap, ppixmap)) { eDebug("eListboxPythonMultiContent (Pixmap) get pixmap failed"); @@ -1154,5 +1160,7 @@ void eListboxPythonMultiContent::entryRemoved(int idx) void eListboxPythonMultiContent::setTemplate(ePyObject tmplate) { + Py_XDECREF(m_template); m_template = tmplate; + Py_XINCREF(m_template); }