Revert "Android: consider DecorView insets at app startup"
This reverts commit e96a4b84e136d065054600c07bf5fae17f3049ce. Reason for revert: QTBUG-137306 Change-Id: Id5718737f3f426de49ad109d214af1c920e5ae22 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 05f8abc61dd2429d7041a87d5bfc7bffbb105f12) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 0b69f2f7ab290a293cd2deb6759f934f3bf28c12)
This commit is contained in:
parent
87794df973
commit
09cdda9527
@ -75,57 +75,27 @@ class QtWindow extends QtLayout implements QtSurfaceInterface {
|
||||
});
|
||||
m_gestureDetector.setIsLongpressEnabled(true);
|
||||
});
|
||||
}
|
||||
|
||||
@UsedFromNativeCode
|
||||
void registerSafeAreaMarginsListner(boolean isTopLevel, boolean isSameWindowAndScreenSize)
|
||||
{
|
||||
if (!(getContext() instanceof QtActivityBase))
|
||||
return;
|
||||
|
||||
setOnApplyWindowInsetsListener((view, insets) -> {
|
||||
Insets safeInsets = getSafeInsets(view, insets);
|
||||
safeAreaMarginsChanged(safeInsets, getId());
|
||||
return getConsumedInsets(insets);
|
||||
});
|
||||
|
||||
// NOTE: if the window size fits the screen geometry (i.e. edge-to-edge case),
|
||||
// assume this window is the main window and initialize its safe margins with
|
||||
// the insets of the decor view.
|
||||
if (isTopLevel && isSameWindowAndScreenSize) {
|
||||
QtNative.runAction(() -> {
|
||||
// NOTE: The callback onApplyWindowInsetsListener() is not being triggered during
|
||||
// startup, so this is a Workaround to get the safe area margins at startup.
|
||||
// Initially, set the root view insets to the current window, then if the insets
|
||||
// change later, we can rely on setOnApplyWindowInsetsListener() being called.
|
||||
View decorView = ((Activity) getContext()).getWindow().getDecorView();
|
||||
WindowInsets rootInsets = decorView.getRootWindowInsets();
|
||||
Insets rootSafeInsets = getSafeInsets(decorView, rootInsets);
|
||||
safeAreaMarginsChanged(rootSafeInsets, getId());
|
||||
if (getContext() instanceof QtActivityBase) {
|
||||
setOnApplyWindowInsetsListener((view, insets) -> {
|
||||
Insets safeInsets;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
int types = WindowInsets.Type.displayCutout() | WindowInsets.Type.systemBars();
|
||||
safeInsets = insets.getInsets(types);
|
||||
} else {
|
||||
safeInsets = getSafeInsetsPreAndroidR(view, insets);
|
||||
}
|
||||
QtNative.runAction(() -> safeAreaMarginsChanged(safeInsets, getId()));
|
||||
return insets;
|
||||
});
|
||||
}
|
||||
|
||||
QtNative.runAction(() -> requestApplyInsets());
|
||||
QtNative.runAction(() -> requestApplyInsets());
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
WindowInsets getConsumedInsets(WindowInsets insets)
|
||||
Insets getSafeInsetsPreAndroidR(View view, WindowInsets insets)
|
||||
{
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
|
||||
return WindowInsets.CONSUMED;
|
||||
else
|
||||
return insets.consumeSystemWindowInsets();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
Insets getSafeInsets(View view, WindowInsets insets)
|
||||
{
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
int types = WindowInsets.Type.displayCutout() | WindowInsets.Type.systemBars();
|
||||
return insets.getInsets(types);
|
||||
}
|
||||
|
||||
// Android R and older
|
||||
int left = 0;
|
||||
int top = 0;
|
||||
int right = 0;
|
||||
|
@ -96,11 +96,6 @@ void QAndroidPlatformWindow::initialize()
|
||||
}
|
||||
qCDebug(lcQpaWindow) << "Window" << m_nativeViewId << "using surface container type"
|
||||
<< static_cast<int>(m_surfaceContainerType);
|
||||
|
||||
const bool isSameWindowAndScreenSize = geometry().size() == screen()->geometry().size();
|
||||
m_nativeQtWindow.callMethod<void>("registerSafeAreaMarginsListner",
|
||||
window->isTopLevel(), isSameWindowAndScreenSize);
|
||||
|
||||
}
|
||||
|
||||
QAndroidPlatformWindow::~QAndroidPlatformWindow()
|
||||
|
Loading…
x
Reference in New Issue
Block a user