fixing some gesture related glitches

This commit is contained in:
tibbi
2022-10-14 11:07:32 +02:00
parent c39f8da9e7
commit 0f5ac6155d
4 changed files with 48 additions and 30 deletions

View File

@ -271,8 +271,7 @@ class MainActivity : SimpleActivity(), FlingListener {
mIgnoreMoveEvents = false mIgnoreMoveEvents = false
mLongPressedIcon = null mLongPressedIcon = null
mLastTouchCoords = Pair(-1f, -1f) mLastTouchCoords = Pair(-1f, -1f)
(widgets_fragment as WidgetsFragment).ignoreTouches = false resetFragmentTouches()
(all_apps_fragment as AllAppsFragment).ignoreTouches = false
home_screen_grid.itemDraggingStopped() home_screen_grid.itemDraggingStopped()
if (!mIgnoreUpEvent) { if (!mIgnoreUpEvent) {
@ -483,7 +482,7 @@ class MainActivity : SimpleActivity(), FlingListener {
menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON
menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment
setOnMenuItemClickListener { item -> setOnMenuItemClickListener { item ->
(all_apps_fragment as AllAppsFragment).ignoreTouches = false resetFragmentTouches()
when (item.itemId) { when (item.itemId) {
R.id.resize -> home_screen_grid.widgetLongPressed(gridItem) R.id.resize -> home_screen_grid.widgetLongPressed(gridItem)
R.id.app_info -> launchAppInfo(gridItem.packageName) R.id.app_info -> launchAppInfo(gridItem.packageName)
@ -495,13 +494,25 @@ class MainActivity : SimpleActivity(), FlingListener {
setOnDismissListener { setOnDismissListener {
mOpenPopupMenu = null mOpenPopupMenu = null
(all_apps_fragment as AllAppsFragment).ignoreTouches = false resetFragmentTouches()
} }
show() show()
} }
} }
private fun resetFragmentTouches() {
(widgets_fragment as WidgetsFragment).apply {
touchDownY = -1
ignoreTouches = false
}
(all_apps_fragment as AllAppsFragment).apply {
touchDownY = -1
ignoreTouches = false
}
}
private fun showWidgetsFragment() { private fun showWidgetsFragment() {
showFragment(widgets_fragment) showFragment(widgets_fragment)
} }
@ -602,7 +613,8 @@ class MainActivity : SimpleActivity(), FlingListener {
try { try {
val defaultDialerPackage = (getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage val defaultDialerPackage = (getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply { appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply {
val dialerIcon = HomeScreenGridItem(null, 0, ROW_COUNT - 1, 0, ROW_COUNT - 1, defaultDialerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null) val dialerIcon =
HomeScreenGridItem(null, 0, ROW_COUNT - 1, 0, ROW_COUNT - 1, defaultDialerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
homeScreenGridItems.add(dialerIcon) homeScreenGridItems.add(dialerIcon)
} }
} catch (e: Exception) { } catch (e: Exception) {
@ -647,7 +659,8 @@ class MainActivity : SimpleActivity(), FlingListener {
val resolveInfo = packageManager.resolveActivity(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY) val resolveInfo = packageManager.resolveActivity(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY)
val defaultCameraPackage = resolveInfo!!.activityInfo.packageName val defaultCameraPackage = resolveInfo!!.activityInfo.packageName
appLaunchers.firstOrNull { it.packageName == defaultCameraPackage }?.apply { appLaunchers.firstOrNull { it.packageName == defaultCameraPackage }?.apply {
val cameraIcon = HomeScreenGridItem(null, 4, ROW_COUNT - 1, 4, ROW_COUNT - 1, defaultCameraPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null) val cameraIcon =
HomeScreenGridItem(null, 4, ROW_COUNT - 1, 4, ROW_COUNT - 1, defaultCameraPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
homeScreenGridItems.add(cameraIcon) homeScreenGridItems.add(cameraIcon)
} }
} catch (e: Exception) { } catch (e: Exception) {

View File

@ -7,7 +7,6 @@ import android.widget.RelativeLayout
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.simplemobiletools.commons.extensions.getProperTextColor import com.simplemobiletools.commons.extensions.getProperTextColor
import com.simplemobiletools.commons.extensions.toast
import com.simplemobiletools.launcher.R import com.simplemobiletools.launcher.R
import com.simplemobiletools.launcher.activities.SimpleActivity import com.simplemobiletools.launcher.activities.SimpleActivity
import com.simplemobiletools.launcher.helpers.WIDGET_LIST_ITEMS_HOLDER import com.simplemobiletools.launcher.helpers.WIDGET_LIST_ITEMS_HOLDER
@ -23,7 +22,8 @@ import kotlinx.android.synthetic.main.item_widget_preview.view.*
class WidgetsAdapter( class WidgetsAdapter(
val activity: SimpleActivity, val activity: SimpleActivity,
var widgetListItems: ArrayList<WidgetsListItem>, var widgetListItems: ArrayList<WidgetsListItem>,
val widgetsFragmentListener: WidgetsFragmentListener val widgetsFragmentListener: WidgetsFragmentListener,
val itemClick: () -> Unit
) : RecyclerView.Adapter<WidgetsAdapter.ViewHolder>() { ) : RecyclerView.Adapter<WidgetsAdapter.ViewHolder>() {
private var textColor = activity.getProperTextColor() private var textColor = activity.getProperTextColor()
@ -102,9 +102,7 @@ class WidgetsAdapter(
.load(widget.widgetPreviewImage) .load(widget.widgetPreviewImage)
.into(widgetPreview.widget_image) .into(widgetPreview.widget_image)
widgetPreview.setOnClickListener { widgetPreview.setOnClickListener { itemClick() }
activity.toast(R.string.touch_hold_widget)
}
widgetPreview.setOnLongClickListener { view -> widgetPreview.setOnLongClickListener { view ->
widgetsFragmentListener.onWidgetLongPressed(widget) widgetsFragmentListener.onWidgetLongPressed(widget)

View File

@ -99,6 +99,8 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
if (currAdapter == null) { if (currAdapter == null) {
LaunchersAdapter(activity!!, launchers, this) { LaunchersAdapter(activity!!, launchers, this) {
activity?.launchApp((it as AppLauncher).packageName, it.activityName) activity?.launchApp((it as AppLauncher).packageName, it.activityName)
ignoreTouches = false
touchDownY = -1
}.apply { }.apply {
all_apps_grid.adapter = this all_apps_grid.adapter = this
} }
@ -150,8 +152,7 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
} }
override fun onAppLauncherLongPressed(x: Float, y: Float, appLauncher: AppLauncher) { override fun onAppLauncherLongPressed(x: Float, y: Float, appLauncher: AppLauncher) {
val gridItem = val gridItem = HomeScreenGridItem(
HomeScreenGridItem(
null, null,
-1, -1,
-1, -1,
@ -168,6 +169,7 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
null, null,
appLauncher.drawable appLauncher.drawable
) )
activity?.showHomeIconMenu(x, y, gridItem, true) activity?.showHomeIconMenu(x, y, gridItem, true)
ignoreTouches = true ignoreTouches = true
} }

View File

@ -15,6 +15,7 @@ import android.view.WindowManager
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.helpers.isRPlus import com.simplemobiletools.commons.helpers.isRPlus
import com.simplemobiletools.launcher.R
import com.simplemobiletools.launcher.activities.MainActivity import com.simplemobiletools.launcher.activities.MainActivity
import com.simplemobiletools.launcher.adapters.WidgetsAdapter import com.simplemobiletools.launcher.adapters.WidgetsAdapter
import com.simplemobiletools.launcher.extensions.getInitialCellSize import com.simplemobiletools.launcher.extensions.getInitialCellSize
@ -159,7 +160,11 @@ class WidgetsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
activity?.runOnUiThread { activity?.runOnUiThread {
val currAdapter = widgets_list.adapter val currAdapter = widgets_list.adapter
if (currAdapter == null) { if (currAdapter == null) {
WidgetsAdapter(activity!!, widgetsListItems, this).apply { WidgetsAdapter(activity!!, widgetsListItems, this) {
context.toast(R.string.touch_hold_widget)
ignoreTouches = false
touchDownY = -1
}.apply {
widgets_list.adapter = this widgets_list.adapter = this
} }
} else { } else {