mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Improve Ctrl+W / Ctrl+M handling by media viewer.
This commit is contained in:
parent
24a1208b9a
commit
27d446bdda
8 changed files with 46 additions and 15 deletions
|
@ -1499,13 +1499,12 @@ void Application::windowActivated(not_null<Window::Controller*> window) {
|
|||
}
|
||||
|
||||
bool Application::closeActiveWindow() {
|
||||
if (hideMediaView()) {
|
||||
if (_mediaView && _mediaView->isActive()) {
|
||||
_mediaView->close();
|
||||
return true;
|
||||
}
|
||||
if (!calls().closeCurrentActiveCall()) {
|
||||
} else if (!calls().closeCurrentActiveCall()) {
|
||||
if (const auto window = activeWindow()) {
|
||||
if (window->widget()->isVisible()
|
||||
&& window->widget()->isActive()) {
|
||||
if (window->widget()->isActive()) {
|
||||
window->close();
|
||||
return true;
|
||||
}
|
||||
|
@ -1515,8 +1514,10 @@ bool Application::closeActiveWindow() {
|
|||
}
|
||||
|
||||
bool Application::minimizeActiveWindow() {
|
||||
hideMediaView();
|
||||
if (!calls().minimizeCurrentActiveCall()) {
|
||||
if (_mediaView && _mediaView->isActive()) {
|
||||
_mediaView->minimize();
|
||||
return true;
|
||||
} else if (!calls().minimizeCurrentActiveCall()) {
|
||||
if (const auto window = activeWindow()) {
|
||||
window->minimize();
|
||||
return true;
|
||||
|
|
|
@ -1533,6 +1533,9 @@ void OverlayWidget::clearSession() {
|
|||
|
||||
OverlayWidget::~OverlayWidget() {
|
||||
clearSession();
|
||||
|
||||
// Otherwise dropdownHidden() may be called from the destructor.
|
||||
_dropdown.destroy();
|
||||
}
|
||||
|
||||
void OverlayWidget::assignMediaPointer(DocumentData *document) {
|
||||
|
@ -1592,6 +1595,13 @@ void OverlayWidget::close() {
|
|||
}
|
||||
}
|
||||
|
||||
void OverlayWidget::minimize() {
|
||||
if (isHidden()) {
|
||||
return;
|
||||
}
|
||||
_helper->minimize(_window);
|
||||
}
|
||||
|
||||
void OverlayWidget::toggleFullScreen(bool fullscreen) {
|
||||
if constexpr (Platform::IsMac()) {
|
||||
_fullscreen = fullscreen;
|
||||
|
@ -2548,6 +2558,10 @@ void OverlayWidget::update(const QRegion ®ion) {
|
|||
_widget->update(region);
|
||||
}
|
||||
|
||||
bool OverlayWidget::isActive() const {
|
||||
return !isHidden() && !isMinimized() && Ui::InFocusChain(_window);
|
||||
}
|
||||
|
||||
bool OverlayWidget::isHidden() const {
|
||||
return _window->isHidden();
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ public:
|
|||
None,
|
||||
};
|
||||
|
||||
[[nodiscard]] bool isActive() const;
|
||||
[[nodiscard]] bool isHidden() const;
|
||||
[[nodiscard]] bool isMinimized() const;
|
||||
[[nodiscard]] bool isFullScreen() const;
|
||||
|
@ -102,6 +103,7 @@ public:
|
|||
|
||||
void activateControls();
|
||||
void close();
|
||||
void minimize();
|
||||
void toggleFullScreen(bool fullscreen);
|
||||
|
||||
void notifyFileDialogShown(bool shown);
|
||||
|
|
|
@ -21,6 +21,7 @@ public:
|
|||
void beforeShow(bool fullscreen) override;
|
||||
void afterShow(bool fullscreen) override;
|
||||
void notifyFileDialogShown(bool shown) override;
|
||||
void minimize(not_null<Ui::RpWindow*> window) override;
|
||||
|
||||
private:
|
||||
struct Data;
|
||||
|
|
|
@ -250,6 +250,13 @@ void MacOverlayWidgetHelper::notifyFileDialogShown(bool shown) {
|
|||
}
|
||||
}
|
||||
|
||||
void MacOverlayWidgetHelper::minimize(not_null<Ui::RpWindow*> window) {
|
||||
resolveNative();
|
||||
if (_data->native) {
|
||||
[_data->native miniaturize:_data->handler];
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<OverlayWidgetHelper> CreateOverlayWidgetHelper(
|
||||
not_null<Ui::RpWindow*> window,
|
||||
Fn<void(bool)> maximize) {
|
||||
|
|
|
@ -8,10 +8,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "platform/platform_overlay_widget.h"
|
||||
|
||||
#include "ui/platform/ui_platform_window_title.h"
|
||||
#include "ui/widgets/rp_window.h"
|
||||
#include "styles/style_calls.h"
|
||||
|
||||
namespace Platform {
|
||||
|
||||
void OverlayWidgetHelper::minimize(not_null<Ui::RpWindow*> window) {
|
||||
window->setWindowState(window->windowState() | Qt::WindowMinimized);
|
||||
}
|
||||
|
||||
DefaultOverlayWidgetHelper::DefaultOverlayWidgetHelper(
|
||||
not_null<Ui::RpWindow*> window,
|
||||
Fn<void(bool)> maximize)
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
}
|
||||
virtual void notifyFileDialogShown(bool shown) {
|
||||
}
|
||||
virtual void minimize(not_null<Ui::RpWindow*> window);
|
||||
};
|
||||
|
||||
[[nodiscard]] std::unique_ptr<OverlayWidgetHelper> CreateOverlayWidgetHelper(
|
||||
|
|
|
@ -83,7 +83,7 @@ public:
|
|||
void updateIsActive();
|
||||
|
||||
[[nodiscard]] bool isActive() const {
|
||||
return _isActive;
|
||||
return !isHidden() && _isActive;
|
||||
}
|
||||
[[nodiscard]] virtual bool isActiveForTrayMenu() {
|
||||
updateIsActive();
|
||||
|
|
Loading…
Add table
Reference in a new issue