mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-03-06 14:27:46 +00:00
Take custom scale in account when saving window geometry
This commit is contained in:
parent
0b5213a9cb
commit
9c86755546
@ -73,6 +73,7 @@ struct TWindowPos {
|
||||
|
||||
int32 moncrc = 0;
|
||||
int maximized = 0;
|
||||
int scale = 0;
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
int w = 0;
|
||||
|
@ -725,9 +725,17 @@ bool ReadSetting(
|
||||
auto position = TWindowPos();
|
||||
stream >> position.x >> position.y >> position.w >> position.h;
|
||||
stream >> position.moncrc >> position.maximized;
|
||||
stream >> position.scale;
|
||||
if (!CheckStreamStatus(stream)) return false;
|
||||
|
||||
DEBUG_LOG(("Window Pos: Read from storage %1, %2, %3, %4 (maximized %5)").arg(position.x).arg(position.y).arg(position.w).arg(position.h).arg(Logs::b(position.maximized)));
|
||||
DEBUG_LOG(("Window Pos: Read from storage %1, %2, %3, %4 (scale %5%, maximized %6)")
|
||||
.arg(position.x)
|
||||
.arg(position.y)
|
||||
.arg(position.w)
|
||||
.arg(position.h)
|
||||
.arg(position.scale)
|
||||
.arg(Logs::b(position.maximized)));
|
||||
|
||||
cSetWindowPos(position);
|
||||
} break;
|
||||
|
||||
|
@ -532,8 +532,15 @@ void writeSettings() {
|
||||
auto position = cWindowPos();
|
||||
data.stream << quint32(dbiWindowPosition) << qint32(position.x) << qint32(position.y) << qint32(position.w) << qint32(position.h);
|
||||
data.stream << qint32(position.moncrc) << qint32(position.maximized);
|
||||
data.stream << qint32(position.scale);
|
||||
|
||||
DEBUG_LOG(("Window Pos: Writing to storage %1, %2, %3, %4 (maximized %5)").arg(position.x).arg(position.y).arg(position.w).arg(position.h).arg(Logs::b(position.maximized)));
|
||||
DEBUG_LOG(("Window Pos: Writing to storage %1, %2, %3, %4 (scale %5%, maximized %6)")
|
||||
.arg(position.x)
|
||||
.arg(position.y)
|
||||
.arg(position.w)
|
||||
.arg(position.h)
|
||||
.arg(position.scale)
|
||||
.arg(Logs::b(position.maximized)));
|
||||
|
||||
settings.writeEncrypted(data, SettingsKey);
|
||||
}
|
||||
|
@ -425,7 +425,21 @@ void MainWindow::initSize() {
|
||||
}
|
||||
|
||||
auto position = cWindowPos();
|
||||
DEBUG_LOG(("Window Pos: Initializing first %1, %2, %3, %4 (maximized %5)").arg(position.x).arg(position.y).arg(position.w).arg(position.h).arg(Logs::b(position.maximized)));
|
||||
DEBUG_LOG(("Window Pos: Initializing first %1, %2, %3, %4 (scale %5%, maximized %6)")
|
||||
.arg(position.x)
|
||||
.arg(position.y)
|
||||
.arg(position.w)
|
||||
.arg(position.h)
|
||||
.arg(position.scale)
|
||||
.arg(Logs::b(position.maximized)));
|
||||
|
||||
if (position.scale != 0) {
|
||||
const auto scaleFactor = cScale() / float64(position.scale);
|
||||
position.x *= scaleFactor;
|
||||
position.y *= scaleFactor;
|
||||
position.w *= scaleFactor;
|
||||
position.h *= scaleFactor;
|
||||
}
|
||||
|
||||
const auto primaryScreen = QGuiApplication::primaryScreen();
|
||||
auto geometryScreen = primaryScreen;
|
||||
@ -593,6 +607,7 @@ void MainWindow::savePosition(Qt::WindowState state) {
|
||||
realPosition.y = r.y();
|
||||
realPosition.w = r.width() - (_rightColumn ? _rightColumn->width() : 0);
|
||||
realPosition.h = r.height();
|
||||
realPosition.scale = cScale();
|
||||
realPosition.maximized = 0;
|
||||
realPosition.moncrc = 0;
|
||||
|
||||
@ -623,9 +638,16 @@ void MainWindow::savePosition(Qt::WindowState state) {
|
||||
|| realPosition.y != savedPosition.y
|
||||
|| realPosition.w != savedPosition.w
|
||||
|| realPosition.h != savedPosition.h
|
||||
|| realPosition.scale != savedPosition.scale
|
||||
|| realPosition.moncrc != savedPosition.moncrc
|
||||
|| realPosition.maximized != savedPosition.maximized) {
|
||||
DEBUG_LOG(("Window Pos: Writing: %1, %2, %3, %4 (maximized %5)").arg(realPosition.x).arg(realPosition.y).arg(realPosition.w).arg(realPosition.h).arg(Logs::b(realPosition.maximized)));
|
||||
DEBUG_LOG(("Window Pos: Writing: %1, %2, %3, %4 (scale %5%, maximized %6)")
|
||||
.arg(realPosition.x)
|
||||
.arg(realPosition.y)
|
||||
.arg(realPosition.w)
|
||||
.arg(realPosition.h)
|
||||
.arg(realPosition.scale)
|
||||
.arg(Logs::b(realPosition.maximized)));
|
||||
cSetWindowPos(realPosition);
|
||||
Local::writeSettings();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user