diff --git a/res/layout/widgets_full_sheet_large_screen.xml b/res/layout/widgets_full_sheet_large_screen.xml
index b99ac5ca6d..808d3eb9b6 100644
--- a/res/layout/widgets_full_sheet_large_screen.xml
+++ b/res/layout/widgets_full_sheet_large_screen.xml
@@ -20,68 +20,89 @@
android:orientation="vertical"
android:theme="?attr/widgetsTheme">
-
-
+
-
+
-
-
+
+
+ android:layout_gravity="start"
+ android:layout_weight="0.33">
+
-
-
+
+
-
-
+
+
+
-
+ android:layout_weight="0.67"
+ android:paddingEnd="16dp"
+ android:paddingTop="24dp"
+ android:gravity="end"
+ android:layout_gravity="end"
+ android:paddingStart="8dp"
+ android:orientation="horizontal">
+
+
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/res/layout/widgets_full_sheet_paged_view_large_screen.xml b/res/layout/widgets_full_sheet_paged_view_large_screen.xml
index edee35251e..f729981d3d 100644
--- a/res/layout/widgets_full_sheet_paged_view_large_screen.xml
+++ b/res/layout/widgets_full_sheet_paged_view_large_screen.xml
@@ -18,13 +18,11 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="start"
+ android:layout_gravity="start"
+ android:layout_alignParentStart="true">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="start"
+ android:layout_gravity="start"
+ android:layout_alignParentStart="true">
-
+
\ No newline at end of file
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index 0b2f5a547b..d3be00ce3a 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -204,6 +204,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet
&& mDeviceProfile.isLandscape
&& LARGE_SCREEN_WIDGET_PICKER.get();
mHasWorkProfile = context.getSystemService(LauncherApps.class).getProfiles().size() > 1;
+ mOrientation = Launcher.getLauncher(context).getOrientation();
mAdapters.put(AdapterHolder.PRIMARY, new AdapterHolder(AdapterHolder.PRIMARY));
mAdapters.put(AdapterHolder.WORK, new AdapterHolder(AdapterHolder.WORK));
mAdapters.put(AdapterHolder.SEARCH, new AdapterHolder(AdapterHolder.SEARCH));
@@ -232,13 +233,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet
mContent.setClipToOutline(true);
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
- int contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view
- : R.layout.widgets_full_sheet_recyclerview;
+
if (mIsTwoPane) {
- contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view_large_screen
- : R.layout.widgets_full_sheet_recyclerview_large_screen;
+ layoutInflater.inflate(
+ mHasWorkProfile
+ ? R.layout.widgets_full_sheet_paged_view_large_screen
+ : R.layout.widgets_full_sheet_recyclerview_large_screen,
+ findViewById(R.id.recycler_view_container),
+ true);
+ } else {
+ layoutInflater.inflate(
+ mHasWorkProfile
+ ? R.layout.widgets_full_sheet_paged_view
+ : R.layout.widgets_full_sheet_recyclerview,
+ mContent,
+ true);
}
- layoutInflater.inflate(contentLayoutRes, mContent, true);
mFastScroller = findViewById(R.id.fast_scroller);
if (mIsTwoPane) {
@@ -349,7 +359,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet
// if the current active page changes to personal or work we set suggestions
// to be the selected widget
- if (mIsTwoPane && (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB)) {
+ if (mIsTwoPane && mSuggestedWidgetsHeader != null
+ && (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB)) {
mSuggestedWidgetsHeader.callOnClick();
}
@@ -433,7 +444,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet
super.onAttachedToWindow();
mActivityContext.getAppWidgetHolder().addProviderChangeListener(this);
notifyWidgetProvidersChanged();
- onRecommendedWidgetsBound();
+ if (!mIsTwoPane) {
+ onRecommendedWidgetsBound();
+ }
}
@Override
@@ -696,6 +709,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet
recommendedWidgetsInTable, maxTableHeight);
} else {
mRecommendedWidgetsTable.setVisibility(GONE);
+ if (mSuggestedWidgetsContainer != null) {
+ mSuggestedWidgetsContainer.setVisibility(GONE);
+ }
}
}
diff --git a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
index 0fccf7960b..78a006e11e 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
@@ -60,11 +60,11 @@ public class AddWidgetTest extends AbstractLauncherUiTest {
final LauncherAppWidgetProviderInfo widgetInfo =
TestViewHelpers.findWidgetProvider(this, false /* hasConfigureScreen */);
- WidgetResizeFrame resizeFrame = mLauncher.
- getWorkspace().
- openAllWidgets().
- getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())).
- dragWidgetToWorkspace();
+ WidgetResizeFrame resizeFrame = mLauncher
+ .getWorkspace()
+ .openAllWidgets()
+ .getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager()))
+ .dragWidgetToWorkspace();
assertTrue(mActivityMonitor.itemExists(
(info, view) -> info instanceof LauncherAppWidgetInfo &&
diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/tapl/com/android/launcher3/tapl/Widgets.java
index 96e2e3fbec..c1c26ec901 100644
--- a/tests/tapl/com/android/launcher3/tapl/Widgets.java
+++ b/tests/tapl/com/android/launcher3/tapl/Widgets.java
@@ -77,8 +77,8 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
mLauncher.scroll(
widgetsContainer,
Direction.UP,
- new Rect(0, 0, mLauncher.getRightGestureMarginInContainer(widgetsContainer) + 1,
- 0),
+ new Rect(0, 0, 0,
+ mLauncher.getBottomGestureMarginInContainer(widgetsContainer) + 1),
FLING_STEPS, false);
try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer("flung back")) {
verifyActiveContainer();
@@ -168,6 +168,8 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
private UiObject2 findTestAppWidgetsTableContainer() {
final BySelector headerSelector = By.res(mLauncher.getLauncherPackageName(),
"widgets_list_header");
+ final BySelector widgetPickerSelector = By.res(mLauncher.getLauncherPackageName(),
+ "container");
final BySelector targetAppSelector = By.clazz("android.widget.TextView").text(
mLauncher.getContext().getPackageName());
final BySelector widgetsContainerSelector = By.res(mLauncher.getLauncherPackageName(),
@@ -176,17 +178,23 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
boolean hasHeaderExpanded = false;
int scrollDistance = 0;
for (int i = 0; i < SCROLL_ATTEMPTS; i++) {
- UiObject2 fullWidgetsPicker = verifyActiveContainer();
-
- UiObject2 header = mLauncher.waitForObjectInContainer(fullWidgetsPicker,
+ UiObject2 widgetPicker = mLauncher.waitForLauncherObject(widgetPickerSelector);
+ UiObject2 widgetListView = verifyActiveContainer();
+ UiObject2 header = mLauncher.waitForObjectInContainer(widgetListView,
headerSelector);
+ // If we are in a tablet in landscape mode then we will have a two pane view and we use
+ // the right pane to display the widgets table.
+ UiObject2 rightPane = mLauncher.findObjectInContainer(
+ widgetPicker,
+ widgetsContainerSelector);
+
// If a header is barely visible in the bottom edge of the screen, its height could be
// too small for a scroll gesture. Since all header should have roughly the same height,
// let's pick the max height we have seen so far.
scrollDistance = Math.max(scrollDistance, header.getVisibleBounds().height());
// Look for a header that has the test app name.
- UiObject2 headerTitle = mLauncher.findObjectInContainer(fullWidgetsPicker,
+ UiObject2 headerTitle = mLauncher.findObjectInContainer(widgetListView,
targetAppSelector);
if (headerTitle != null) {
// If we find the header and it has not been expanded, let's click it to see the
@@ -202,7 +210,8 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
}
// Look for a widgets list.
- UiObject2 widgetsContainer = mLauncher.findObjectInContainer(fullWidgetsPicker,
+ UiObject2 widgetsContainer = mLauncher.findObjectInContainer(
+ rightPane != null ? rightPane : widgetListView,
widgetsContainerSelector);
if (widgetsContainer != null) {
log("Widgets container found.");
@@ -210,7 +219,9 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer {
}
}
log("Finding test widget package - scroll with distance: " + scrollDistance);
- mLauncher.scrollDownByDistance(fullWidgetsPicker, scrollDistance);
+ mLauncher.scrollDownByDistance(hasHeaderExpanded && rightPane != null
+ ? rightPane
+ : widgetListView, scrollDistance);
}
return null;