Support ctrl+m/ctrl+w in voice chat panel.
This commit is contained in:
parent
c80da25450
commit
ae6decf70b
|
@ -316,6 +316,7 @@ GroupPanel::GroupPanel(not_null<GroupCall*> call)
|
||||||
, _hangup(widget(), st::groupCallHangup) {
|
, _hangup(widget(), st::groupCallHangup) {
|
||||||
_layerBg->setStyleOverrides(&st::groupCallBox, &st::groupCallLayerBox);
|
_layerBg->setStyleOverrides(&st::groupCallBox, &st::groupCallLayerBox);
|
||||||
_settings->setColorOverrides(_mute->colorOverrides());
|
_settings->setColorOverrides(_mute->colorOverrides());
|
||||||
|
_layerBg->setHideByBackgroundClick(true);
|
||||||
|
|
||||||
SubscribeToMigration(
|
SubscribeToMigration(
|
||||||
_peer,
|
_peer,
|
||||||
|
@ -337,6 +338,14 @@ bool GroupPanel::isActive() const {
|
||||||
&& !(_window->windowState() & Qt::WindowMinimized);
|
&& !(_window->windowState() & Qt::WindowMinimized);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GroupPanel::minimize() {
|
||||||
|
_window->setWindowState(_window->windowState() | Qt::WindowMinimized);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupPanel::close() {
|
||||||
|
_window->close();
|
||||||
|
}
|
||||||
|
|
||||||
void GroupPanel::showAndActivate() {
|
void GroupPanel::showAndActivate() {
|
||||||
if (_window->isHidden()) {
|
if (_window->isHidden()) {
|
||||||
_window->show();
|
_window->show();
|
||||||
|
|
|
@ -68,6 +68,8 @@ public:
|
||||||
~GroupPanel();
|
~GroupPanel();
|
||||||
|
|
||||||
[[nodiscard]] bool isActive() const;
|
[[nodiscard]] bool isActive() const;
|
||||||
|
void minimize();
|
||||||
|
void close();
|
||||||
void showAndActivate();
|
void showAndActivate();
|
||||||
void closeBeforeDestroy();
|
void closeBeforeDestroy();
|
||||||
|
|
||||||
|
|
|
@ -486,6 +486,25 @@ bool Instance::activateCurrentCall() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Instance::minimizeCurrentActiveCall() {
|
||||||
|
if (inCall() && _currentCallPanel->isActive()) {
|
||||||
|
_currentCallPanel->minimize();
|
||||||
|
return true;
|
||||||
|
} else if (inGroupCall() && _currentGroupCallPanel->isActive()) {
|
||||||
|
_currentGroupCallPanel->minimize();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Instance::closeCurrentActiveCall() {
|
||||||
|
if (inGroupCall() && _currentGroupCallPanel->isActive()) {
|
||||||
|
_currentGroupCallPanel->close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Call *Instance::currentCall() const {
|
Call *Instance::currentCall() const {
|
||||||
return _currentCall.get();
|
return _currentCall.get();
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,8 @@ public:
|
||||||
[[nodiscard]] bool hasActivePanel(
|
[[nodiscard]] bool hasActivePanel(
|
||||||
not_null<Main::Session*> session) const;
|
not_null<Main::Session*> session) const;
|
||||||
bool activateCurrentCall();
|
bool activateCurrentCall();
|
||||||
|
bool minimizeCurrentActiveCall();
|
||||||
|
bool closeCurrentActiveCall();
|
||||||
auto getVideoCapture()
|
auto getVideoCapture()
|
||||||
-> std::shared_ptr<tgcalls::VideoCaptureInterface> override;
|
-> std::shared_ptr<tgcalls::VideoCaptureInterface> override;
|
||||||
void requestPermissionsOrFail(Fn<void()> onSuccess, bool video = true);
|
void requestPermissionsOrFail(Fn<void()> onSuccess, bool video = true);
|
||||||
|
|
|
@ -221,6 +221,10 @@ void Panel::showAndActivate() {
|
||||||
_window->setFocus();
|
_window->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Panel::minimize() {
|
||||||
|
_window->setWindowState(_window->windowState() | Qt::WindowMinimized);
|
||||||
|
}
|
||||||
|
|
||||||
void Panel::replaceCall(not_null<Call*> call) {
|
void Panel::replaceCall(not_null<Call*> call) {
|
||||||
reinitWithCall(call);
|
reinitWithCall(call);
|
||||||
updateControlsGeometry();
|
updateControlsGeometry();
|
||||||
|
|
|
@ -53,6 +53,7 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] bool isActive() const;
|
[[nodiscard]] bool isActive() const;
|
||||||
void showAndActivate();
|
void showAndActivate();
|
||||||
|
void minimize();
|
||||||
void replaceCall(not_null<Call*> call);
|
void replaceCall(not_null<Call*> call);
|
||||||
void closeBeforeDestroy();
|
void closeBeforeDestroy();
|
||||||
|
|
||||||
|
|
|
@ -915,18 +915,25 @@ bool Application::closeActiveWindow() {
|
||||||
if (hideMediaView()) {
|
if (hideMediaView()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (const auto window = activeWindow()) {
|
if (!calls().closeCurrentActiveCall()) {
|
||||||
window->close();
|
if (const auto window = activeWindow()) {
|
||||||
return true;
|
if (window->widget()->isVisible()
|
||||||
|
&& window->widget()->isActive()) {
|
||||||
|
window->close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Application::minimizeActiveWindow() {
|
bool Application::minimizeActiveWindow() {
|
||||||
hideMediaView();
|
hideMediaView();
|
||||||
if (const auto window = activeWindow()) {
|
if (!calls().minimizeCurrentActiveCall()) {
|
||||||
window->minimize();
|
if (const auto window = activeWindow()) {
|
||||||
return true;
|
window->minimize();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue