Ensure there is some space between the separator handle dots and the separator edge

This commit is contained in:
Kovid Goyal 2022-11-13 09:01:39 +05:30
parent 87ca4d6fe2
commit 0b0070167d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -292,12 +292,12 @@ void CalibreStyle::drawControl(ControlElement element, const QStyleOption *optio
painter->setRenderHint(QPainter::Antialiasing, true); painter->setRenderHint(QPainter::Antialiasing, true);
const bool horizontal = (option->state & QStyle::State_Horizontal) ? true : false; const bool horizontal = (option->state & QStyle::State_Horizontal) ? true : false;
static const int dot_count = 4; static const int dot_count = 4;
const int handle_width = pixelMetric(PM_SplitterWidth, option, widget); const float handle_width = pixelMetric(PM_SplitterWidth, option, widget);
const int available_diameter = horizontal ? option->rect.width() : option->rect.height(); const float available_diameter = (horizontal ? option->rect.width() : option->rect.height());
const int dot_size = std::max(1, std::min(handle_width, available_diameter)); const float dot_size = std::max(1.f, std::min(handle_width, available_diameter - 1));
const int start_point = (horizontal ? option->rect.height()/2 : option->rect.width()/2) - (dot_count*dot_size/2); const int start_point = (horizontal ? option->rect.height()/2 : option->rect.width()/2) - (dot_count*dot_size/2);
const int offset = (available_diameter - dot_size) / 2; const float offset = (available_diameter - dot_size) / 2.f;
QRect dot_rect = QRect(option->rect.left(), option->rect.top(), dot_size, dot_size); QRectF dot_rect = QRectF(option->rect.left(), option->rect.top(), dot_size, dot_size);
if (horizontal) dot_rect.moveLeft(dot_rect.left() + offset); if (horizontal) dot_rect.moveLeft(dot_rect.left() + offset);
else dot_rect.moveTop(dot_rect.top() + offset); else dot_rect.moveTop(dot_rect.top() + offset);
for (int i = 0; i < dot_count; i++) { for (int i = 0; i < dot_count; i++) {