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);
|
m_gestureDetector.setIsLongpressEnabled(true);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
@UsedFromNativeCode
|
if (getContext() instanceof QtActivityBase) {
|
||||||
void registerSafeAreaMarginsListner(boolean isTopLevel, boolean isSameWindowAndScreenSize)
|
setOnApplyWindowInsetsListener((view, insets) -> {
|
||||||
{
|
Insets safeInsets;
|
||||||
if (!(getContext() instanceof QtActivityBase))
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
return;
|
int types = WindowInsets.Type.displayCutout() | WindowInsets.Type.systemBars();
|
||||||
|
safeInsets = insets.getInsets(types);
|
||||||
setOnApplyWindowInsetsListener((view, insets) -> {
|
} else {
|
||||||
Insets safeInsets = getSafeInsets(view, insets);
|
safeInsets = getSafeInsetsPreAndroidR(view, insets);
|
||||||
safeAreaMarginsChanged(safeInsets, getId());
|
}
|
||||||
return getConsumedInsets(insets);
|
QtNative.runAction(() -> safeAreaMarginsChanged(safeInsets, getId()));
|
||||||
});
|
return 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());
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
QtNative.runAction(() -> requestApplyInsets());
|
QtNative.runAction(() -> requestApplyInsets());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@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 left = 0;
|
||||||
int top = 0;
|
int top = 0;
|
||||||
int right = 0;
|
int right = 0;
|
||||||
|
@ -96,11 +96,6 @@ void QAndroidPlatformWindow::initialize()
|
|||||||
}
|
}
|
||||||
qCDebug(lcQpaWindow) << "Window" << m_nativeViewId << "using surface container type"
|
qCDebug(lcQpaWindow) << "Window" << m_nativeViewId << "using surface container type"
|
||||||
<< static_cast<int>(m_surfaceContainerType);
|
<< static_cast<int>(m_surfaceContainerType);
|
||||||
|
|
||||||
const bool isSameWindowAndScreenSize = geometry().size() == screen()->geometry().size();
|
|
||||||
m_nativeQtWindow.callMethod<void>("registerSafeAreaMarginsListner",
|
|
||||||
window->isTopLevel(), isSameWindowAndScreenSize);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QAndroidPlatformWindow::~QAndroidPlatformWindow()
|
QAndroidPlatformWindow::~QAndroidPlatformWindow()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user