PRectangle ListBoxImpl::GetDesiredRect() { ListWidget *list = static_cast<ListWidget *>(wid); int rows = Length(); if (rows == 0 || rows > visibleRows) { rows = visibleRows; } int rowHeight = list->sizeHintForRow(0); int height = (rows * rowHeight) + (2 * list->frameWidth()); QStyle *style = QApplication::style(); int width = list->sizeHintForColumn(0) + (2 * list->frameWidth()); if (Length() > rows) { width += style->pixelMetric(QStyle::PM_ScrollBarExtent); } return PRectangle(0, 0, width, height); }
int ListBoxImpl::CaretFromEdge() { ListWidget *list = static_cast<ListWidget *>(wid); int maxIconWidth = 0; foreach (QPixmap im, images) { if (maxIconWidth < im.width()) maxIconWidth = im.width(); } // The '7' is from trial and error on Windows - there may be // a better programmatic way to find any padding factors. return maxIconWidth + (2 * list->frameWidth()) + 7; }