Use setContentMargins in QLineEdit-based input fields
This commit is contained in:
parent
1f89e8bd53
commit
f2c77daccc
2 changed files with 12 additions and 32 deletions
|
|
@ -617,7 +617,6 @@ private:
|
|||
|
||||
};
|
||||
|
||||
template <typename InputClass>
|
||||
class InputStyle : public QCommonStyle {
|
||||
public:
|
||||
InputStyle() {
|
||||
|
|
@ -626,22 +625,13 @@ public:
|
|||
|
||||
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override {
|
||||
}
|
||||
QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = nullptr) const override {
|
||||
switch (r) {
|
||||
case SE_LineEditContents:
|
||||
const auto w = widget ? qobject_cast<const InputClass*>(widget) : nullptr;
|
||||
return w ? w->getTextRect() : QCommonStyle::subElementRect(r, opt, widget);
|
||||
break;
|
||||
}
|
||||
return QCommonStyle::subElementRect(r, opt, widget);
|
||||
}
|
||||
|
||||
static InputStyle<InputClass> *instance() {
|
||||
static InputStyle *instance() {
|
||||
if (!_instance) {
|
||||
if (!QGuiApplication::instance()) {
|
||||
return nullptr;
|
||||
}
|
||||
_instance = new InputStyle<InputClass>();
|
||||
_instance = new InputStyle();
|
||||
}
|
||||
return _instance;
|
||||
}
|
||||
|
|
@ -651,12 +641,11 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
static InputStyle<InputClass> *_instance;
|
||||
static InputStyle *_instance;
|
||||
|
||||
};
|
||||
|
||||
template <typename InputClass>
|
||||
InputStyle<InputClass> *InputStyle<InputClass>::_instance = nullptr;
|
||||
InputStyle *InputStyle::_instance = nullptr;
|
||||
|
||||
template <typename Iterator>
|
||||
QString AccumulateText(Iterator begin, Iterator end) {
|
||||
|
|
@ -1000,9 +989,10 @@ FlatInput::FlatInput(
|
|||
Integration::Instance().textActionsUpdated();
|
||||
});
|
||||
|
||||
setStyle(InputStyle<FlatInput>::instance());
|
||||
setStyle(InputStyle::instance());
|
||||
QLineEdit::setTextMargins(0, 0, 0, 0);
|
||||
setContentsMargins(0, 0, 0, 0);
|
||||
setContentsMargins(_textMrg + QMargins(-2, -1, -2, -1));
|
||||
setFrame(false);
|
||||
|
||||
setAttribute(Qt::WA_AcceptTouchEvents);
|
||||
_touchTimer.setSingleShot(true);
|
||||
|
|
@ -1083,14 +1073,11 @@ void FlatInput::touchEvent(QTouchEvent *e) {
|
|||
|
||||
void FlatInput::setTextMrg(const QMargins &textMrg) {
|
||||
_textMrg = textMrg;
|
||||
setContentsMargins(_textMrg + QMargins(-2, -1, -2, -1));
|
||||
refreshPlaceholder(_placeholderFull.current());
|
||||
update();
|
||||
}
|
||||
|
||||
QRect FlatInput::getTextRect() const {
|
||||
return rect().marginsRemoved(_textMrg + QMargins(-2, -1, -2, -1));
|
||||
}
|
||||
|
||||
void FlatInput::finishAnimations() {
|
||||
_placeholderFocusedAnimation.stop();
|
||||
_placeholderVisibleAnimation.stop();
|
||||
|
|
@ -3787,9 +3774,10 @@ MaskedInputField::MaskedInputField(
|
|||
Integration::Instance().textActionsUpdated();
|
||||
});
|
||||
|
||||
setStyle(InputStyle<MaskedInputField>::instance());
|
||||
setStyle(InputStyle::instance());
|
||||
QLineEdit::setTextMargins(0, 0, 0, 0);
|
||||
setContentsMargins(0, 0, 0, 0);
|
||||
setContentsMargins(_textMargins + QMargins(-2, -1, -2, -1));
|
||||
setFrame(false);
|
||||
|
||||
setAttribute(Qt::WA_AcceptTouchEvents);
|
||||
_touchTimer.setSingleShot(true);
|
||||
|
|
@ -3837,6 +3825,7 @@ int MaskedInputField::borderAnimationStart() const {
|
|||
|
||||
void MaskedInputField::setTextMargins(const QMargins &mrg) {
|
||||
_textMargins = mrg;
|
||||
setContentsMargins(_textMargins + QMargins(-2, -1, -2, -1));
|
||||
refreshPlaceholder(_placeholderFull.current());
|
||||
}
|
||||
|
||||
|
|
@ -3901,10 +3890,6 @@ void MaskedInputField::touchEvent(QTouchEvent *e) {
|
|||
}
|
||||
}
|
||||
|
||||
QRect MaskedInputField::getTextRect() const {
|
||||
return rect().marginsRemoved(_textMargins + QMargins(-2, -1, -2, -1));
|
||||
}
|
||||
|
||||
void MaskedInputField::paintEvent(QPaintEvent *e) {
|
||||
Painter p(this);
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@ enum class InputSubmitSettings {
|
|||
};
|
||||
|
||||
class FlatInput : public RpWidgetBase<QLineEdit> {
|
||||
// The Q_OBJECT meta info is used for qobject_cast!
|
||||
Q_OBJECT
|
||||
|
||||
using Parent = RpWidgetBase<QLineEdit>;
|
||||
|
|
@ -74,7 +73,6 @@ public:
|
|||
void finishAnimations();
|
||||
|
||||
void setTextMrg(const QMargins &textMrg);
|
||||
QRect getTextRect() const;
|
||||
|
||||
QSize sizeHint() const override;
|
||||
QSize minimumSizeHint() const override;
|
||||
|
|
@ -557,7 +555,6 @@ private:
|
|||
};
|
||||
|
||||
class MaskedInputField : public RpWidgetBase<QLineEdit> {
|
||||
// The Q_OBJECT meta info is used for qobject_cast!
|
||||
Q_OBJECT
|
||||
|
||||
using Parent = RpWidgetBase<QLineEdit>;
|
||||
|
|
@ -572,8 +569,6 @@ public:
|
|||
void showErrorNoFocus();
|
||||
void hideError();
|
||||
|
||||
QRect getTextRect() const;
|
||||
|
||||
QSize sizeHint() const override;
|
||||
QSize minimumSizeHint() const override;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue