int s = size();
if ( m_cursor >= s )
m_listbox->moveSelectionTo(s?s-1:0);
- m_listbox->invalidate();
+ else
+ m_listbox->invalidate();
}
}
{
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();
{
if (pforeColorSelected)
{
- int color = PyInt_AsLong(pforeColor);
+ int color = PyInt_AsLong(pforeColorSelected);
painter.setForegroundColor(gRGB(color));
}
/* if we have a local foreground color set, use that. */
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]);
int color = PyInt_AsLong(pborderColor);
painter.setForegroundColor(gRGB(color));
}
- else if (pforeColor) // reset to normal color
- style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
rect.setRect(x, y, width, bwidth);
painter.fill(rect);
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);
}
}
else
m_old_clip = m_clip = gRegion::invalidRegion();
}
+
+void eListboxPythonMultiContent::entryRemoved(int idx)
+{
+ if (m_listbox)
+ m_listbox->entryRemoved(idx);
+}