From ce51abd9d07ac4ea57691bd982f9e4fc9cf4d5f5 Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Sun, 6 Aug 2017 19:11:22 +0200 Subject: [PATCH] Change dialogs filter text area for two icons. --- Telegram/SourceFiles/dialogs/dialogs_widget.cpp | 14 +++++++++++--- Telegram/SourceFiles/ui/widgets/input_fields.cpp | 15 +++++++++++---- Telegram/SourceFiles/ui/widgets/input_fields.h | 2 ++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index ed62d77e8..5780a1211 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -921,11 +921,19 @@ void DialogsWidget::updateJumpToDateVisibility(bool fast) { } void DialogsWidget::updateSearchFromVisibility(bool fast) { - auto searchFromUserVisible = _searchInPeer && (_searchInPeer->isChat() || _searchInPeer->isMegagroup()) && !_searchFromUser; + auto visible = _searchInPeer && (_searchInPeer->isChat() || _searchInPeer->isMegagroup()) && !_searchFromUser; + auto changed = (visible == _chooseFromUser->isHiddenOrHiding()); if (fast) { - _chooseFromUser->toggleFast(searchFromUserVisible); + _chooseFromUser->toggleFast(visible); } else { - _chooseFromUser->toggleAnimated(searchFromUserVisible); + _chooseFromUser->toggleAnimated(visible); + } + if (changed) { + auto margins = st::dialogsFilter.textMrg; + if (visible) { + margins.setRight(margins.right() + _chooseFromUser->width()); + } + _filter->setTextMrg(margins); } } diff --git a/Telegram/SourceFiles/ui/widgets/input_fields.cpp b/Telegram/SourceFiles/ui/widgets/input_fields.cpp index c3f1297c8..13ad489d5 100644 --- a/Telegram/SourceFiles/ui/widgets/input_fields.cpp +++ b/Telegram/SourceFiles/ui/widgets/input_fields.cpp @@ -1470,7 +1470,8 @@ FlatInput::FlatInput(QWidget *parent, const style::FlatInput &st, base::lambda<Q , _oldtext(v) , _placeholderFactory(std::move(placeholderFactory)) , _placeholderVisible(!v.length()) -, _st(st) { +, _st(st) +, _textMrg(_st.textMrg) { setCursor(style::cur_text); resize(_st.width, _st.height); @@ -1564,8 +1565,14 @@ void FlatInput::touchEvent(QTouchEvent *e) { } } +void FlatInput::setTextMrg(const QMargins &textMrg) { + _textMrg = textMrg; + refreshPlaceholder(); + update(); +} + QRect FlatInput::getTextRect() const { - return rect().marginsRemoved(_st.textMrg + QMargins(-2, -1, -2, -1)); + return rect().marginsRemoved(_textMrg + QMargins(-2, -1, -2, -1)); } void FlatInput::paintEvent(QPaintEvent *e) { @@ -1635,7 +1642,7 @@ void FlatInput::setPlaceholder(base::lambda<QString()> placeholderFactory) { } void FlatInput::refreshPlaceholder() { - auto availw = width() - _st.textMrg.left() - _st.textMrg.right() - _st.phPos.x() - 1; + auto availw = width() - _textMrg.left() - _textMrg.right() - _st.phPos.x() - 1; auto placeholderText = _placeholderFactory ? _placeholderFactory() : QString(); if (_st.font->width(placeholderText) > availw) { _placeholder = _st.font->elided(placeholderText, availw); @@ -1683,7 +1690,7 @@ void FlatInput::inputMethodEvent(QInputMethodEvent *e) { } QRect FlatInput::placeholderRect() const { - return QRect(_st.textMrg.left() + _st.phPos.x(), _st.textMrg.top() + _st.phPos.y(), width() - _st.textMrg.left() - _st.textMrg.right(), height() - _st.textMrg.top() - _st.textMrg.bottom()); + return QRect(_textMrg.left() + _st.phPos.x(), _textMrg.top() + _st.phPos.y(), width() - _textMrg.left() - _textMrg.right(), height() - _textMrg.top() - _textMrg.bottom()); } void FlatInput::correctValue(const QString &was, QString &now) { diff --git a/Telegram/SourceFiles/ui/widgets/input_fields.h b/Telegram/SourceFiles/ui/widgets/input_fields.h index 1576fbb33..49f0d40f0 100644 --- a/Telegram/SourceFiles/ui/widgets/input_fields.h +++ b/Telegram/SourceFiles/ui/widgets/input_fields.h @@ -243,6 +243,7 @@ public: void setPlaceholder(base::lambda<QString()> placeholderFactory); QRect placeholderRect() const; + void setTextMrg(const QMargins &textMrg); QRect getTextRect() const; QSize sizeHint() const override; @@ -302,6 +303,7 @@ private: bool _lastPreEditTextNotEmpty = false; const style::FlatInput &_st; + QMargins _textMrg; QTimer _touchTimer; bool _touchPress, _touchRightButton, _touchMove;