1
0
Fork 0

For #1877: Crash on edit or delete the default bookmark folders

master
Colin Lee 2019-04-25 08:09:19 -07:00 committed by Emily Kager
parent 9e9b6f98f9
commit 688cae33c3
1 changed files with 14 additions and 11 deletions

View File

@ -53,13 +53,13 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
val view = LayoutInflater.from(parent.context).inflate(R.layout.bookmark_row, parent, false) val view = LayoutInflater.from(parent.context).inflate(R.layout.bookmark_row, parent, false)
return when (viewType) { return when (viewType) {
BookmarkItemViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkItemViewHolder( BookmarkItemViewHolder.viewType.ordinal -> BookmarkItemViewHolder(
view, actionEmitter, job view, actionEmitter, job
) )
BookmarkFolderViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkFolderViewHolder( BookmarkFolderViewHolder.viewType.ordinal -> BookmarkFolderViewHolder(
view, actionEmitter, job view, actionEmitter, job
) )
BookmarkSeparatorViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkSeparatorViewHolder( BookmarkSeparatorViewHolder.viewType.ordinal -> BookmarkSeparatorViewHolder(
view, actionEmitter, job view, actionEmitter, job
) )
else -> throw IllegalStateException("ViewType $viewType does not match to a ViewHolder") else -> throw IllegalStateException("ViewType $viewType does not match to a ViewHolder")
@ -91,17 +91,17 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder) { when (holder) {
is BookmarkAdapter.BookmarkItemViewHolder -> holder.bind( is BookmarkItemViewHolder -> holder.bind(
tree[position], tree[position],
mode, mode,
tree[position] in selected tree[position] in selected
) )
is BookmarkAdapter.BookmarkFolderViewHolder -> holder.bind( is BookmarkFolderViewHolder -> holder.bind(
tree[position], tree[position],
mode, mode,
tree[position] in selected tree[position] in selected
) )
is BookmarkAdapter.BookmarkSeparatorViewHolder -> holder.bind( is BookmarkSeparatorViewHolder -> holder.bind(
tree[position], mode, tree[position], mode,
tree[position] in selected tree[position] in selected
) )
@ -230,7 +230,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
} }
companion object { companion object {
val viewType = BookmarkAdapter.ViewType.ITEM val viewType = ViewType.ITEM
} }
} }
@ -290,7 +290,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
} }
} }
if (enumValues<BookmarkRoot>().all { it.id != item.guid }) { if (!item.inRoots()) {
bookmark_overflow.increaseTapArea(bookmarkOverflowExtraDips) bookmark_overflow.increaseTapArea(bookmarkOverflowExtraDips)
bookmark_overflow.setOnClickListener { bookmark_overflow.setOnClickListener {
bookmarkItemMenu.menuBuilder.build(containerView.context).show( bookmarkItemMenu.menuBuilder.build(containerView.context).show(
@ -298,6 +298,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
orientation = BrowserMenu.Orientation.DOWN orientation = BrowserMenu.Orientation.DOWN
) )
} }
bookmark_layout.setOnLongClickListener(null)
} else { } else {
bookmark_overflow.visibility = View.GONE bookmark_overflow.visibility = View.GONE
} }
@ -319,7 +320,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
} }
bookmark_layout.setOnLongClickListener { bookmark_layout.setOnLongClickListener {
if (mode == BookmarkState.Mode.Normal) { if (mode == BookmarkState.Mode.Normal && !item.inRoots()) {
if (selected) actionEmitter.onNext(BookmarkAction.Deselect(item)) else actionEmitter.onNext( if (selected) actionEmitter.onNext(BookmarkAction.Deselect(item)) else actionEmitter.onNext(
BookmarkAction.Select(item) BookmarkAction.Select(item)
) )
@ -329,7 +330,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
} }
companion object { companion object {
val viewType = BookmarkAdapter.ViewType.FOLDER val viewType = ViewType.FOLDER
} }
} }
@ -366,7 +367,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
} }
companion object { companion object {
val viewType = BookmarkAdapter.ViewType.SEPARATOR val viewType = ViewType.SEPARATOR
} }
} }
@ -378,3 +379,5 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
ITEM, FOLDER, SEPARATOR ITEM, FOLDER, SEPARATOR
} }
} }
fun BookmarkNode.inRoots() = enumValues<BookmarkRoot>().any { it.id == guid }