mirror of https://github.com/procxx/kepka.git
Show "choose from user" box when typing "from:".
This commit is contained in:
parent
ce51abd9d0
commit
0a6535ea94
|
@ -37,6 +37,14 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
|
||||||
#include "window/window_controller.h"
|
#include "window/window_controller.h"
|
||||||
#include "profile/profile_channel_controllers.h"
|
#include "profile/profile_channel_controllers.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
QString SwitchToChooseFromQuery() {
|
||||||
|
return qsl("from:");
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
class DialogsWidget::UpdateButton : public Ui::RippleButton {
|
class DialogsWidget::UpdateButton : public Ui::RippleButton {
|
||||||
public:
|
public:
|
||||||
UpdateButton(QWidget *parent);
|
UpdateButton(QWidget *parent);
|
||||||
|
@ -809,6 +817,16 @@ void DialogsWidget::onFilterUpdate(bool force) {
|
||||||
_peerSearchQueries.clear();
|
_peerSearchQueries.clear();
|
||||||
_peerSearchQuery = QString();
|
_peerSearchQuery = QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!_chooseFromUser->isHiddenOrHiding() || _searchFromUser) {
|
||||||
|
auto switchToChooseFrom = SwitchToChooseFromQuery();
|
||||||
|
if (_lastFilterText != switchToChooseFrom
|
||||||
|
&& switchToChooseFrom.startsWith(_lastFilterText)
|
||||||
|
&& filterText == switchToChooseFrom) {
|
||||||
|
showSearchFrom();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_lastFilterText = filterText;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogsWidget::searchInPeer(PeerData *peer) {
|
void DialogsWidget::searchInPeer(PeerData *peer) {
|
||||||
|
@ -836,6 +854,10 @@ void DialogsWidget::setSearchInPeer(PeerData *peer, UserData *from) {
|
||||||
clearSearchCache();
|
clearSearchCache();
|
||||||
}
|
}
|
||||||
_inner->searchInPeer(_searchInPeer, _searchFromUser);
|
_inner->searchInPeer(_searchInPeer, _searchFromUser);
|
||||||
|
if (_searchFromUser && _lastFilterText == SwitchToChooseFromQuery()) {
|
||||||
|
onCancelSearch();
|
||||||
|
}
|
||||||
|
_filter->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogsWidget::clearSearchCache() {
|
void DialogsWidget::clearSearchCache() {
|
||||||
|
|
|
@ -198,6 +198,7 @@ private:
|
||||||
PeerData *_searchInPeer = nullptr;
|
PeerData *_searchInPeer = nullptr;
|
||||||
PeerData *_searchInMigrated = nullptr;
|
PeerData *_searchInMigrated = nullptr;
|
||||||
UserData *_searchFromUser = nullptr;
|
UserData *_searchFromUser = nullptr;
|
||||||
|
QString _lastFilterText;
|
||||||
|
|
||||||
QTimer _searchTimer;
|
QTimer _searchTimer;
|
||||||
|
|
||||||
|
|
|
@ -732,9 +732,10 @@ void MainWindow::noLayerStack(LayerStackWidget *was) {
|
||||||
|
|
||||||
void MainWindow::layerFinishedHide(LayerStackWidget *was) {
|
void MainWindow::layerFinishedHide(LayerStackWidget *was) {
|
||||||
if (was == _layerBg) {
|
if (was == _layerBg) {
|
||||||
|
auto resetFocus = (was == App::wnd()->focusWidget());
|
||||||
destroyLayerDelayed();
|
destroyLayerDelayed();
|
||||||
InvokeQueued(this, [this] {
|
InvokeQueued(this, [this, resetFocus] {
|
||||||
setInnerFocus();
|
if (resetFocus) setInnerFocus();
|
||||||
checkHistoryActivation();
|
checkHistoryActivation();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue