@Override
Rectangle computeTrim(Theme theme, GC gc) {
if (OS.COMCTL32_MAJOR >= 6 && OS.IsAppThemed ()) {
int hTheme = OS.OpenThemeData(0, getClassId());
RECT rect = new RECT ();
rect.left = clientArea.x;
rect.right = clientArea.x + clientArea.width;
rect.top = clientArea.y;
rect.bottom = clientArea.y + clientArea.height;
RECT extent = new RECT ();
int[] part = getPartId(DrawData.WIDGET_WHOLE);
OS.GetThemeBackgroundExtent(hTheme, gc.handle, part[0], part[1], rect, extent);
OS.CloseThemeData(hTheme);
if ((style & SWT.DROP_DOWN) != 0) {
SIZE size = new SIZE();
part = getPartId(DrawData.TOOLITEM_ARROW);
OS.GetThemePartSize(hTheme, 0, part[0], part[1], null, OS.TS_TRUE, size);
extent.right = Math.max(extent.left, extent.right + size.cx);
} else {
extent.left -= INSET;
extent.top -= INSET;
extent.right += INSET;
extent.bottom += INSET;
}
return new Rectangle(extent.left, extent.top, extent.right - extent.left, extent.bottom - extent.top);
}
return new Rectangle(0, 0, 0, 0);
}