mirror of
https://github.com/twinksoftware/Gearslip.git
synced 2026-11-11 00:12:24 +01:00
Map apps keep their speedometer clear of the nav bar and the map buttons
This commit is contained in:
1 parent
2d3de20682
commit
bc22691f81
2 files changed
+14
-3
No files matched your search
@@ -145,13 +145,18 @@ private fun AppSurface(
|
|||||||
val cardsAtEnd = LocalCardsAtEnd.current
|
val cardsAtEnd = LocalCardsAtEnd.current
|
||||||
val cardEdge = cardEdge
|
val cardEdge = cardEdge
|
||||||
val measuredStable = bounds?.takeIf { width > 0 && height > 0 }?.let { cover?.visibleWithin(it, width, height, skip = cardEdge) }
|
val measuredStable = bounds?.takeIf { width > 0 && height > 0 }?.let { cover?.visibleWithin(it, width, height, skip = cardEdge) }
|
||||||
LaunchedEffect(template, size, measured, measuredStable, cardsAtEnd) {
|
// A little room above whatever ends the map at the bottom (the nav bar, or the screen's edge):
|
||||||
|
// apps draw their own corner pieces (Waze's speedometer) right on the area's bottom edge,
|
||||||
|
// which left them sitting flush on the bar.
|
||||||
|
val bottomGap = with(androidx.compose.ui.platform.LocalDensity.current) { MAP_BOTTOM_GAP.roundToPx() }
|
||||||
|
LaunchedEffect(template, size, measured, measuredStable, cardsAtEnd, bottomGap) {
|
||||||
if (width > 0 && height > 0) {
|
if (width > 0 && height > 0) {
|
||||||
val visible = visibleAreaFor(template, width, height, measured, cardsAtEnd)
|
fun android.graphics.Rect.clearOfBar() = if (isEmpty) this else android.graphics.Rect(left, top, right, maxOf(top, bottom - bottomGap))
|
||||||
|
val visible = visibleAreaFor(template, width, height, measured, cardsAtEnd).clearOfBar()
|
||||||
// Waze seems to centre its car in the stable area rather than the visible one, so it
|
// Waze seems to centre its car in the stable area rather than the visible one, so it
|
||||||
// gets the cards taken out of that too. Test: see whether its car moves out from under them.
|
// gets the cards taken out of that too. Test: see whether its car moves out from under them.
|
||||||
val stable = if (!isContentTemplate(template) && connection.appPackage != "com.waze") {
|
val stable = if (!isContentTemplate(template) && connection.appPackage != "com.waze") {
|
||||||
visibleAreaFor(template, width, height, measuredStable, cardsAtEnd)
|
visibleAreaFor(template, width, height, measuredStable, cardsAtEnd).clearOfBar()
|
||||||
} else {
|
} else {
|
||||||
visible
|
visible
|
||||||
}
|
}
|
||||||
@@ -284,6 +289,9 @@ private fun ChromeBar(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** How far above the bottom of the map the area an app may draw in stops. */
|
||||||
|
private val MAP_BOTTOM_GAP = 12.dp
|
||||||
|
|
||||||
/** Height of [ChromeBar]; the template's own chrome starts below it. */
|
/** Height of [ChromeBar]; the template's own chrome starts below it. */
|
||||||
private val CHROME_BAR = 44.dp
|
private val CHROME_BAR = 44.dp
|
||||||
|
|
||||||
|
|||||||
@@ -540,6 +540,9 @@ private fun MapPaneLayout(
|
|||||||
if (pan) null else actionStrip,
|
if (pan) null else actionStrip,
|
||||||
mapActionStrip,
|
mapActionStrip,
|
||||||
Modifier.align(if (atEnd) Alignment.TopStart else Alignment.TopEnd).padding(12.dp),
|
Modifier.align(if (atEnd) Alignment.TopStart else Alignment.TopEnd).padding(12.dp),
|
||||||
|
// Counted as covering the map, as in navigation, or Waze's speedometer slid under
|
||||||
|
// them and off the screen's edge whenever a card was up.
|
||||||
|
mapActionsModifier = Modifier.covers("pane-buttons", buttonEdge),
|
||||||
alignment = if (atEnd) Alignment.Start else Alignment.End,
|
alignment = if (atEnd) Alignment.Start else Alignment.End,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user