@@ -24,10 +24,11 @@ package com.adevinta.spark.components.dialog
24
24
import android.app.Activity
25
25
import android.content.Context
26
26
import android.content.ContextWrapper
27
+ import android.os.Build
27
28
import android.view.View
29
+ import android.view.ViewGroup
28
30
import android.view.Window
29
31
import android.view.WindowManager
30
- import android.widget.FrameLayout
31
32
import androidx.annotation.DrawableRes
32
33
import androidx.compose.foundation.layout.Arrangement
33
34
import androidx.compose.foundation.layout.Box
@@ -56,7 +57,6 @@ import androidx.compose.material3.TopAppBarDefaults
56
57
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
57
58
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
58
59
import androidx.compose.runtime.Composable
59
- import androidx.compose.runtime.SideEffect
60
60
import androidx.compose.ui.Alignment
61
61
import androidx.compose.ui.Modifier
62
62
import androidx.compose.ui.input.nestedscroll.nestedScroll
@@ -126,7 +126,7 @@ public fun ModalScaffold(
126
126
supportButton : (@Composable (Modifier ) -> Unit )? = {},
127
127
title : @Composable () -> Unit = {},
128
128
actions : @Composable RowScope .() -> Unit = {},
129
- inEdgeToEdge : Boolean = true ,
129
+ inEdgeToEdge : Boolean = false ,
130
130
content : @Composable (PaddingValues ) -> Unit ,
131
131
) {
132
132
val size = LocalWindowSizeClass .current
@@ -288,25 +288,7 @@ private fun PhonePortraitModalScaffold(
288
288
properties = properties,
289
289
) {
290
290
// Work around for b/246909281 as for now Dialog doesn't pass the drawing insets to its content
291
- val parentView = LocalView .current.parent as View
292
-
293
- val activityWindow = getActivityWindow()
294
- val dialogWindow = getDialogWindow()
295
-
296
- SideEffect {
297
- if (
298
- activityWindow != null &&
299
- dialogWindow != null &&
300
- inEdgeToEdge
301
- ) {
302
- val attributes = WindowManager .LayoutParams ()
303
- attributes.copyFrom(activityWindow.attributes)
304
- attributes.type = dialogWindow.attributes.type
305
- dialogWindow.attributes = attributes
306
- parentView.layoutParams =
307
- FrameLayout .LayoutParams (activityWindow.decorView.width, activityWindow.decorView.height)
308
- }
309
- }
291
+ SetUpEdgeToEdgeDialog ()
310
292
311
293
val scrollBehavior = TopAppBarDefaults .pinnedScrollBehavior()
312
294
@@ -404,24 +386,7 @@ private fun PhoneLandscapeModalScaffold(
404
386
properties = properties,
405
387
) {
406
388
// Work around for b/246909281 as for now Dialog doesn't pass the drawing insets to its content
407
- val parentView = LocalView .current.parent as View
408
- val activityWindow = getActivityWindow()
409
- val dialogWindow = getDialogWindow()
410
-
411
- SideEffect {
412
- if (
413
- activityWindow != null &&
414
- dialogWindow != null &&
415
- inEdgeToEdge
416
- ) {
417
- val attributes = WindowManager .LayoutParams ()
418
- attributes.copyFrom(activityWindow.attributes)
419
- attributes.type = dialogWindow.attributes.type
420
- dialogWindow.attributes = attributes
421
- parentView.layoutParams =
422
- FrameLayout .LayoutParams (activityWindow.decorView.width, activityWindow.decorView.height)
423
- }
424
- }
389
+ SetUpEdgeToEdgeDialog ()
425
390
val scrollBehavior = TopAppBarDefaults .pinnedScrollBehavior()
426
391
427
392
Scaffold (
@@ -505,6 +470,20 @@ private fun CloseIconButton(onClose: () -> Unit) {
505
470
}
506
471
}
507
472
473
+ @Composable
474
+ private fun SetUpEdgeToEdgeDialog () {
475
+ val parentView = LocalView .current.parent as View
476
+ val window = (parentView as DialogWindowProvider ).window
477
+
478
+ window.addFlags(WindowManager .LayoutParams .FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS )
479
+
480
+ window.setLayout(ViewGroup .LayoutParams .MATCH_PARENT , ViewGroup .LayoutParams .MATCH_PARENT )
481
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .R ) {
482
+ window.attributes.fitInsetsTypes = 0
483
+ window.attributes.fitInsetsSides = 0
484
+ }
485
+ }
486
+
508
487
/* *
509
488
* Merge 2 padding values with each others.
510
489
* This was not provided by Google so we're making our own
0 commit comments