Fix IV window geometry restoration

This commit is contained in:
Ilya Fedin 2024-06-18 02:45:45 +04:00 committed by John Preston
parent b9677fe1db
commit eaf4575eb8
3 changed files with 8 additions and 4 deletions

View file

@ -7,13 +7,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/ */
#pragma once #pragma once
namespace Ui {
class RpWindow;
} // namespace Ui
namespace Iv { namespace Iv {
class Delegate { class Delegate {
public: public:
virtual void ivSetLastSourceWindow(not_null<QWidget*> window) = 0; virtual void ivSetLastSourceWindow(not_null<QWidget*> window) = 0;
[[nodiscard]] virtual QRect ivGeometry() const = 0; [[nodiscard]] virtual QRect ivGeometry() const = 0;
virtual void ivSaveGeometry(not_null<QWidget*> window) = 0; virtual void ivSaveGeometry(not_null<Ui::RpWindow*> window) = 0;
}; };
} // namespace Iv } // namespace Iv

View file

@ -67,7 +67,7 @@ QRect DelegateImpl::ivGeometry() const {
return result; return result;
} }
void DelegateImpl::ivSaveGeometry(not_null<QWidget*> window) { void DelegateImpl::ivSaveGeometry(not_null<Ui::RpWindow*> window) {
if (!window->windowHandle()) { if (!window->windowHandle()) {
return; return;
} }
@ -82,7 +82,7 @@ void DelegateImpl::ivSaveGeometry(not_null<QWidget*> window) {
realPosition.moncrc = 0; realPosition.moncrc = 0;
DEBUG_LOG(("IV Pos: Saving maximized position.")); DEBUG_LOG(("IV Pos: Saving maximized position."));
} else { } else {
auto r = window->geometry(); auto r = window->body()->mapToGlobal(window->body()->rect());
realPosition.x = r.x(); realPosition.x = r.x();
realPosition.y = r.y(); realPosition.y = r.y();
realPosition.w = r.width(); realPosition.w = r.width();

View file

@ -17,7 +17,7 @@ public:
void ivSetLastSourceWindow(not_null<QWidget*> window) override; void ivSetLastSourceWindow(not_null<QWidget*> window) override;
[[nodiscard]] QRect ivGeometry() const override; [[nodiscard]] QRect ivGeometry() const override;
void ivSaveGeometry(not_null<QWidget*> window) override; void ivSaveGeometry(not_null<Ui::RpWindow*> window) override;
private: private:
QPointer<QWidget> _lastSourceWindow; QPointer<QWidget> _lastSourceWindow;