Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50358b5e authored by Joachim Meyer's avatar Joachim Meyer Committed by Amit Kumar
Browse files

Fixes #79 and fix the following bug:

Prevent adding widget view which has been first enqueued to add and then removed without processing the queues.
parent 1e74c41d
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -71,6 +71,7 @@ import org.greenrobot.eventbus.ThreadMode;


import java.io.IOException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Comparator;
import java.util.HashSet;
import java.util.HashSet;
@@ -107,7 +108,6 @@ import foundation.e.blisslauncher.core.events.AppAddEvent;
import foundation.e.blisslauncher.core.events.AppChangeEvent;
import foundation.e.blisslauncher.core.events.AppChangeEvent;
import foundation.e.blisslauncher.core.events.AppRemoveEvent;
import foundation.e.blisslauncher.core.events.AppRemoveEvent;
import foundation.e.blisslauncher.core.events.ShortcutAddEvent;
import foundation.e.blisslauncher.core.events.ShortcutAddEvent;
import foundation.e.blisslauncher.core.executors.AppExecutors;
import foundation.e.blisslauncher.core.network.RetrofitService;
import foundation.e.blisslauncher.core.network.RetrofitService;
import foundation.e.blisslauncher.core.utils.AppUtils;
import foundation.e.blisslauncher.core.utils.AppUtils;
import foundation.e.blisslauncher.core.utils.Constants;
import foundation.e.blisslauncher.core.utils.Constants;
@@ -116,7 +116,6 @@ import foundation.e.blisslauncher.core.utils.ListUtil;
import foundation.e.blisslauncher.features.notification.NotificationRepository;
import foundation.e.blisslauncher.features.notification.NotificationRepository;
import foundation.e.blisslauncher.features.notification.NotificationService;
import foundation.e.blisslauncher.features.notification.NotificationService;
import foundation.e.blisslauncher.features.shortcuts.DeepShortcutManager;
import foundation.e.blisslauncher.features.shortcuts.DeepShortcutManager;
import foundation.e.blisslauncher.features.shortcuts.ShortcutKey;
import foundation.e.blisslauncher.features.suggestions.AutoCompleteAdapter;
import foundation.e.blisslauncher.features.suggestions.AutoCompleteAdapter;
import foundation.e.blisslauncher.features.suggestions.AutoCompleteService;
import foundation.e.blisslauncher.features.suggestions.AutoCompleteService;
import foundation.e.blisslauncher.features.suggestions.AutoCompleteServiceResult;
import foundation.e.blisslauncher.features.suggestions.AutoCompleteServiceResult;
@@ -1318,7 +1317,9 @@ public class LauncherActivity extends AppCompatActivity implements
        }
        }
        // [[END]]
        // [[END]]


        for (int id : mAppWidgetHost.getAppWidgetIds()) {
        int[] widgetIds = mAppWidgetHost.getAppWidgetIds();
        Arrays.sort(widgetIds);
        for (int id : widgetIds) {
            AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(id);
            AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(id);
            if(appWidgetInfo != null){
            if(appWidgetInfo != null){
                RoundedWidgetView hostView = (RoundedWidgetView) mAppWidgetHost.createView(
                RoundedWidgetView hostView = (RoundedWidgetView) mAppWidgetHost.createView(
+15 −4
Original line number Original line Diff line number Diff line
package foundation.e.blisslauncher.features.widgets;
package foundation.e.blisslauncher.features.widgets;


import java.util.Iterator;
import java.util.LinkedList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Queue;


@@ -19,6 +20,16 @@ public class WidgetManager {
    }
    }


    public void enqueueRemoveId(int id) {
    public void enqueueRemoveId(int id) {
        // If the widget is not yet created but scheduled to be created we have to prevent the
        // creation, too.
        Iterator<RoundedWidgetView> it = addWidgetViews.iterator();
        while (it.hasNext()) {
            RoundedWidgetView view = it.next();
            if (id == view.getAppWidgetId()) {
                addWidgetViews.remove(view);
                break;
            }
        }
        removeWidgetIds.add(id);
        removeWidgetIds.add(id);
    }
    }


+5 −3
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@ import foundation.e.blisslauncher.core.customviews.RoundedWidgetView;
import foundation.e.blisslauncher.core.customviews.WidgetHost;
import foundation.e.blisslauncher.core.customviews.WidgetHost;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.List;


import foundation.e.blisslauncher.BlissLauncher;
import foundation.e.blisslauncher.BlissLauncher;
@@ -21,7 +22,6 @@ import foundation.e.blisslauncher.R;


public class WidgetsActivity extends Activity implements AddedWidgetsAdapter.OnActionClickListener {
public class WidgetsActivity extends Activity implements AddedWidgetsAdapter.OnActionClickListener {


    private RecyclerView addedWidgets;
    private AddedWidgetsAdapter mAddedWidgetsAdapter;
    private AddedWidgetsAdapter mAddedWidgetsAdapter;


    private AppWidgetManager mAppWidgetManager;
    private AppWidgetManager mAppWidgetManager;
@@ -38,7 +38,7 @@ public class WidgetsActivity extends Activity implements AddedWidgetsAdapter.OnA
        mAppWidgetManager = BlissLauncher.getApplication(this).getAppWidgetManager();
        mAppWidgetManager = BlissLauncher.getApplication(this).getAppWidgetManager();
        mAppWidgetHost = BlissLauncher.getApplication(this).getAppWidgetHost();
        mAppWidgetHost = BlissLauncher.getApplication(this).getAppWidgetHost();


        addedWidgets = findViewById(R.id.added_widgets_recycler_view);
        RecyclerView addedWidgets = findViewById(R.id.added_widgets_recycler_view);
        addedWidgets.setLayoutManager(new LinearLayoutManager(this));
        addedWidgets.setLayoutManager(new LinearLayoutManager(this));
        addedWidgets.setHasFixedSize(false);
        addedWidgets.setHasFixedSize(false);
        addedWidgets.setNestedScrollingEnabled(false);
        addedWidgets.setNestedScrollingEnabled(false);
@@ -60,7 +60,9 @@ public class WidgetsActivity extends Activity implements AddedWidgetsAdapter.OnA


    private void refreshRecyclerView() {
    private void refreshRecyclerView() {
        List<Widget> widgets = new ArrayList<>();
        List<Widget> widgets = new ArrayList<>();
        for (int id : mAppWidgetHost.getAppWidgetIds()) {
        int[] widgetIds = mAppWidgetHost.getAppWidgetIds();
        Arrays.sort(widgetIds);
        for (int id : widgetIds) {
            AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(id);
            AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(id);
            if (appWidgetInfo != null) {
            if (appWidgetInfo != null) {
                Widget widget = new Widget();
                Widget widget = new Widget();