mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fix saving maximized state on Linux
This commit is contained in:
parent
70c993774a
commit
4c2779bbaf
4 changed files with 38 additions and 10 deletions
|
@ -461,12 +461,6 @@ void MainWindow::initHook() {
|
||||||
handleAppMenuOwnerChanged(service, oldOwner, newOwner);
|
handleAppMenuOwnerChanged(service, oldOwner, newOwner);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(
|
|
||||||
windowHandle(),
|
|
||||||
&QWindow::visibleChanged,
|
|
||||||
this,
|
|
||||||
[=](bool visible) { handleVisibleChanged(visible); });
|
|
||||||
|
|
||||||
if (AppMenuSupported) {
|
if (AppMenuSupported) {
|
||||||
LOG(("Using D-Bus global menu."));
|
LOG(("Using D-Bus global menu."));
|
||||||
} else {
|
} else {
|
||||||
|
@ -775,6 +769,9 @@ void MainWindow::createGlobalMenu() {
|
||||||
void MainWindow::updateGlobalMenuHook() {
|
void MainWindow::updateGlobalMenuHook() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::handleVisibleChangedHook(bool visible) {
|
||||||
|
}
|
||||||
|
|
||||||
#else // DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
#else // DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
||||||
|
|
||||||
void MainWindow::createGlobalMenu() {
|
void MainWindow::createGlobalMenu() {
|
||||||
|
@ -1076,7 +1073,7 @@ void MainWindow::updateGlobalMenuHook() {
|
||||||
ForceDisabled(psClearFormat, !markdownEnabled);
|
ForceDisabled(psClearFormat, !markdownEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::handleVisibleChanged(bool visible) {
|
void MainWindow::handleVisibleChangedHook(bool visible) {
|
||||||
if (AppMenuSupported && !_mainMenuPath.path().isEmpty()) {
|
if (AppMenuSupported && !_mainMenuPath.path().isEmpty()) {
|
||||||
if (visible) {
|
if (visible) {
|
||||||
RegisterAppMenu(winId(), _mainMenuPath);
|
RegisterAppMenu(winId(), _mainMenuPath);
|
||||||
|
|
|
@ -41,6 +41,7 @@ protected:
|
||||||
void initHook() override;
|
void initHook() override;
|
||||||
void unreadCounterChangedHook() override;
|
void unreadCounterChangedHook() override;
|
||||||
void updateGlobalMenuHook() override;
|
void updateGlobalMenuHook() override;
|
||||||
|
void handleVisibleChangedHook(bool visible) override;
|
||||||
|
|
||||||
void initTrayMenuHook() override;
|
void initTrayMenuHook() override;
|
||||||
bool hasTrayIcon() const override;
|
bool hasTrayIcon() const override;
|
||||||
|
@ -67,7 +68,6 @@ private:
|
||||||
|
|
||||||
void updateIconCounters();
|
void updateIconCounters();
|
||||||
void updateWaylandDecorationColors();
|
void updateWaylandDecorationColors();
|
||||||
void handleVisibleChanged(bool visible);
|
|
||||||
|
|
||||||
#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
||||||
StatusNotifierItem *_sniTrayIcon = nullptr;
|
StatusNotifierItem *_sniTrayIcon = nullptr;
|
||||||
|
|
|
@ -236,6 +236,11 @@ void MainWindow::init() {
|
||||||
&QWindow::windowStateChanged,
|
&QWindow::windowStateChanged,
|
||||||
this,
|
this,
|
||||||
[=](Qt::WindowState state) { handleStateChanged(state); });
|
[=](Qt::WindowState state) { handleStateChanged(state); });
|
||||||
|
connect(
|
||||||
|
windowHandle(),
|
||||||
|
&QWindow::visibleChanged,
|
||||||
|
this,
|
||||||
|
[=](bool visible) { handleVisibleChanged(visible); });
|
||||||
|
|
||||||
updatePalette();
|
updatePalette();
|
||||||
|
|
||||||
|
@ -278,6 +283,19 @@ void MainWindow::handleActiveChanged() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::handleVisibleChanged(bool visible) {
|
||||||
|
if (visible) {
|
||||||
|
if (_maximizedBeforeHide) {
|
||||||
|
DEBUG_LOG(("Window Pos: Window was maximized before hidding, setting maximized."));
|
||||||
|
setWindowState(Qt::WindowMaximized);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_maximizedBeforeHide = cWindowPos().maximized;
|
||||||
|
}
|
||||||
|
|
||||||
|
handleVisibleChangedHook(visible);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::updatePalette() {
|
void MainWindow::updatePalette() {
|
||||||
Ui::ForceFullRepaint(this);
|
Ui::ForceFullRepaint(this);
|
||||||
|
|
||||||
|
@ -521,8 +539,15 @@ void MainWindow::updateUnreadCounter() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::savePosition(Qt::WindowState state) {
|
void MainWindow::savePosition(Qt::WindowState state) {
|
||||||
if (state == Qt::WindowActive) state = windowHandle()->windowState();
|
if (state == Qt::WindowActive) {
|
||||||
if (state == Qt::WindowMinimized || !positionInited()) return;
|
state = windowHandle()->windowState();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == Qt::WindowMinimized
|
||||||
|
|| !isVisible()
|
||||||
|
|| !positionInited()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto savedPosition = cWindowPos();
|
auto savedPosition = cWindowPos();
|
||||||
auto realPosition = savedPosition;
|
auto realPosition = savedPosition;
|
||||||
|
|
|
@ -124,6 +124,7 @@ protected:
|
||||||
void savePosition(Qt::WindowState state = Qt::WindowActive);
|
void savePosition(Qt::WindowState state = Qt::WindowActive);
|
||||||
void handleStateChanged(Qt::WindowState state);
|
void handleStateChanged(Qt::WindowState state);
|
||||||
void handleActiveChanged();
|
void handleActiveChanged();
|
||||||
|
void handleVisibleChanged(bool visible);
|
||||||
|
|
||||||
virtual void initHook() {
|
virtual void initHook() {
|
||||||
}
|
}
|
||||||
|
@ -134,6 +135,9 @@ protected:
|
||||||
virtual void handleActiveChangedHook() {
|
virtual void handleActiveChangedHook() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void handleVisibleChangedHook(bool visible) {
|
||||||
|
}
|
||||||
|
|
||||||
virtual void clearWidgetsHook() {
|
virtual void clearWidgetsHook() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,6 +214,8 @@ private:
|
||||||
base::Observable<void> _dragFinished;
|
base::Observable<void> _dragFinished;
|
||||||
rpl::event_stream<> _leaveEvents;
|
rpl::event_stream<> _leaveEvents;
|
||||||
|
|
||||||
|
bool _maximizedBeforeHide = false;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Window
|
} // namespace Window
|
||||||
|
|
Loading…
Add table
Reference in a new issue