2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-04 16:45:12 +00:00

One-click forward to Saved Messages

This commit is contained in:
RadRussianRus
2020-07-09 13:13:16 +03:00
parent aabe77b89c
commit b42a7331a8

View File

@@ -50,6 +50,7 @@ public:
void setPeerSelectedChangedCallback( void setPeerSelectedChangedCallback(
Fn<void(PeerData *peer, bool selected)> callback); Fn<void(PeerData *peer, bool selected)> callback);
void setSubmitRequest(Fn<void()> callback);
void peerUnselected(not_null<PeerData*> peer); void peerUnselected(not_null<PeerData*> peer);
std::vector<not_null<PeerData*>> selected() const; std::vector<not_null<PeerData*>> selected() const;
@@ -141,6 +142,7 @@ private:
base::flat_set<not_null<PeerData*>> _selected; base::flat_set<not_null<PeerData*>> _selected;
Fn<void(PeerData *peer, bool selected)> _peerSelectedChangedCallback; Fn<void(PeerData *peer, bool selected)> _peerSelectedChangedCallback;
Fn<void()> _submitRequest;
bool _searching = false; bool _searching = false;
QString _lastQuery; QString _lastQuery;
@@ -150,6 +152,7 @@ private:
rpl::event_stream<Ui::ScrollToRequest> _scrollToRequests; rpl::event_stream<Ui::ScrollToRequest> _scrollToRequests;
rpl::event_stream<> _searchRequests; rpl::event_stream<> _searchRequests;
bool _hadSelection = false;
}; };
ShareBox::ShareBox( ShareBox::ShareBox(
@@ -269,6 +272,10 @@ void ShareBox::prepare() {
innerSelectedChanged(peer, checked); innerSelectedChanged(peer, checked);
}); });
_inner->setSubmitRequest([=] {
submit({});
});
Ui::Emoji::SuggestionsController::Init( Ui::Emoji::SuggestionsController::Init(
getDelegate()->outerContainer(), getDelegate()->outerContainer(),
_comment->entity(), _comment->entity(),
@@ -923,6 +930,15 @@ void ShareBox::Inner::mousePressEvent(QMouseEvent *e) {
if (e->button() == Qt::LeftButton) { if (e->button() == Qt::LeftButton) {
updateUpon(e->pos()); updateUpon(e->pos());
changeCheckState(getChatAtIndex(_upon)); changeCheckState(getChatAtIndex(_upon));
if (!_hadSelection
&& _submitRequest
&& !(e->modifiers() & Qt::ControlModifier)
&& _selected.size() == 1
&& _selected.front()->isSelf()) {
_submitRequest();
} else if (!_hadSelection) {
_hadSelection = true;
}
} }
} }
@@ -970,6 +986,10 @@ void ShareBox::Inner::setPeerSelectedChangedCallback(
_peerSelectedChangedCallback = std::move(callback); _peerSelectedChangedCallback = std::move(callback);
} }
void ShareBox::Inner::setSubmitRequest(Fn<void()> callback) {
_submitRequest = std::move(callback);
}
void ShareBox::Inner::changePeerCheckState( void ShareBox::Inner::changePeerCheckState(
not_null<Chat*> chat, not_null<Chat*> chat,
bool checked, bool checked,