diff --git a/submodules/Display/Source/DeviceMetrics.swift b/submodules/Display/Source/DeviceMetrics.swift index beabad15ce..e4b0a329bc 100644 --- a/submodules/Display/Source/DeviceMetrics.swift +++ b/submodules/Display/Source/DeviceMetrics.swift @@ -387,4 +387,19 @@ public extension DeviceMetrics { } return modelCode ?? "unknown" } + + var modelHasDynamicIsland: Bool { + switch self.deviceModelCode { + case "iPhone15,2", // iPhone 14 Pro + "iPhone15,3", // iPhone 14 Pro Max + "iPhone15,4", // iPhone 15 + "iPhone15,5", // iPhone 15 Plus + "iPhone16,1", // iPhone 15 Pro + "iPhone16,2": // iPhone 15 Pro Max + return true + default: + return false + } + } + } diff --git a/submodules/Display/Source/WindowContent.swift b/submodules/Display/Source/WindowContent.swift index d865efd05b..4c8a70a125 100644 --- a/submodules/Display/Source/WindowContent.swift +++ b/submodules/Display/Source/WindowContent.swift @@ -1170,17 +1170,19 @@ public class Window1 { if let image = self.badgeView.image { self.updateBadgeVisibility() // MARK: Swiftgram - var badgeOffset: CGFloat = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone13ProMax.statusBarHeight + var badgeOffset: CGFloat if case self.deviceMetrics = DeviceMetrics.iPhone14ProZoomed { badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone14ProZoomed.statusBarHeight - if ![ - "iPhone13,1", // iPhone 12 mini in Zoomed mode detected as iPhone14ProZoomed - "iPhone14,4" // iPhone 13 Mini likely affected - ].contains(self.deviceMetrics.deviceModelCode) { + if self.deviceMetrics.modelHasDynamicIsland { badgeOffset += 3.0 } } else if case self.deviceMetrics = DeviceMetrics.iPhone14ProMaxZoomed { - badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone14ProMaxZoomed.statusBarHeight + 3.0 + badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone14ProMaxZoomed.statusBarHeight + if self.deviceMetrics.modelHasDynamicIsland { + badgeOffset += 3.0 + } + } else { + badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone13ProMax.statusBarHeight } if badgeOffset != 0 { badgeOffset += 3.0 // Centering badge in status bar for Dynamic island devices