Support fractional border in rounded input field.

This commit is contained in:
John Preston 2023-07-18 20:44:53 +04:00
parent 1c0889f78a
commit 048156ecda
2 changed files with 8 additions and 7 deletions

View file

@ -1645,20 +1645,19 @@ void InputField::paintRoundSurrounding(
QRect clip, QRect clip,
float64 errorDegree, float64 errorDegree,
float64 focusedDegree) { float64 focusedDegree) {
const auto divide = _st.borderDenominator ? _st.borderDenominator : 1;
const auto border = _st.border / float64(divide);
const auto borderHalf = border / 2.;
auto pen = anim::pen(_st.borderFg, _st.borderFgActive, focusedDegree); auto pen = anim::pen(_st.borderFg, _st.borderFgActive, focusedDegree);
pen.setWidth(_st.border); pen.setWidthF(border);
p.setPen(pen); p.setPen(pen);
p.setBrush(anim::brush(_st.textBg, _st.textBgActive, focusedDegree)); p.setBrush(anim::brush(_st.textBg, _st.textBgActive, focusedDegree));
PainterHighQualityEnabler hq(p); PainterHighQualityEnabler hq(p);
const auto radius = _st.borderRadius - (_st.border / 2.); const auto radius = _st.borderRadius - borderHalf;
p.drawRoundedRect( p.drawRoundedRect(
QRectF(0, 0, width(), height()).marginsRemoved( QRectF(0, 0, width(), height()).marginsRemoved(
QMarginsF( QMarginsF(borderHalf, borderHalf, borderHalf, borderHalf)),
_st.border / 2.,
_st.border / 2.,
_st.border / 2.,
_st.border / 2.)),
radius, radius,
radius); radius);
} }

View file

@ -285,6 +285,7 @@ InputField {
border: pixels; border: pixels;
borderActive: pixels; borderActive: pixels;
borderRadius: pixels; borderRadius: pixels;
borderDenominator: int;
font: font; font: font;
menu: PopupMenu; menu: PopupMenu;
@ -881,6 +882,7 @@ defaultInputField: InputField {
border: 1px; border: 1px;
borderActive: 2px; borderActive: 2px;
borderRadius: 0px; borderRadius: 0px;
borderDenominator: 1;
font: boxTextFont; font: boxTextFont;
menu: defaultPopupMenu; menu: defaultPopupMenu;