From 1c36a5c708c99bf8ba743e83b976e9e05b0ef9ec Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Wed, 12 Dec 2018 13:52:47 -0500 Subject: [PATCH] Sets views clickable according to their visibility Captures clicks on QuickStatusBarHeader so they don't go through and collapse QS (broken in ag/4773943). This includes the black status bar (therefore, it's independent of expansion). Small targets in QSFooterImpl that were obscured were registering clicks, as QSFooterImpl is VISIBLE even if its elements are not. Test: Manual Change-Id: Ie36096355c8a0e8417194ef0f123d5e7b95a7e95 Fixes: 120873445 Fixes: 120677657 --- .../res/layout/quick_status_bar_expanded_header.xml | 5 +++-- .../SystemUI/src/com/android/systemui/qs/QSFooterImpl.java | 7 +++++++ .../src/com/android/systemui/qs/QuickStatusBarHeader.java | 5 ----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml index ed18dc728402a..4e0cbe093c499 100644 --- a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml +++ b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml @@ -24,13 +24,14 @@ android:layout_gravity="@integer/notification_panel_layout_gravity" android:background="@android:color/transparent" android:baselineAligned="false" - android:clickable="false" + android:clickable="true" android:clipChildren="false" android:clipToPadding="false" android:paddingTop="0dp" android:paddingEnd="0dp" android:paddingStart="0dp" - android:elevation="4dp" > + android:elevation="4dp" + android:importantForAccessibility="no" > diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java index 8903a38dc600e..aba9bb804619b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java @@ -272,10 +272,17 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, public void updateEverything() { post(() -> { updateVisibilities(); + updateClickabilities(); setClickable(false); }); } + private void updateClickabilities() { + mMultiUserSwitch.setClickable(mMultiUserSwitch.getVisibility() == View.VISIBLE); + mEdit.setClickable(mEdit.getVisibility() == View.VISIBLE); + mSettingsButton.setClickable(mSettingsButton.getVisibility() == View.VISIBLE); + } + private void updateVisibilities() { mSettingsContainer.setVisibility(mQsDisabled ? View.GONE : View.VISIBLE); mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility( diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 3cecff033c911..7dd9ee5146d71 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -413,7 +413,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements if (mExpanded == expanded) return; mExpanded = expanded; mHeaderQsPanel.setExpanded(expanded); - updateEverything(); } /** @@ -685,10 +684,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements .start(); } - public void updateEverything() { - post(() -> setClickable(false)); - } - public void setQSPanel(final QSPanel qsPanel) { mQsPanel = qsPanel; setupHost(qsPanel.getHost());