For #1877: Crash on edit or delete the default bookmark folders
parent
9e9b6f98f9
commit
688cae33c3
|
@ -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)
|
||||
|
||||
return when (viewType) {
|
||||
BookmarkItemViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkItemViewHolder(
|
||||
BookmarkItemViewHolder.viewType.ordinal -> BookmarkItemViewHolder(
|
||||
view, actionEmitter, job
|
||||
)
|
||||
BookmarkFolderViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkFolderViewHolder(
|
||||
BookmarkFolderViewHolder.viewType.ordinal -> BookmarkFolderViewHolder(
|
||||
view, actionEmitter, job
|
||||
)
|
||||
BookmarkSeparatorViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkSeparatorViewHolder(
|
||||
BookmarkSeparatorViewHolder.viewType.ordinal -> BookmarkSeparatorViewHolder(
|
||||
view, actionEmitter, job
|
||||
)
|
||||
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) {
|
||||
|
||||
when (holder) {
|
||||
is BookmarkAdapter.BookmarkItemViewHolder -> holder.bind(
|
||||
is BookmarkItemViewHolder -> holder.bind(
|
||||
tree[position],
|
||||
mode,
|
||||
tree[position] in selected
|
||||
)
|
||||
is BookmarkAdapter.BookmarkFolderViewHolder -> holder.bind(
|
||||
is BookmarkFolderViewHolder -> holder.bind(
|
||||
tree[position],
|
||||
mode,
|
||||
tree[position] in selected
|
||||
)
|
||||
is BookmarkAdapter.BookmarkSeparatorViewHolder -> holder.bind(
|
||||
is BookmarkSeparatorViewHolder -> holder.bind(
|
||||
tree[position], mode,
|
||||
tree[position] in selected
|
||||
)
|
||||
|
@ -230,7 +230,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
|
|||
}
|
||||
|
||||
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.setOnClickListener {
|
||||
bookmarkItemMenu.menuBuilder.build(containerView.context).show(
|
||||
|
@ -298,6 +298,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
|
|||
orientation = BrowserMenu.Orientation.DOWN
|
||||
)
|
||||
}
|
||||
bookmark_layout.setOnLongClickListener(null)
|
||||
} else {
|
||||
bookmark_overflow.visibility = View.GONE
|
||||
}
|
||||
|
@ -319,7 +320,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
|
|||
}
|
||||
|
||||
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(
|
||||
BookmarkAction.Select(item)
|
||||
)
|
||||
|
@ -329,7 +330,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
|
|||
}
|
||||
|
||||
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 {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
fun BookmarkNode.inRoots() = enumValues<BookmarkRoot>().any { it.id == guid }
|
||||
|
|
Loading…
Reference in New Issue