5package org.qtproject.qt.android;
7import android.app.Activity;
8import android.content.Context;
9import android.content.res.Configuration;
10import android.graphics.Insets;
11import android.view.View;
12import android.view.ViewGroup;
13import android.view.WindowInsets;
19class QtRootLayout
extends QtLayout
21 private static final int s_viewId = View.generateViewId();
22 private Insets m_safeAreaInsets = Insets.NONE;
23 private boolean m_insetContent =
true;
27 super(context, s_viewId);
30 static QtRootLayout findIn(Activity activity)
32 View root =
activity.findViewById(s_viewId);
33 return root instanceof QtRootLayout ? (QtRootLayout)root : null;
37 public WindowInsets onApplyWindowInsets(WindowInsets insets)
39 if (QtWindowInsetsController.isEdgeToEdgeEnforced(getContext())) {
41 final WindowInsets rootInsets = getRootWindowInsets();
42 final int types = WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout();
43 m_safeAreaInsets = (rootInsets !=
null ? rootInsets : insets).getInsets(
types);
46 return super.onApplyWindowInsets(insets);
49 void setContentInsetEnabled(
boolean enabled)
55 private void updateMargins()
57 if (!QtWindowInsetsController.isEdgeToEdgeEnforced(getContext()))
60 final ViewGroup.LayoutParams layoutParams = getLayoutParams();
61 if (!(layoutParams instanceof ViewGroup.MarginLayoutParams))
65 Insets margins = m_insetContent ? m_safeAreaInsets : Insets.NONE;
66 ViewGroup.MarginLayoutParams
params = (ViewGroup.MarginLayoutParams)layoutParams;
67 final boolean leftMarginChanged = params.leftMargin != margins.left;
68 final boolean topMarginChanged = params.topMargin != margins.top;
69 final boolean rightMarginChanged = params.rightMargin != margins.right;
70 final boolean bottomMarginChanged = params.bottomMargin != margins.bottom;
71 if (!leftMarginChanged && !topMarginChanged && !rightMarginChanged && !bottomMarginChanged)
74 params.setMargins(margins.left, margins.top, margins.right, margins.bottom);
79 protected void onSizeChanged(
int w,
int h,
int oldw,
int oldh)
81 Activity
activity = (Activity) getContext();
82 if (activity ==
null || (
w == oldw &&
h == oldh))
85 QtDisplayManager.handleLayoutSizeChanged(
w,
h);
89 public void onConfigurationChanged(Configuration configuration)
91 Activity
activity = (Activity) getContext();
97 QtNative.runAction(() -> {
98 QtDisplayManager.handleOrientationChange(activity);
Q_CORE_EXPORT QtJniTypes::Activity activity()
GLsizei GLenum GLenum * types
GLfloat GLfloat GLfloat w
[0]
GLfloat GLfloat GLfloat GLfloat h