mirror of
https://github.com/telegramdesktop/tdesktop
synced 2024-12-26 00:12:25 +00:00
Removed chats filters strip from forward box while search.
This commit is contained in:
parent
b0b37172ce
commit
a74ee911b3
@ -120,6 +120,9 @@ void PeerListBox::createMultiSelect() {
|
||||
content()->submitted();
|
||||
});
|
||||
_select->entity()->setQueryChangedCallback([=](const QString &query) {
|
||||
if (_customQueryChangedCallback) {
|
||||
_customQueryChangedCallback(query);
|
||||
}
|
||||
searchQueryChanged(query);
|
||||
});
|
||||
_select->entity()->setItemRemovedCallback([=](uint64 itemId) {
|
||||
@ -138,6 +141,10 @@ void PeerListBox::createMultiSelect() {
|
||||
_select->moveToLeft(0, 0);
|
||||
}
|
||||
|
||||
void PeerListBox::appendQueryChangedCallback(Fn<void(QString)> callback) {
|
||||
_customQueryChangedCallback = std::move(callback);
|
||||
}
|
||||
|
||||
void PeerListBox::setAddedTopScrollSkip(int skip) {
|
||||
_addedTopScrollSkip = skip;
|
||||
_scrollBottomFixed = false;
|
||||
|
@ -1137,6 +1137,8 @@ public:
|
||||
|
||||
void showFinished() override;
|
||||
|
||||
void appendQueryChangedCallback(Fn<void(QString)>);
|
||||
|
||||
protected:
|
||||
void prepare() override;
|
||||
void setInnerFocus() override;
|
||||
@ -1174,6 +1176,7 @@ private:
|
||||
object_ptr<Ui::SlideWrap<Ui::MultiSelect>> _select = { nullptr };
|
||||
|
||||
const std::shared_ptr<Main::SessionShow> _show;
|
||||
Fn<void(QString)> _customQueryChangedCallback;
|
||||
std::unique_ptr<PeerListController> _controller;
|
||||
Fn<void(PeerListBox*)> _init;
|
||||
bool _scrollBottomFixed = false;
|
||||
|
@ -2234,13 +2234,29 @@ QPointer<Ui::BoxContent> ShowForwardMessagesBox(
|
||||
auto init = [=](not_null<ListBox*> box) {
|
||||
controllerRaw->setSearchNoResultsText(
|
||||
tr::lng_bot_chats_not_found(tr::now));
|
||||
const auto lastFilterId = box->lifetime().make_state<FilterId>(0);
|
||||
const auto chatsFilters = Ui::AddChatFiltersTabsStrip(
|
||||
box,
|
||||
session,
|
||||
[=](FilterId id) { applyFilter(box, id); });
|
||||
[=](FilterId id) {
|
||||
*lastFilterId = id;
|
||||
applyFilter(box, id);
|
||||
});
|
||||
chatsFilters->lower();
|
||||
chatsFilters->heightValue() | rpl::start_with_next([box](int h) {
|
||||
box->setAddedTopScrollSkip(h);
|
||||
rpl::combine(
|
||||
chatsFilters->heightValue(),
|
||||
rpl::producer<bool>([=](auto consumer) {
|
||||
auto lifetime = rpl::lifetime();
|
||||
consumer.put_next(false);
|
||||
box->appendQueryChangedCallback([=](const QString &q) {
|
||||
const auto hasQuery = !q.isEmpty();
|
||||
applyFilter(box, hasQuery ? 0 : (*lastFilterId));
|
||||
consumer.put_next_copy(hasQuery);
|
||||
});
|
||||
return lifetime;
|
||||
})
|
||||
) | rpl::start_with_next([box](int h, bool hasQuery) {
|
||||
box->setAddedTopScrollSkip(hasQuery ? 0 : h);
|
||||
}, box->lifetime());
|
||||
box->multiSelectHeightValue() | rpl::start_with_next([=](int h) {
|
||||
chatsFilters->moveToLeft(0, h);
|
||||
|
Loading…
Reference in New Issue
Block a user