mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 23:27:09 +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);
|
||||
});
|
||||
|
||||
connect(
|
||||
windowHandle(),
|
||||
&QWindow::visibleChanged,
|
||||
this,
|
||||
[=](bool visible) { handleVisibleChanged(visible); });
|
||||
|
||||
if (AppMenuSupported) {
|
||||
LOG(("Using D-Bus global menu."));
|
||||
} else {
|
||||
|
@ -775,6 +769,9 @@ void MainWindow::createGlobalMenu() {
|
|||
void MainWindow::updateGlobalMenuHook() {
|
||||
}
|
||||
|
||||
void MainWindow::handleVisibleChangedHook(bool visible) {
|
||||
}
|
||||
|
||||
#else // DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
||||
|
||||
void MainWindow::createGlobalMenu() {
|
||||
|
@ -1076,7 +1073,7 @@ void MainWindow::updateGlobalMenuHook() {
|
|||
ForceDisabled(psClearFormat, !markdownEnabled);
|
||||
}
|
||||
|
||||
void MainWindow::handleVisibleChanged(bool visible) {
|
||||
void MainWindow::handleVisibleChangedHook(bool visible) {
|
||||
if (AppMenuSupported && !_mainMenuPath.path().isEmpty()) {
|
||||
if (visible) {
|
||||
RegisterAppMenu(winId(), _mainMenuPath);
|
||||
|
|
|
@ -41,6 +41,7 @@ protected:
|
|||
void initHook() override;
|
||||
void unreadCounterChangedHook() override;
|
||||
void updateGlobalMenuHook() override;
|
||||
void handleVisibleChangedHook(bool visible) override;
|
||||
|
||||
void initTrayMenuHook() override;
|
||||
bool hasTrayIcon() const override;
|
||||
|
@ -67,7 +68,6 @@ private:
|
|||
|
||||
void updateIconCounters();
|
||||
void updateWaylandDecorationColors();
|
||||
void handleVisibleChanged(bool visible);
|
||||
|
||||
#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
||||
StatusNotifierItem *_sniTrayIcon = nullptr;
|
||||
|
|
|
@ -236,6 +236,11 @@ void MainWindow::init() {
|
|||
&QWindow::windowStateChanged,
|
||||
this,
|
||||
[=](Qt::WindowState state) { handleStateChanged(state); });
|
||||
connect(
|
||||
windowHandle(),
|
||||
&QWindow::visibleChanged,
|
||||
this,
|
||||
[=](bool visible) { handleVisibleChanged(visible); });
|
||||
|
||||
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() {
|
||||
Ui::ForceFullRepaint(this);
|
||||
|
||||
|
@ -521,8 +539,15 @@ void MainWindow::updateUnreadCounter() {
|
|||
}
|
||||
|
||||
void MainWindow::savePosition(Qt::WindowState state) {
|
||||
if (state == Qt::WindowActive) state = windowHandle()->windowState();
|
||||
if (state == Qt::WindowMinimized || !positionInited()) return;
|
||||
if (state == Qt::WindowActive) {
|
||||
state = windowHandle()->windowState();
|
||||
}
|
||||
|
||||
if (state == Qt::WindowMinimized
|
||||
|| !isVisible()
|
||||
|| !positionInited()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto savedPosition = cWindowPos();
|
||||
auto realPosition = savedPosition;
|
||||
|
|
|
@ -124,6 +124,7 @@ protected:
|
|||
void savePosition(Qt::WindowState state = Qt::WindowActive);
|
||||
void handleStateChanged(Qt::WindowState state);
|
||||
void handleActiveChanged();
|
||||
void handleVisibleChanged(bool visible);
|
||||
|
||||
virtual void initHook() {
|
||||
}
|
||||
|
@ -134,6 +135,9 @@ protected:
|
|||
virtual void handleActiveChangedHook() {
|
||||
}
|
||||
|
||||
virtual void handleVisibleChangedHook(bool visible) {
|
||||
}
|
||||
|
||||
virtual void clearWidgetsHook() {
|
||||
}
|
||||
|
||||
|
@ -210,6 +214,8 @@ private:
|
|||
base::Observable<void> _dragFinished;
|
||||
rpl::event_stream<> _leaveEvents;
|
||||
|
||||
bool _maximizedBeforeHide = false;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Window
|
||||
|
|
Loading…
Add table
Reference in a new issue