mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Don't show empty top bar selections.
This commit is contained in:
parent
9be47f0870
commit
154c0e6bb2
2 changed files with 35 additions and 20 deletions
|
@ -266,11 +266,11 @@ void TopBarWidget::setChooseForReportReason(
|
||||||
updateControlsVisibility();
|
updateControlsVisibility();
|
||||||
updateControlsGeometry();
|
updateControlsGeometry();
|
||||||
update();
|
update();
|
||||||
if (wasNoReason != nowNoReason && _selectedCount > 0) {
|
if (wasNoReason != nowNoReason && showSelectedState()) {
|
||||||
toggleSelectedControls(false);
|
toggleSelectedControls(false);
|
||||||
finishAnimating();
|
finishAnimating();
|
||||||
}
|
}
|
||||||
setCursor((nowNoReason && !_selectedCount)
|
setCursor((nowNoReason && !showSelectedState())
|
||||||
? style::cur_pointer
|
? style::cur_pointer
|
||||||
: style::cur_default);
|
: style::cur_default);
|
||||||
}
|
}
|
||||||
|
@ -584,9 +584,9 @@ QRect TopBarWidget::getMembersShowAreaGeometry() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TopBarWidget::mousePressEvent(QMouseEvent *e) {
|
void TopBarWidget::mousePressEvent(QMouseEvent *e) {
|
||||||
auto handleClick = (e->button() == Qt::LeftButton)
|
const auto handleClick = (e->button() == Qt::LeftButton)
|
||||||
&& (e->pos().y() < st::topBarHeight)
|
&& (e->pos().y() < st::topBarHeight)
|
||||||
&& !_selectedCount
|
&& !showSelectedState()
|
||||||
&& !_chooseForReportReason;
|
&& !_chooseForReportReason;
|
||||||
if (handleClick) {
|
if (handleClick) {
|
||||||
if (_animatingMode && _back->rect().contains(e->pos())) {
|
if (_animatingMode && _back->rect().contains(e->pos())) {
|
||||||
|
@ -924,7 +924,7 @@ void TopBarWidget::updateControlsVisibility() {
|
||||||
void TopBarWidget::updateMembersShowArea() {
|
void TopBarWidget::updateMembersShowArea() {
|
||||||
const auto membersShowAreaNeeded = [&] {
|
const auto membersShowAreaNeeded = [&] {
|
||||||
const auto peer = _activeChat.key.peer();
|
const auto peer = _activeChat.key.peer();
|
||||||
if ((_selectedCount > 0) || !peer) {
|
if (showSelectedState() || !peer) {
|
||||||
return false;
|
return false;
|
||||||
} else if (const auto chat = peer->asChat()) {
|
} else if (const auto chat = peer->asChat()) {
|
||||||
return chat->amIn();
|
return chat->amIn();
|
||||||
|
@ -949,44 +949,58 @@ void TopBarWidget::updateMembersShowArea() {
|
||||||
_membersShowArea->setGeometry(getMembersShowAreaGeometry());
|
_membersShowArea->setGeometry(getMembersShowAreaGeometry());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TopBarWidget::showSelectedState() const {
|
||||||
|
return (_selectedCount > 0)
|
||||||
|
&& (_canDelete || _canForward || _canSendNow);
|
||||||
|
}
|
||||||
|
|
||||||
void TopBarWidget::showSelected(SelectedState state) {
|
void TopBarWidget::showSelected(SelectedState state) {
|
||||||
auto canDelete = (state.count > 0 && state.count == state.canDeleteCount);
|
auto canDelete = (state.count > 0 && state.count == state.canDeleteCount);
|
||||||
auto canForward = (state.count > 0 && state.count == state.canForwardCount);
|
auto canForward = (state.count > 0 && state.count == state.canForwardCount);
|
||||||
auto canSendNow = (state.count > 0 && state.count == state.canSendNowCount);
|
auto canSendNow = (state.count > 0 && state.count == state.canSendNowCount);
|
||||||
if (_selectedCount == state.count && _canDelete == canDelete && _canForward == canForward && _canSendNow == canSendNow) {
|
auto count = (!canDelete && !canForward && !canSendNow) ? 0 : state.count;
|
||||||
|
if (_selectedCount == count
|
||||||
|
&& _canDelete == canDelete
|
||||||
|
&& _canForward == canForward
|
||||||
|
&& _canSendNow == canSendNow) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state.count == 0) {
|
if (count == 0) {
|
||||||
// Don't change the visible buttons if the selection is cancelled.
|
// Don't change the visible buttons if the selection is cancelled.
|
||||||
canDelete = _canDelete;
|
canDelete = _canDelete;
|
||||||
canForward = _canForward;
|
canForward = _canForward;
|
||||||
canSendNow = _canSendNow;
|
canSendNow = _canSendNow;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto wasSelected = (_selectedCount > 0);
|
const auto wasSelectedState = showSelectedState();
|
||||||
_selectedCount = state.count;
|
const auto visibilityChanged = (_canDelete != canDelete)
|
||||||
if (_selectedCount > 0) {
|
|| (_canForward != canForward)
|
||||||
|
|| (_canSendNow != canSendNow);
|
||||||
|
_selectedCount = count;
|
||||||
|
_canDelete = canDelete;
|
||||||
|
_canForward = canForward;
|
||||||
|
_canSendNow = canSendNow;
|
||||||
|
const auto nowSelectedState = showSelectedState();
|
||||||
|
if (nowSelectedState) {
|
||||||
_forward->setNumbersText(_selectedCount);
|
_forward->setNumbersText(_selectedCount);
|
||||||
_sendNow->setNumbersText(_selectedCount);
|
_sendNow->setNumbersText(_selectedCount);
|
||||||
_delete->setNumbersText(_selectedCount);
|
_delete->setNumbersText(_selectedCount);
|
||||||
if (!wasSelected) {
|
if (!wasSelectedState) {
|
||||||
_forward->finishNumbersAnimation();
|
_forward->finishNumbersAnimation();
|
||||||
_sendNow->finishNumbersAnimation();
|
_sendNow->finishNumbersAnimation();
|
||||||
_delete->finishNumbersAnimation();
|
_delete->finishNumbersAnimation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
auto hasSelected = (_selectedCount > 0);
|
if (visibilityChanged) {
|
||||||
if (_canDelete != canDelete || _canForward != canForward || _canSendNow != canSendNow) {
|
|
||||||
_canDelete = canDelete;
|
|
||||||
_canForward = canForward;
|
|
||||||
_canSendNow = canSendNow;
|
|
||||||
updateControlsVisibility();
|
updateControlsVisibility();
|
||||||
}
|
}
|
||||||
if (wasSelected != hasSelected && !_chooseForReportReason) {
|
if (wasSelectedState != nowSelectedState && !_chooseForReportReason) {
|
||||||
setCursor(hasSelected ? style::cur_default : style::cur_pointer);
|
setCursor(nowSelectedState
|
||||||
|
? style::cur_default
|
||||||
|
: style::cur_pointer);
|
||||||
|
|
||||||
updateMembersShowArea();
|
updateMembersShowArea();
|
||||||
toggleSelectedControls(hasSelected);
|
toggleSelectedControls(nowSelectedState);
|
||||||
} else {
|
} else {
|
||||||
updateControlsGeometry();
|
updateControlsGeometry();
|
||||||
}
|
}
|
||||||
|
@ -1002,7 +1016,7 @@ void TopBarWidget::toggleSelectedControls(bool shown) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TopBarWidget::showSelectedActions() const {
|
bool TopBarWidget::showSelectedActions() const {
|
||||||
return (_selectedCount > 0) && !_chooseForReportReason;
|
return showSelectedState() && !_chooseForReportReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TopBarWidget::selectedShowCallback() {
|
void TopBarWidget::selectedShowCallback() {
|
||||||
|
|
|
@ -57,6 +57,7 @@ public:
|
||||||
void updateControlsVisibility();
|
void updateControlsVisibility();
|
||||||
void finishAnimating();
|
void finishAnimating();
|
||||||
void showSelected(SelectedState state);
|
void showSelected(SelectedState state);
|
||||||
|
[[nodiscard]] bool showSelectedState() const;
|
||||||
rpl::producer<bool> membersShowAreaActive() const {
|
rpl::producer<bool> membersShowAreaActive() const {
|
||||||
return _membersShowAreaActive.events();
|
return _membersShowAreaActive.events();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue