Loading src/com/android/launcher3/Launcher.java +16 −33 Original line number Diff line number Diff line Loading @@ -1470,9 +1470,7 @@ public class Launcher extends Activity } LauncherModel.addItemToDatabase(this, info, container, screenId, cellXY[0], cellXY[1]); mWorkspace.addInScreen(view, container, screenId, cellXY[0], cellXY[1], 1, 1, isWorkspaceLocked()); mWorkspace.addInScreen(view, info); } /** Loading Loading @@ -1507,20 +1505,15 @@ public class Launcher extends Activity hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo); } hostView.setVisibility(View.VISIBLE); addAppWidgetToWorkspace(hostView, launcherInfo, appWidgetInfo, isWorkspaceLocked()); prepareAppWidget(hostView, launcherInfo); mWorkspace.addInScreen(hostView, launcherInfo); } private void addAppWidgetToWorkspace( AppWidgetHostView hostView, LauncherAppWidgetInfo item, LauncherAppWidgetProviderInfo appWidgetInfo, boolean insert) { private void prepareAppWidget(AppWidgetHostView hostView, LauncherAppWidgetInfo item) { hostView.setTag(item); item.onBindAppWidget(this, hostView); hostView.setFocusable(true); hostView.setOnFocusChangeListener(mFocusHandler); mWorkspace.addInScreen(hostView, item.container, item.screenId, item.cellX, item.cellY, item.spanX, item.spanY, insert); } private final BroadcastReceiver mReceiver = new BroadcastReceiver() { Loading Loading @@ -2105,8 +2098,7 @@ public class Launcher extends Activity // Create the view FolderIcon newFolder = FolderIcon.fromXml(R.layout.folder_icon, this, layout, folderInfo, mIconCache); mWorkspace.addInScreen(newFolder, container, screenId, cellX, cellY, 1, 1, isWorkspaceLocked()); mWorkspace.addInScreen(newFolder, folderInfo); // Force measure the new folder icon CellLayout parent = mWorkspace.getParentCellLayoutForView(newFolder); parent.getShortcutsAndWidgets().measureChild(newFolder); Loading Loading @@ -3365,8 +3357,7 @@ public class Launcher extends Activity } } } workspace.addInScreenFromBind(view, item.container, item.screenId, item.cellX, item.cellY, 1, 1); workspace.addInScreenFromBind(view, item); if (animateIcons) { // Animate all the applications up now view.setAlpha(0f); Loading Loading @@ -3408,15 +3399,6 @@ public class Launcher extends Activity workspace.requestLayout(); } private void bindSafeModeWidget(LauncherAppWidgetInfo item) { PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, true); view.updateIcon(mIconCache); view.updateAppWidget(null); view.setOnClickListener(this); addAppWidgetToWorkspace(view, item, null, false); mWorkspace.requestLayout(); } /** * Add the views for a widget to the workspace. * Loading @@ -3433,7 +3415,11 @@ public class Launcher extends Activity } if (mIsSafeModeEnabled) { bindSafeModeWidget(item); PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, mIconCache, true); prepareAppWidget(view, item); mWorkspace.addInScreen(view, item); mWorkspace.requestLayout(); return; } Loading Loading @@ -3521,6 +3507,7 @@ public class Launcher extends Activity } } final AppWidgetHostView view; if (item.restoreStatus == LauncherAppWidgetInfo.RESTORE_COMPLETED) { if (DEBUG_WIDGETS) { Log.d(TAG, "bindAppWidget: id=" + item.appWidgetId + " belongs to component " Loading @@ -3536,16 +3523,12 @@ public class Launcher extends Activity item.minSpanX = appWidgetInfo.minSpanX; item.minSpanY = appWidgetInfo.minSpanY; addAppWidgetToWorkspace( mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo), item, appWidgetInfo, false); view = mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo); } else { PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, false); view.updateIcon(mIconCache); view.updateAppWidget(null); view.setOnClickListener(this); addAppWidgetToWorkspace(view, item, null, false); view = new PendingAppWidgetHostView(this, item, mIconCache, false); } prepareAppWidget(view, item); mWorkspace.addInScreen(view, item); mWorkspace.requestLayout(); if (DEBUG_WIDGETS) { Loading src/com/android/launcher3/PendingAppWidgetHostView.java +6 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implemen @TargetApi(Build.VERSION_CODES.LOLLIPOP) public PendingAppWidgetHostView(Context context, LauncherAppWidgetInfo info, boolean disabledForSafeMode) { IconCache cache, boolean disabledForSafeMode) { super(new ContextThemeWrapper(context, R.style.WidgetContainerTheme)); mLauncher = Launcher.getLauncher(context); Loading @@ -84,6 +84,10 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implemen if (Utilities.ATLEAST_LOLLIPOP) { setElevation(getResources().getDimension(R.dimen.pending_widget_elevation)); } updateIcon(cache); updateAppWidget(null); setOnClickListener(mLauncher); } @Override Loading Loading @@ -119,7 +123,7 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implemen mDrawableSizeChanged = true; } public void updateIcon(IconCache cache) { private void updateIcon(IconCache cache) { Bitmap icon = cache.getIcon(mIconLookupIntent, mInfo.user); if (mIcon == icon) { return; Loading src/com/android/launcher3/Workspace.java +27 −33 Original line number Diff line number Diff line Loading @@ -1043,23 +1043,28 @@ public class Workspace extends PagedView } } // See implementation for parameter definition. void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY) { addInScreen(child, container, screenId, x, y, spanX, spanY, false, false); /** * At bind time, we use the rank (screenId) to compute x and y for hotseat items. * See {@link #addInScreen}. */ public void addInScreenFromBind(View child, ItemInfo info) { int x = info.cellX; int y = info.cellY; if (info.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { int screenId = (int) info.screenId; x = mLauncher.getHotseat().getCellXFromOrder(screenId); y = mLauncher.getHotseat().getCellYFromOrder(screenId); } // At bind time, we use the rank (screenId) to compute x and y for hotseat items. // See implementation for parameter definition. public void addInScreenFromBind(View child, long container, long screenId, int x, int y, int spanX, int spanY) { addInScreen(child, container, screenId, x, y, spanX, spanY, false, true); addInScreen(child, info.container, info.screenId, x, y, info.spanX, info.spanY); } // See implementation for parameter definition. void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY, boolean insert) { addInScreen(child, container, screenId, x, y, spanX, spanY, insert, false); /** * Adds the specified child in the specified screen based on the {@param info} * See {@link #addInScreen}. */ public void addInScreen(View child, ItemInfo info) { addInScreen(child, info.container, info.screenId, info.cellX, info.cellY, info.spanX, info.spanY); } /** Loading @@ -1072,13 +1077,9 @@ public class Workspace extends PagedView * @param y The Y position of the child in the screen's grid. * @param spanX The number of cells spanned horizontally by the child. * @param spanY The number of cells spanned vertically by the child. * @param insert When true, the child is inserted at the beginning of the children list. * @param computeXYFromRank When true, we use the rank (stored in screenId) to compute * the x and y position in which to place hotseat items. Otherwise * we use the x and y position to compute the rank. */ void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY, boolean insert, boolean computeXYFromRank) { private void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY) { if (container == LauncherSettings.Favorites.CONTAINER_DESKTOP) { if (getScreenWithId(screenId) == null) { Log.e(TAG, "Skipping child, screenId " + screenId + " not found"); Loading @@ -1101,13 +1102,6 @@ public class Workspace extends PagedView if (child instanceof FolderIcon) { ((FolderIcon) child).setTextVisible(false); } if (computeXYFromRank) { x = mLauncher.getHotseat().getCellXFromOrder((int) screenId); y = mLauncher.getHotseat().getCellYFromOrder((int) screenId); } else { screenId = mLauncher.getHotseat().getOrderInHotseat(x, y); } } else { // Show folder title if not in the hotseat if (child instanceof FolderIcon) { Loading Loading @@ -1138,7 +1132,7 @@ public class Workspace extends PagedView int childId = mLauncher.getViewIdForItem(info); boolean markCellsAsOccupied = !(child instanceof Folder); if (!layout.addViewToCellLayout(child, insert ? 0 : -1, childId, lp, markCellsAsOccupied)) { if (!layout.addViewToCellLayout(child, -1, childId, lp, markCellsAsOccupied)) { // TODO: This branch occurs when the workspace is adding views // outside of the defined grid // maybe we should be deleting these items from the LauncherModel? Loading Loading @@ -2519,7 +2513,7 @@ public class Workspace extends PagedView if (d.dragSource != this) { final int[] touchXY = new int[] { (int) mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1] }; onDropExternal(touchXY, d.dragInfo, dropTargetLayout, false, d); onDropExternal(touchXY, d.dragInfo, dropTargetLayout, d); } else if (mDragInfo != null) { final View cell = mDragInfo.cell; boolean droppedOnOriginalCellDuringTransition = false; Loading Loading @@ -3265,7 +3259,7 @@ public class Workspace extends PagedView * to add an item to one of the workspace screens. */ private void onDropExternal(final int[] touchXY, final ItemInfo dragInfo, final CellLayout cellLayout, boolean insertAtFirst, DragObject d) { final CellLayout cellLayout, DragObject d) { final Runnable exitSpringLoadedRunnable = new Runnable() { @Override public void run() { Loading Loading @@ -3415,8 +3409,8 @@ public class Workspace extends PagedView LauncherModel.addOrMoveItemInDatabase(mLauncher, info, container, screenId, mTargetCell[0], mTargetCell[1]); addInScreen(view, container, screenId, mTargetCell[0], mTargetCell[1], info.spanX, info.spanY, insertAtFirst); addInScreen(view, container, screenId, mTargetCell[0], mTargetCell[1], info.spanX, info.spanY); cellLayout.onDropChild(view); cellLayout.getShortcutsAndWidgets().measureChild(view); Loading src/com/android/launcher3/folder/Folder.java +1 −2 Original line number Diff line number Diff line Loading @@ -1225,8 +1225,7 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC // We add the child after removing the folder to prevent both from existing // at the same time in the CellLayout. We need to add the new item with // addInScreenFromBind() to ensure that hotseat items are placed correctly. mLauncher.getWorkspace().addInScreenFromBind(newIcon, mInfo.container, mInfo.screenId, mInfo.cellX, mInfo.cellY, mInfo.spanX, mInfo.spanY); mLauncher.getWorkspace().addInScreenFromBind(newIcon, mInfo); // Focus the newly created child newIcon.requestFocus(); Loading Loading
src/com/android/launcher3/Launcher.java +16 −33 Original line number Diff line number Diff line Loading @@ -1470,9 +1470,7 @@ public class Launcher extends Activity } LauncherModel.addItemToDatabase(this, info, container, screenId, cellXY[0], cellXY[1]); mWorkspace.addInScreen(view, container, screenId, cellXY[0], cellXY[1], 1, 1, isWorkspaceLocked()); mWorkspace.addInScreen(view, info); } /** Loading Loading @@ -1507,20 +1505,15 @@ public class Launcher extends Activity hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo); } hostView.setVisibility(View.VISIBLE); addAppWidgetToWorkspace(hostView, launcherInfo, appWidgetInfo, isWorkspaceLocked()); prepareAppWidget(hostView, launcherInfo); mWorkspace.addInScreen(hostView, launcherInfo); } private void addAppWidgetToWorkspace( AppWidgetHostView hostView, LauncherAppWidgetInfo item, LauncherAppWidgetProviderInfo appWidgetInfo, boolean insert) { private void prepareAppWidget(AppWidgetHostView hostView, LauncherAppWidgetInfo item) { hostView.setTag(item); item.onBindAppWidget(this, hostView); hostView.setFocusable(true); hostView.setOnFocusChangeListener(mFocusHandler); mWorkspace.addInScreen(hostView, item.container, item.screenId, item.cellX, item.cellY, item.spanX, item.spanY, insert); } private final BroadcastReceiver mReceiver = new BroadcastReceiver() { Loading Loading @@ -2105,8 +2098,7 @@ public class Launcher extends Activity // Create the view FolderIcon newFolder = FolderIcon.fromXml(R.layout.folder_icon, this, layout, folderInfo, mIconCache); mWorkspace.addInScreen(newFolder, container, screenId, cellX, cellY, 1, 1, isWorkspaceLocked()); mWorkspace.addInScreen(newFolder, folderInfo); // Force measure the new folder icon CellLayout parent = mWorkspace.getParentCellLayoutForView(newFolder); parent.getShortcutsAndWidgets().measureChild(newFolder); Loading Loading @@ -3365,8 +3357,7 @@ public class Launcher extends Activity } } } workspace.addInScreenFromBind(view, item.container, item.screenId, item.cellX, item.cellY, 1, 1); workspace.addInScreenFromBind(view, item); if (animateIcons) { // Animate all the applications up now view.setAlpha(0f); Loading Loading @@ -3408,15 +3399,6 @@ public class Launcher extends Activity workspace.requestLayout(); } private void bindSafeModeWidget(LauncherAppWidgetInfo item) { PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, true); view.updateIcon(mIconCache); view.updateAppWidget(null); view.setOnClickListener(this); addAppWidgetToWorkspace(view, item, null, false); mWorkspace.requestLayout(); } /** * Add the views for a widget to the workspace. * Loading @@ -3433,7 +3415,11 @@ public class Launcher extends Activity } if (mIsSafeModeEnabled) { bindSafeModeWidget(item); PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, mIconCache, true); prepareAppWidget(view, item); mWorkspace.addInScreen(view, item); mWorkspace.requestLayout(); return; } Loading Loading @@ -3521,6 +3507,7 @@ public class Launcher extends Activity } } final AppWidgetHostView view; if (item.restoreStatus == LauncherAppWidgetInfo.RESTORE_COMPLETED) { if (DEBUG_WIDGETS) { Log.d(TAG, "bindAppWidget: id=" + item.appWidgetId + " belongs to component " Loading @@ -3536,16 +3523,12 @@ public class Launcher extends Activity item.minSpanX = appWidgetInfo.minSpanX; item.minSpanY = appWidgetInfo.minSpanY; addAppWidgetToWorkspace( mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo), item, appWidgetInfo, false); view = mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo); } else { PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, false); view.updateIcon(mIconCache); view.updateAppWidget(null); view.setOnClickListener(this); addAppWidgetToWorkspace(view, item, null, false); view = new PendingAppWidgetHostView(this, item, mIconCache, false); } prepareAppWidget(view, item); mWorkspace.addInScreen(view, item); mWorkspace.requestLayout(); if (DEBUG_WIDGETS) { Loading
src/com/android/launcher3/PendingAppWidgetHostView.java +6 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implemen @TargetApi(Build.VERSION_CODES.LOLLIPOP) public PendingAppWidgetHostView(Context context, LauncherAppWidgetInfo info, boolean disabledForSafeMode) { IconCache cache, boolean disabledForSafeMode) { super(new ContextThemeWrapper(context, R.style.WidgetContainerTheme)); mLauncher = Launcher.getLauncher(context); Loading @@ -84,6 +84,10 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implemen if (Utilities.ATLEAST_LOLLIPOP) { setElevation(getResources().getDimension(R.dimen.pending_widget_elevation)); } updateIcon(cache); updateAppWidget(null); setOnClickListener(mLauncher); } @Override Loading Loading @@ -119,7 +123,7 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implemen mDrawableSizeChanged = true; } public void updateIcon(IconCache cache) { private void updateIcon(IconCache cache) { Bitmap icon = cache.getIcon(mIconLookupIntent, mInfo.user); if (mIcon == icon) { return; Loading
src/com/android/launcher3/Workspace.java +27 −33 Original line number Diff line number Diff line Loading @@ -1043,23 +1043,28 @@ public class Workspace extends PagedView } } // See implementation for parameter definition. void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY) { addInScreen(child, container, screenId, x, y, spanX, spanY, false, false); /** * At bind time, we use the rank (screenId) to compute x and y for hotseat items. * See {@link #addInScreen}. */ public void addInScreenFromBind(View child, ItemInfo info) { int x = info.cellX; int y = info.cellY; if (info.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { int screenId = (int) info.screenId; x = mLauncher.getHotseat().getCellXFromOrder(screenId); y = mLauncher.getHotseat().getCellYFromOrder(screenId); } // At bind time, we use the rank (screenId) to compute x and y for hotseat items. // See implementation for parameter definition. public void addInScreenFromBind(View child, long container, long screenId, int x, int y, int spanX, int spanY) { addInScreen(child, container, screenId, x, y, spanX, spanY, false, true); addInScreen(child, info.container, info.screenId, x, y, info.spanX, info.spanY); } // See implementation for parameter definition. void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY, boolean insert) { addInScreen(child, container, screenId, x, y, spanX, spanY, insert, false); /** * Adds the specified child in the specified screen based on the {@param info} * See {@link #addInScreen}. */ public void addInScreen(View child, ItemInfo info) { addInScreen(child, info.container, info.screenId, info.cellX, info.cellY, info.spanX, info.spanY); } /** Loading @@ -1072,13 +1077,9 @@ public class Workspace extends PagedView * @param y The Y position of the child in the screen's grid. * @param spanX The number of cells spanned horizontally by the child. * @param spanY The number of cells spanned vertically by the child. * @param insert When true, the child is inserted at the beginning of the children list. * @param computeXYFromRank When true, we use the rank (stored in screenId) to compute * the x and y position in which to place hotseat items. Otherwise * we use the x and y position to compute the rank. */ void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY, boolean insert, boolean computeXYFromRank) { private void addInScreen(View child, long container, long screenId, int x, int y, int spanX, int spanY) { if (container == LauncherSettings.Favorites.CONTAINER_DESKTOP) { if (getScreenWithId(screenId) == null) { Log.e(TAG, "Skipping child, screenId " + screenId + " not found"); Loading @@ -1101,13 +1102,6 @@ public class Workspace extends PagedView if (child instanceof FolderIcon) { ((FolderIcon) child).setTextVisible(false); } if (computeXYFromRank) { x = mLauncher.getHotseat().getCellXFromOrder((int) screenId); y = mLauncher.getHotseat().getCellYFromOrder((int) screenId); } else { screenId = mLauncher.getHotseat().getOrderInHotseat(x, y); } } else { // Show folder title if not in the hotseat if (child instanceof FolderIcon) { Loading Loading @@ -1138,7 +1132,7 @@ public class Workspace extends PagedView int childId = mLauncher.getViewIdForItem(info); boolean markCellsAsOccupied = !(child instanceof Folder); if (!layout.addViewToCellLayout(child, insert ? 0 : -1, childId, lp, markCellsAsOccupied)) { if (!layout.addViewToCellLayout(child, -1, childId, lp, markCellsAsOccupied)) { // TODO: This branch occurs when the workspace is adding views // outside of the defined grid // maybe we should be deleting these items from the LauncherModel? Loading Loading @@ -2519,7 +2513,7 @@ public class Workspace extends PagedView if (d.dragSource != this) { final int[] touchXY = new int[] { (int) mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1] }; onDropExternal(touchXY, d.dragInfo, dropTargetLayout, false, d); onDropExternal(touchXY, d.dragInfo, dropTargetLayout, d); } else if (mDragInfo != null) { final View cell = mDragInfo.cell; boolean droppedOnOriginalCellDuringTransition = false; Loading Loading @@ -3265,7 +3259,7 @@ public class Workspace extends PagedView * to add an item to one of the workspace screens. */ private void onDropExternal(final int[] touchXY, final ItemInfo dragInfo, final CellLayout cellLayout, boolean insertAtFirst, DragObject d) { final CellLayout cellLayout, DragObject d) { final Runnable exitSpringLoadedRunnable = new Runnable() { @Override public void run() { Loading Loading @@ -3415,8 +3409,8 @@ public class Workspace extends PagedView LauncherModel.addOrMoveItemInDatabase(mLauncher, info, container, screenId, mTargetCell[0], mTargetCell[1]); addInScreen(view, container, screenId, mTargetCell[0], mTargetCell[1], info.spanX, info.spanY, insertAtFirst); addInScreen(view, container, screenId, mTargetCell[0], mTargetCell[1], info.spanX, info.spanY); cellLayout.onDropChild(view); cellLayout.getShortcutsAndWidgets().measureChild(view); Loading
src/com/android/launcher3/folder/Folder.java +1 −2 Original line number Diff line number Diff line Loading @@ -1225,8 +1225,7 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC // We add the child after removing the folder to prevent both from existing // at the same time in the CellLayout. We need to add the new item with // addInScreenFromBind() to ensure that hotseat items are placed correctly. mLauncher.getWorkspace().addInScreenFromBind(newIcon, mInfo.container, mInfo.screenId, mInfo.cellX, mInfo.cellY, mInfo.spanX, mInfo.spanY); mLauncher.getWorkspace().addInScreenFromBind(newIcon, mInfo); // Focus the newly created child newIcon.requestFocus(); Loading