mirror of
https://github.com/vale981/tdesktop
synced 2025-03-06 10:11:41 -05:00
some fixes in navigation
This commit is contained in:
parent
a5d2558f5a
commit
00f0a70454
6 changed files with 47 additions and 17 deletions
|
@ -192,9 +192,6 @@ void DialogsListWidget::peopleResultPaint(UserData *user, QPainter &p, int32 w,
|
|||
}
|
||||
|
||||
void DialogsListWidget::activate() {
|
||||
if (_state == DefaultState && !sel) {
|
||||
selectSkip(1);
|
||||
}
|
||||
}
|
||||
|
||||
void DialogsListWidget::mouseMoveEvent(QMouseEvent *e) {
|
||||
|
@ -728,6 +725,10 @@ DialogsListWidget::State DialogsListWidget::state() const {
|
|||
return _state;
|
||||
}
|
||||
|
||||
bool DialogsListWidget::hasFilteredResults() const {
|
||||
return !filterResults.isEmpty();
|
||||
}
|
||||
|
||||
void DialogsListWidget::clearFilter() {
|
||||
if (_state == FilteredState || _state == SearchedState) {
|
||||
_state = DefaultState;
|
||||
|
@ -1591,8 +1592,13 @@ void DialogsWidget::keyPressEvent(QKeyEvent *e) {
|
|||
if (e->key() == Qt::Key_Escape) {
|
||||
e->ignore();
|
||||
} else if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) {
|
||||
if (!list.choosePeer() && (list.state() == DialogsListWidget::SearchedState || list.state() == DialogsListWidget::FilteredState)) {
|
||||
onSearchMessages();
|
||||
if (!list.choosePeer()) {
|
||||
if (list.state() == DialogsListWidget::DefaultState || list.state() == DialogsListWidget::SearchedState || (list.state() == DialogsListWidget::FilteredState && list.hasFilteredResults())) {
|
||||
list.selectSkip(1);
|
||||
list.choosePeer();
|
||||
} else {
|
||||
onSearchMessages();
|
||||
}
|
||||
}
|
||||
} else if (e->key() == Qt::Key_Down) {
|
||||
list.setMouseSel(false);
|
||||
|
|
|
@ -86,6 +86,7 @@ public:
|
|||
};
|
||||
void setState(State newState);
|
||||
State state() const;
|
||||
bool hasFilteredResults() const;
|
||||
|
||||
void onFilterUpdate(QString newFilter, bool force = false);
|
||||
void itemRemoved(HistoryItem *item);
|
||||
|
|
|
@ -548,6 +548,14 @@ void ScrollArea::moveEvent(QMoveEvent *e) {
|
|||
emit geometryChanged();
|
||||
}
|
||||
|
||||
void ScrollArea::keyPressEvent(QKeyEvent *e) {
|
||||
if ((e->key() == Qt::Key_Up || e->key() == Qt::Key_Down) && e->modifiers().testFlag(Qt::AltModifier)) {
|
||||
e->ignore();
|
||||
} else {
|
||||
QScrollArea::keyPressEvent(e);
|
||||
}
|
||||
}
|
||||
|
||||
void ScrollArea::enterEvent(QEvent *e) {
|
||||
if (_st.hiding) {
|
||||
hor.hideTimeout(_st.hiding);
|
||||
|
|
|
@ -113,6 +113,7 @@ public:
|
|||
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
void moveEvent(QMoveEvent *e);
|
||||
void keyPressEvent(QKeyEvent *e);
|
||||
|
||||
void enterEvent(QEvent *e);
|
||||
void leaveEvent(QEvent *e);
|
||||
|
|
|
@ -884,6 +884,8 @@ void HistoryList::keyPressEvent(QKeyEvent *e) {
|
|||
copySelectedText();
|
||||
} else if (e == QKeySequence::Delete) {
|
||||
historyWidget->onDeleteSelected();
|
||||
} else {
|
||||
e->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1723,6 +1725,9 @@ void HistoryWidget::typingDone(const MTPBool &result, mtpRequestId req) {
|
|||
}
|
||||
|
||||
void HistoryWidget::activate() {
|
||||
if (hist && !_histInited) {
|
||||
checkUnreadLoaded();
|
||||
}
|
||||
if (App::main()->selectingPeer()) {
|
||||
if (hiderOffered) {
|
||||
App::main()->focusPeerSelect();
|
||||
|
@ -3273,7 +3278,10 @@ void HistoryWidget::updateScrollColors() {
|
|||
void HistoryWidget::updateListSize(int32 addToY, bool initial, bool loadedDown, HistoryItem *resizedItem) {
|
||||
if (!hist || (!_histInited && !initial)) return;
|
||||
|
||||
if (!App::wnd()->isVisible()) return; // scrollTopMax etc are not working after recountHeight()
|
||||
if (!isVisible()) {
|
||||
if (initial) _histInited = false;
|
||||
return; // scrollTopMax etc are not working after recountHeight()
|
||||
}
|
||||
|
||||
int32 newScrollHeight = height() - (hist->readyForWork() && (!histPeer->chat || !histPeer->asChat()->forbidden) ? (_field.height() + 2 * st::sendPadding) : 0);
|
||||
bool wasAtBottom = _scroll.scrollTop() + 1 > _scroll.scrollTopMax(), needResize = _scroll.width() != width() || _scroll.height() != newScrollHeight;
|
||||
|
@ -3375,7 +3383,7 @@ void HistoryWidget::keyPressEvent(QKeyEvent *e) {
|
|||
App::main()->peerAfter(histPeer, hist ? hist->activeMsgId : 0, after, afterMsgId);
|
||||
if (after) App::main()->showPeer(after->id, afterMsgId);
|
||||
} else {
|
||||
_scroll.scrollToY(_scroll.scrollTop() + _scroll.height());
|
||||
_scroll.keyPressEvent(e);
|
||||
}
|
||||
} else if (e->key() == Qt::Key_PageUp) {
|
||||
if ((e->modifiers() & Qt::ControlModifier) || (e->modifiers() & Qt::MetaModifier)) {
|
||||
|
@ -3384,7 +3392,7 @@ void HistoryWidget::keyPressEvent(QKeyEvent *e) {
|
|||
App::main()->peerBefore(histPeer, hist ? hist->activeMsgId : 0, before, beforeMsgId);
|
||||
if (before) App::main()->showPeer(before->id, beforeMsgId);
|
||||
} else {
|
||||
_scroll.scrollToY(_scroll.scrollTop() - _scroll.height());
|
||||
_scroll.keyPressEvent(e);
|
||||
}
|
||||
} else if (e->key() == Qt::Key_Down) {
|
||||
if (e->modifiers() & Qt::AltModifier) {
|
||||
|
@ -3393,7 +3401,7 @@ void HistoryWidget::keyPressEvent(QKeyEvent *e) {
|
|||
App::main()->peerAfter(histPeer, hist ? hist->activeMsgId : 0, after, afterMsgId);
|
||||
if (after) App::main()->showPeer(after->id, afterMsgId);
|
||||
} else if (!(e->modifiers() & (Qt::ShiftModifier | Qt::MetaModifier | Qt::ControlModifier))) {
|
||||
_scroll.scrollToY(_scroll.scrollTop() + _scroll.height() / 10);
|
||||
_scroll.keyPressEvent(e);
|
||||
}
|
||||
} else if (e->key() == Qt::Key_Up) {
|
||||
if (e->modifiers() & Qt::AltModifier) {
|
||||
|
@ -3402,7 +3410,7 @@ void HistoryWidget::keyPressEvent(QKeyEvent *e) {
|
|||
App::main()->peerBefore(histPeer, hist ? hist->activeMsgId : 0, before, beforeMsgId);
|
||||
if (before) App::main()->showPeer(before->id, beforeMsgId);
|
||||
} else if (!(e->modifiers() & (Qt::ShiftModifier | Qt::MetaModifier | Qt::ControlModifier))) {
|
||||
_scroll.scrollToY(_scroll.scrollTop() - _scroll.height() / 10);
|
||||
_scroll.keyPressEvent(e);
|
||||
}
|
||||
} else if ((e->key() == Qt::Key_Tab || e->key() == Qt::Key_Backtab) && ((e->modifiers() & Qt::ControlModifier) || (e->modifiers() & Qt::MetaModifier))) {
|
||||
PeerData *p = 0;
|
||||
|
|
|
@ -820,6 +820,7 @@ void MainWidget::stopAnimActive() {
|
|||
|
||||
void MainWidget::searchMessages(const QString &query) {
|
||||
dialogs.searchMessages(query);
|
||||
if (!cWideMode()) onShowDialogs();
|
||||
}
|
||||
|
||||
void MainWidget::preloadOverviews(PeerData *peer) {
|
||||
|
@ -1425,7 +1426,7 @@ void MainWidget::showPeer(quint64 peerId, qint32 msgId, bool back, bool force) {
|
|||
hider = 0;
|
||||
}
|
||||
if (force || !selectingPeer()) {
|
||||
if ((history.isHidden() && (profile || overview)) || !cWideMode()) {
|
||||
if (!animating() && ((history.isHidden() && (profile || overview)) || (!cWideMode() && (history.isHidden() || !peerId)))) {
|
||||
dialogs.enableShadow(false);
|
||||
if (peerId) {
|
||||
_topBar.enableShadow(false);
|
||||
|
@ -1469,9 +1470,11 @@ void MainWidget::showPeer(quint64 peerId, qint32 msgId, bool back, bool force) {
|
|||
if (onlyDialogs) {
|
||||
_topBar.hide();
|
||||
history.hide();
|
||||
dialogs.show();
|
||||
if (!animCache.isNull()) {
|
||||
dialogs.animShow(animCache);
|
||||
if (!animating()) {
|
||||
dialogs.show();
|
||||
if (!animCache.isNull()) {
|
||||
dialogs.animShow(animCache);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (noPeer) {
|
||||
|
@ -1479,9 +1482,11 @@ void MainWidget::showPeer(quint64 peerId, qint32 msgId, bool back, bool force) {
|
|||
resizeEvent(0);
|
||||
}
|
||||
if (!cWideMode()) dialogs.hide();
|
||||
history.show();
|
||||
if (!animCache.isNull()) {
|
||||
history.animShow(animCache, animTopBarCache, back);
|
||||
if (!animating()) {
|
||||
history.show();
|
||||
if (!animCache.isNull()) {
|
||||
history.animShow(animCache, animTopBarCache, back);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2077,6 +2082,7 @@ void MainWidget::onPeerShown(PeerData *peer) {
|
|||
_topBar.hide();
|
||||
}
|
||||
resizeEvent(0);
|
||||
if (animating()) _topBar.hide();
|
||||
}
|
||||
|
||||
void MainWidget::onUpdateNotifySettings() {
|
||||
|
|
Loading…
Add table
Reference in a new issue