Completely removed common and platform code for tray from main window.

This commit is contained in:
23rd 2022-04-21 22:33:27 +03:00
parent 9de372d715
commit 0e16a50bbc
12 changed files with 4 additions and 244 deletions

View File

@ -433,9 +433,9 @@ void Application::startTray() {
_tray->showFromTrayRequests( _tray->showFromTrayRequests(
) | rpl::start_with_next([=] { ) | rpl::start_with_next([=] {
const auto last = _lastActiveWindow; const auto last = _lastActiveWindow;
enumerate([&](WindowRaw w) { w->widget()->showFromTrayMenu(); }); enumerate([&](WindowRaw w) { w->widget()->showFromTray(); });
if (last) { if (last) {
last->widget()->showFromTrayMenu(); last->widget()->showFromTray();
} }
}, _primaryWindow->widget()->lifetime()); }, _primaryWindow->widget()->lifetime());

View File

@ -123,9 +123,6 @@ void MainWindow::initHook() {
} }
} }
void MainWindow::createTrayIconMenu() {
}
void MainWindow::applyInitialWorkMode() { void MainWindow::applyInitialWorkMode() {
const auto workMode = Core::App().settings().workMode(); const auto workMode = Core::App().settings().workMode();
workmodeUpdated(workMode); workmodeUpdated(workMode);
@ -150,7 +147,6 @@ void MainWindow::applyInitialWorkMode() {
} }
void MainWindow::finishFirstShow() { void MainWindow::finishFirstShow() {
createTrayIconMenu();
applyInitialWorkMode(); applyInitialWorkMode();
createGlobalMenu(); createGlobalMenu();
@ -634,15 +630,6 @@ bool MainWindow::eventFilter(QObject *object, QEvent *e) {
return Platform::MainWindow::eventFilter(object, e); return Platform::MainWindow::eventFilter(object, e);
} }
void MainWindow::updateTrayMenu() {
if (!trayIconMenu) {
return;
}
_updateTrayMenuTextActions.fire({});
psTrayMenuUpdated();
}
bool MainWindow::takeThirdSectionFromLayer() { bool MainWindow::takeThirdSectionFromLayer() {
return _layer ? _layer->takeToThirdSection() : false; return _layer ? _layer->takeToThirdSection() : false;
} }
@ -654,91 +641,6 @@ void MainWindow::fixOrder() {
if (_testingThemeWarning) _testingThemeWarning->raise(); if (_testingThemeWarning) _testingThemeWarning->raise();
} }
void MainWindow::handleTrayIconActication(
QSystemTrayIcon::ActivationReason reason) {
updateIsActive();
if (Platform::IsMac() && isActive()) {
if (trayIcon && !trayIcon->contextMenu()) {
showFromTray();
}
return;
}
if (reason == QSystemTrayIcon::Context) {
updateTrayMenu();
InvokeQueued(this, [=] {
psShowTrayMenu();
});
} else if (!skipTrayClick()) {
if (isActiveForTrayMenu()) {
minimizeToTray();
} else {
showFromTray();
}
_lastTrayClickTime = crl::now();
}
}
bool MainWindow::skipTrayClick() const {
return (_lastTrayClickTime > 0)
&& (crl::now() - _lastTrayClickTime
< QApplication::doubleClickInterval());
}
void MainWindow::toggleDisplayNotifyFromTray() {
if (controller().locked()) {
if (!isActive()) showFromTray();
Ui::show(Ui::MakeInformBox(tr::lng_passcode_need_unblock()));
return;
}
if (!sessionController()) {
return;
}
auto soundNotifyChanged = false;
auto flashBounceNotifyChanged = false;
auto &settings = Core::App().settings();
settings.setDesktopNotify(!settings.desktopNotify());
if (settings.desktopNotify()) {
if (settings.rememberedSoundNotifyFromTray()
&& !settings.soundNotify()) {
settings.setSoundNotify(true);
settings.setRememberedSoundNotifyFromTray(false);
soundNotifyChanged = true;
}
if (settings.rememberedFlashBounceNotifyFromTray()
&& !settings.flashBounceNotify()) {
settings.setFlashBounceNotify(true);
settings.setRememberedFlashBounceNotifyFromTray(false);
flashBounceNotifyChanged = true;
}
} else {
if (settings.soundNotify()) {
settings.setSoundNotify(false);
settings.setRememberedSoundNotifyFromTray(true);
soundNotifyChanged = true;
} else {
settings.setRememberedSoundNotifyFromTray(false);
}
if (settings.flashBounceNotify()) {
settings.setFlashBounceNotify(false);
settings.setRememberedFlashBounceNotifyFromTray(true);
flashBounceNotifyChanged = true;
} else {
settings.setRememberedFlashBounceNotifyFromTray(false);
}
}
Core::App().saveSettingsDelayed();
using Change = Window::Notifications::ChangeType;
auto &notifications = Core::App().notifications();
notifications.notifySettingsChanged(Change::DesktopEnabled);
if (soundNotifyChanged) {
notifications.notifySettingsChanged(Change::SoundEnabled);
}
if (flashBounceNotifyChanged) {
notifications.notifySettingsChanged(Change::FlashBounceEnabled);
}
}
void MainWindow::closeEvent(QCloseEvent *e) { void MainWindow::closeEvent(QCloseEvent *e) {
if (Core::Sandbox::Instance().isSavingSession() || Core::Quitting()) { if (Core::Sandbox::Instance().isSavingSession() || Core::Quitting()) {
e->accept(); e->accept();
@ -807,10 +709,7 @@ void MainWindow::activeChangedHook() {
} }
} }
MainWindow::~MainWindow() { MainWindow::~MainWindow() = default;
delete trayIcon;
delete trayIconMenu;
}
namespace App { namespace App {

View File

@ -80,7 +80,6 @@ public:
} }
void showMainMenu(); void showMainMenu();
void updateTrayMenu() override;
void fixOrder() override; void fixOrder() override;
void showLayer( void showLayer(
@ -119,12 +118,6 @@ protected:
void clearWidgetsHook() override; void clearWidgetsHook() override;
private: private:
[[nodiscard]] bool skipTrayClick() const;
void createTrayIconMenu();
void handleTrayIconActication(
QSystemTrayIcon::ActivationReason reason) override;
void applyInitialWorkMode(); void applyInitialWorkMode();
void ensureLayerCreated(); void ensureLayerCreated();
void destroyLayer(); void destroyLayer();
@ -139,15 +132,11 @@ private:
void themeUpdated(const Window::Theme::BackgroundUpdate &data); void themeUpdated(const Window::Theme::BackgroundUpdate &data);
void toggleDisplayNotifyFromTray();
QPixmap grabInner(); QPixmap grabInner();
std::unique_ptr<Media::SystemMediaControlsManager> _mediaControlsManager; std::unique_ptr<Media::SystemMediaControlsManager> _mediaControlsManager;
crl::time _lastTrayClickTime = 0;
QPoint _lastMousePosition; QPoint _lastMousePosition;
bool _activeForTrayIconAction = true;
object_ptr<Window::PasscodeLockWidget> _passcodeLock = { nullptr }; object_ptr<Window::PasscodeLockWidget> _passcodeLock = { nullptr };
object_ptr<Intro::Widget> _intro = { nullptr }; object_ptr<Intro::Widget> _intro = { nullptr };
@ -157,8 +146,6 @@ private:
object_ptr<Window::Theme::WarningWidget> _testingThemeWarning = { nullptr }; object_ptr<Window::Theme::WarningWidget> _testingThemeWarning = { nullptr };
rpl::event_stream<> _updateTrayMenuTextActions;
}; };
namespace App { namespace App {

View File

@ -255,24 +255,11 @@ void MainWindow::initHook() {
LOG(("System tray available: %1").arg(Logs::b(TrayIconSupported()))); LOG(("System tray available: %1").arg(Logs::b(TrayIconSupported())));
} }
bool MainWindow::hasTrayIcon() const {
return trayIcon;
}
bool MainWindow::isActiveForTrayMenu() { bool MainWindow::isActiveForTrayMenu() {
updateIsActive(); updateIsActive();
return Platform::IsWayland() ? isVisible() : isActive(); return Platform::IsWayland() ? isVisible() : isActive();
} }
void MainWindow::psShowTrayMenu() {
}
void MainWindow::psTrayMenuUpdated() {
}
void MainWindow::psSetupTrayIcon() {
}
void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) { void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
if (!TrayIconSupported()) { if (!TrayIconSupported()) {
return; return;
@ -329,9 +316,6 @@ void MainWindow::updateIconCounters() {
#endif // !DESKTOP_APP_DISABLE_DBUS_INTEGRATION #endif // !DESKTOP_APP_DISABLE_DBUS_INTEGRATION
} }
void MainWindow::initTrayMenuHook() {
}
void MainWindow::createGlobalMenu() { void MainWindow::createGlobalMenu() {
const auto ensureWindowShown = [=] { const auto ensureWindowShown = [=] {
if (isHidden()) { if (isHidden()) {

View File

@ -22,8 +22,6 @@ class MainWindow : public Window::MainWindow {
public: public:
explicit MainWindow(not_null<Window::Controller*> controller); explicit MainWindow(not_null<Window::Controller*> controller);
void psShowTrayMenu();
bool isActiveForTrayMenu() override; bool isActiveForTrayMenu() override;
~MainWindow(); ~MainWindow();
@ -35,21 +33,10 @@ protected:
void unreadCounterChangedHook() override; void unreadCounterChangedHook() override;
void updateGlobalMenuHook() override; void updateGlobalMenuHook() override;
void initTrayMenuHook() override;
bool hasTrayIcon() const override;
void workmodeUpdated(Core::Settings::WorkMode mode) override; void workmodeUpdated(Core::Settings::WorkMode mode) override;
void createGlobalMenu() override; void createGlobalMenu() override;
QSystemTrayIcon *trayIcon = nullptr;
QMenu *trayIconMenu = nullptr;
void psTrayMenuUpdated();
void psSetupTrayIcon();
private: private:
base::unique_qptr<Ui::PopupMenu> _trayIconMenuXEmbed;
QMenuBar *psMainMenu = nullptr; QMenuBar *psMainMenu = nullptr;
QAction *psLogout = nullptr; QAction *psLogout = nullptr;
QAction *psUndo = nullptr; QAction *psUndo = nullptr;

View File

@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#endif // !DESKTOP_APP_DISABLE_X11_INTEGRATION #endif // !DESKTOP_APP_DISABLE_X11_INTEGRATION
#include <QtWidgets/QApplication> #include <QtWidgets/QApplication>
#include <QtWidgets/QSystemTrayIcon>
#include <QtCore/QStandardPaths> #include <QtCore/QStandardPaths>
#include <QtCore/QProcess> #include <QtCore/QProcess>
#include <QtGui/QWindow> #include <QtGui/QWindow>

View File

@ -30,8 +30,6 @@ public:
void updateWindowIcon() override; void updateWindowIcon() override;
void psShowTrayMenu();
bool preventsQuit(Core::QuitReason reason) override; bool preventsQuit(Core::QuitReason reason) override;
class Private; class Private;
@ -39,25 +37,12 @@ public:
protected: protected:
bool eventFilter(QObject *obj, QEvent *evt) override; bool eventFilter(QObject *obj, QEvent *evt) override;
void handleActiveChangedHook() override;
void stateChangedHook(Qt::WindowState state) override; void stateChangedHook(Qt::WindowState state) override;
void initHook() override; void initHook() override;
void unreadCounterChangedHook() override; void unreadCounterChangedHook() override;
bool hasTrayIcon() const override {
return trayIcon;
}
void updateGlobalMenuHook() override; void updateGlobalMenuHook() override;
void workmodeUpdated(Core::Settings::WorkMode mode) override;
QSystemTrayIcon *trayIcon = nullptr;
QMenu *trayIconMenu = nullptr;
void psTrayMenuUpdated();
void psSetupTrayIcon();
void closeWithoutDestroy() override; void closeWithoutDestroy() override;
void createGlobalMenu() override; void createGlobalMenu() override;

View File

@ -237,9 +237,6 @@ void MainWindow::stateChangedHook(Qt::WindowState state) {
} }
} }
void MainWindow::handleActiveChangedHook() {
}
void MainWindow::initHook() { void MainWindow::initHook() {
_customTitleHeight = 0; _customTitleHeight = 0;
if (auto view = reinterpret_cast<NSView*>(winId())) { if (auto view = reinterpret_cast<NSView*>(winId())) {
@ -260,9 +257,6 @@ void MainWindow::hideAndDeactivate() {
hide(); hide();
} }
void MainWindow::psShowTrayMenu() {
}
bool MainWindow::preventsQuit(Core::QuitReason reason) { bool MainWindow::preventsQuit(Core::QuitReason reason) {
// Thanks Chromium, see // Thanks Chromium, see
// chromium.org/developers/design-documents/confirm-to-quit-experiment // chromium.org/developers/design-documents/confirm-to-quit-experiment
@ -276,15 +270,6 @@ bool MainWindow::preventsQuit(Core::QuitReason reason) {
Platform::ConfirmQuit::QuitKeysString())); Platform::ConfirmQuit::QuitKeysString()));
} }
void MainWindow::psTrayMenuUpdated() {
}
void MainWindow::psSetupTrayIcon() {
}
void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
}
void MainWindow::unreadCounterChangedHook() { void MainWindow::unreadCounterChangedHook() {
updateIconCounters(); updateIconCounters();
} }

View File

@ -215,9 +215,6 @@ void MainWindow::shadowsDeactivate() {
_hasActiveFrame = false; _hasActiveFrame = false;
} }
void MainWindow::psShowTrayMenu() {
}
void MainWindow::destroyedFromSystem() { void MainWindow::destroyedFromSystem() {
Core::Quit(); Core::Quit();
} }
@ -247,15 +244,6 @@ void MainWindow::forceIconRefresh() {
updateIconCounters(); updateIconCounters();
} }
void MainWindow::psTrayMenuUpdated() {
}
void MainWindow::psSetupTrayIcon() {
}
void MainWindow::showTrayTooltip() {
}
void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) { void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
using WorkMode = Core::Settings::WorkMode; using WorkMode = Core::Settings::WorkMode;
@ -515,10 +503,6 @@ void MainWindow::validateWindowTheme(bool native, bool night) {
SendMessage(_hWnd, WM_NCACTIVATE, _hasActiveFrame ? 1 : 0, 0); SendMessage(_hWnd, WM_NCACTIVATE, _hasActiveFrame ? 1 : 0, 0);
} }
void MainWindow::showFromTrayMenu() {
showFromTray();
}
HWND MainWindow::psHwnd() const { HWND MainWindow::psHwnd() const {
return _hWnd; return _hWnd;
} }

View File

@ -21,8 +21,6 @@ class MainWindow : public Window::MainWindow {
public: public:
explicit MainWindow(not_null<Window::Controller*> controller); explicit MainWindow(not_null<Window::Controller*> controller);
void showFromTrayMenu() override;
HWND psHwnd() const; HWND psHwnd() const;
void updateWindowIcon() override; void updateWindowIcon() override;
@ -34,8 +32,6 @@ public:
[[nodiscard]] bool hasTabletView() const; [[nodiscard]] bool hasTabletView() const;
void psShowTrayMenu();
void destroyedFromSystem(); void destroyedFromSystem();
~MainWindow(); ~MainWindow();
@ -45,18 +41,6 @@ protected:
int32 screenNameChecksum(const QString &name) const override; int32 screenNameChecksum(const QString &name) const override;
void unreadCounterChangedHook() override; void unreadCounterChangedHook() override;
bool hasTrayIcon() const override {
return trayIcon;
}
QSystemTrayIcon *trayIcon = nullptr;
Ui::PopupMenu *trayIconMenu = nullptr;
void psTrayMenuUpdated();
void psSetupTrayIcon();
void showTrayTooltip() override;
void workmodeUpdated(Core::Settings::WorkMode mode) override; void workmodeUpdated(Core::Settings::WorkMode mode) override;
bool initGeometryFromSystem() override; bool initGeometryFromSystem() override;
@ -83,7 +67,6 @@ private:
// Workarounds for activation from tray icon. // Workarounds for activation from tray icon.
crl::time _lastDeactivateTime = 0; crl::time _lastDeactivateTime = 0;
rpl::lifetime _showFromTrayLifetime;
bool _hasActiveFrame = false; bool _hasActiveFrame = false;

View File

@ -491,9 +491,6 @@ void MainWindow::handleActiveChanged() {
if (isActiveWindow()) { if (isActiveWindow()) {
Core::App().checkMediaViewActivation(); Core::App().checkMediaViewActivation();
} }
InvokeQueued(this, [=] {
handleActiveChangedHook();
});
} }
void MainWindow::handleVisibleChanged(bool visible) { void MainWindow::handleVisibleChanged(bool visible) {
@ -765,16 +762,6 @@ void MainWindow::setPositionInited() {
_positionInited = true; _positionInited = true;
} }
void MainWindow::attachToTrayIcon(not_null<QSystemTrayIcon*> icon) {
icon->setToolTip(AppName.utf16());
connect(icon, &QSystemTrayIcon::activated, this, [=](
QSystemTrayIcon::ActivationReason reason) {
Core::Sandbox::Instance().customEnterFromEventLoop([&] {
handleTrayIconActication(reason);
});
});
}
rpl::producer<> MainWindow::leaveEvents() const { rpl::producer<> MainWindow::leaveEvents() const {
return _leaveEvents.events(); return _leaveEvents.events();
} }
@ -903,7 +890,6 @@ bool MainWindow::minimizeToTray() {
closeWithoutDestroy(); closeWithoutDestroy();
controller().updateIsActiveBlur(); controller().updateIsActiveBlur();
updateGlobalMenu(); updateGlobalMenu();
showTrayTooltip();
return true; return true;
} }

View File

@ -13,8 +13,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/core_settings.h" #include "core/core_settings.h"
#include "base/required.h" #include "base/required.h"
#include <QtWidgets/QSystemTrayIcon>
namespace Main { namespace Main {
class Session; class Session;
class Account; class Account;
@ -75,9 +73,6 @@ public:
void showFromTray(); void showFromTray();
void quitFromTray(); void quitFromTray();
void activate(); void activate();
virtual void showFromTrayMenu() {
showFromTray();
}
[[nodiscard]] QRect desktopRect() const; [[nodiscard]] QRect desktopRect() const;
@ -107,8 +102,6 @@ public:
// Returns how much could the window get extended. // Returns how much could the window get extended.
int tryToExtendWidthBy(int addToWidth); int tryToExtendWidthBy(int addToWidth);
virtual void updateTrayMenu() {
}
virtual void fixOrder() { virtual void fixOrder() {
} }
virtual void setInnerFocus() { virtual void setInnerFocus() {
@ -156,9 +149,6 @@ protected:
virtual void activeChangedHook() { virtual void activeChangedHook() {
} }
virtual void handleActiveChangedHook() {
}
virtual void handleVisibleChangedHook(bool visible) { virtual void handleVisibleChangedHook(bool visible) {
} }
@ -178,14 +168,6 @@ protected:
virtual void updateGlobalMenuHook() { virtual void updateGlobalMenuHook() {
} }
virtual void initTrayMenuHook() {
}
virtual bool hasTrayIcon() const {
return false;
}
virtual void showTrayTooltip() {
}
virtual void workmodeUpdated(Core::Settings::WorkMode mode) { virtual void workmodeUpdated(Core::Settings::WorkMode mode) {
} }
@ -200,9 +182,6 @@ protected:
virtual int32 screenNameChecksum(const QString &name) const; virtual int32 screenNameChecksum(const QString &name) const;
void setPositionInited(); void setPositionInited();
void attachToTrayIcon(not_null<QSystemTrayIcon*> icon);
virtual void handleTrayIconActication(
QSystemTrayIcon::ActivationReason reason) = 0;
void updateUnreadCounter(); void updateUnreadCounter();
virtual QRect computeDesktopRect() const; virtual QRect computeDesktopRect() const;