{
if (selected && sel_clip.valid())
{
- painter.clip(rc-sel_clip);
- if (pbackColor)
+ gRegion part = rc - sel_clip;
+ if (!part.empty())
{
- int color = PyInt_AsLong(pbackColor);
- painter.setBackgroundColor(gRGB(color));
- } // transparent background?
- // if we have a local background color set, use that.
- else if (local_style && local_style->m_background_color_set)
- painter.setBackgroundColor(local_style->m_background_color);
- else
+ painter.clip(part);
style.setStyle(painter, eWindowStyle::styleListboxNormal);
- if (local_style && local_style->m_transparent_background)
- ;
- else
- painter.clear();
- painter.clippop();
- painter.clip(rc&sel_clip);
- style.setStyle(painter, eWindowStyle::styleListboxSelected);
- if (pbackColorSelected)
+ if (pbackColor)
+ {
+ int color = PyInt_AsLong(pbackColor);
+ painter.setBackgroundColor(gRGB(color));
+ } // transparent background?
+ // if we have a local background color set, use that.
+ else if (local_style && local_style->m_background_color_set)
+ painter.setBackgroundColor(local_style->m_background_color);
+ if (!pbackColor && local_style && local_style->m_transparent_background)
+ ;
+ else
+ painter.clear();
+ painter.clippop();
+ selected = 0;
+ }
+ part = rc & sel_clip;
+ if (!part.empty())
{
- int color = PyInt_AsLong(pbackColorSelected);
- painter.setBackgroundColor(gRGB(color));
+ painter.clip(part);
+ style.setStyle(painter, eWindowStyle::styleListboxSelected);
+ if (pbackColorSelected)
+ {
+ int color = PyInt_AsLong(pbackColorSelected);
+ painter.setBackgroundColor(gRGB(color));
+ }
+ else if (local_style && local_style->m_background_color_selected_set)
+ painter.setBackgroundColor(local_style->m_background_color_selected);
+ painter.clear();
+ painter.clippop();
+ selected = 1;
}
- else if (local_style && local_style->m_background_color_selected_set)
- painter.setBackgroundColor(local_style->m_background_color_selected);
- painter.clear();
- painter.clippop();
}
else
{
else if (local_style && local_style->m_background_color_set)
painter.setBackgroundColor(local_style->m_background_color);
/* if we have no transparent background */
- if (local_style && local_style->m_transparent_background)
+ if (!pbackColor && local_style && local_style->m_transparent_background)
;
else
painter.clear();
local_style = m_listbox->getLocalStyle();
painter.clip(itemregion);
-
clearRegion(painter, style, local_style, ePyObject(), ePyObject(), ePyObject(), ePyObject(), selected, itemregion, sel_clip);
ePyObject items;
for (int i = 1; i < size; ++i)
{
ePyObject item = PyList_GET_ITEM(items, i); // borrowed reference!
- bool reset_colors=false;
if (!item)
{
eRect rect(x+bwidth, y+bwidth, width-bwidth*2, height-bwidth*2);
painter.clip(rect);
- if (pbackColor || pbackColorSelected || pforeColor || pforeColorSelected)
+
{
gRegion rc(rect);
clearRegion(painter, style, local_style, pforeColor, pforeColorSelected, pbackColor, pbackColorSelected, selected, rc, sel_clip);
- reset_colors=true;
}
painter.setFont(m_font[fnt]);
eRect rect(x, y, width, height);
painter.clip(rect);
- if (pbackColor || pbackColorSelected || pforeColor || pforeColorSelected)
+
{
gRegion rc(rect);
clearRegion(painter, style, local_style, pforeColor, pforeColorSelected, pbackColor, pbackColorSelected, selected, rc, sel_clip);
- reset_colors=true;
}
// border
eRect rect(x, y, width, height);
painter.clip(rect);
- if (pbackColor || pbackColorSelected)
+
{
gRegion rc(rect);
clearRegion(painter, style, local_style, ePyObject(), ePyObject(), pbackColor, pbackColorSelected, selected, rc, sel_clip);
- reset_colors=true;
}
-
+
painter.blit(pixmap, rect.topLeft(), rect, (type == TYPE_PIXMAP_ALPHATEST) ? gPainter::BT_ALPHATEST : 0);
painter.clippop();
break;
eWarning("eListboxPythonMultiContent received unknown type (%d)", type);
goto error_out;
}
- if (reset_colors)
- style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
}
}