From e83704982f9c0c81793de2d6eb6035731104a374 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 16 Jul 2024 18:13:17 +0200 Subject: [PATCH] Set initial location correctly. --- .../ui/controls/location_picker.cpp | 21 ++++++++++++------- .../SourceFiles/ui/controls/location_picker.h | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/ui/controls/location_picker.cpp b/Telegram/SourceFiles/ui/controls/location_picker.cpp index 3f1c74fe0..8cce44571 100644 --- a/Telegram/SourceFiles/ui/controls/location_picker.cpp +++ b/Telegram/SourceFiles/ui/controls/location_picker.cpp @@ -332,14 +332,15 @@ void VenuesController::rowPaintIcon( p.drawImage(x, y, data.image); } -[[nodiscard]] QByteArray DefaultCenter() { - if (!LastExactLocation) { +[[nodiscard]] QByteArray DefaultCenter(Core::GeoLocation initial) { + const auto &use = initial.exact() ? initial : LastExactLocation; + if (!use) { return "null"; } return "["_q - + QByteArray::number(LastExactLocation.point.x()) + + QByteArray::number(use.point.x()) + ","_q - + QByteArray::number(LastExactLocation.point.y()) + + QByteArray::number(use.point.y()) + "]"_q; } @@ -496,6 +497,10 @@ void VenuesController::rowPaintIcon( status->moveToLeft(statusPosition.x(), statusPosition.y(), width); }, name->lifetime()); + icon->setAttribute(Qt::WA_TransparentForMouseEvents); + name->setAttribute(Qt::WA_TransparentForMouseEvents); + status->setAttribute(Qt::WA_TransparentForMouseEvents); + return result; } @@ -681,9 +686,9 @@ void LocationPicker::setup(const Descriptor &descriptor) { setupWindow(descriptor); setupWebview(descriptor); - _initialProvided = descriptor.initial.exact(); - const auto initial = _initialProvided - ? descriptor.initial + _initialProvided = descriptor.initial; + const auto initial = _initialProvided.exact() + ? _initialProvided : LastExactLocation; if (initial) { venuesRequest(initial); @@ -964,7 +969,7 @@ void LocationPicker::mapReady() { Expects(_scroll != nullptr); const auto token = _config.mapsToken.toUtf8(); - const auto center = DefaultCenter(); + const auto center = DefaultCenter(_initialProvided); const auto bounds = DefaultBounds(); const auto protocol = *kProtocolOverride ? "'"_q + kProtocolOverride + "'" diff --git a/Telegram/SourceFiles/ui/controls/location_picker.h b/Telegram/SourceFiles/ui/controls/location_picker.h index 0a1485157..97ce724f3 100644 --- a/Telegram/SourceFiles/ui/controls/location_picker.h +++ b/Telegram/SourceFiles/ui/controls/location_picker.h @@ -133,8 +133,8 @@ private: ScrollArea *_scroll = nullptr; std::unique_ptr _webview; SingleQueuedInvokation _updateStyles; + Core::GeoLocation _initialProvided; bool _subscribedToColors = false; - bool _initialProvided = false; base::Timer _geocoderResolveTimer; Core::GeoLocation _geocoderResolvePostponed;