|  | @@ -53,6 +53,7 @@ import eu.kanade.tachiyomi.source.LocalSource
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.source.Source
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.source.SourceManager
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.source.online.HttpSource
 | 
	
		
			
				|  |  | +import eu.kanade.tachiyomi.ui.base.controller.DialogController
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.ui.base.controller.FabController
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.ui.base.controller.NucleusController
 | 
	
		
			
				|  |  |  import eu.kanade.tachiyomi.ui.base.controller.getMainAppBarHeight
 | 
	
	
		
			
				|  | @@ -177,7 +178,7 @@ class MangaController :
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private var trackSheet: TrackSheet? = null
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private var dialog: MangaFullCoverDialog? = null
 | 
	
		
			
				|  |  | +    private var dialog: DialogController? = null
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * For [recyclerViewUpdatesToolbarTitleAlpha]
 | 
	
	
		
			
				|  | @@ -583,8 +584,7 @@ class MangaController :
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }.toTypedArray()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected)
 | 
	
		
			
				|  |  | -                    .showDialog(router)
 | 
	
		
			
				|  |  | +                showChangeCategoryDialog(manga, categories, preselected)
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -637,8 +637,21 @@ class MangaController :
 | 
	
		
			
				|  |  |                  QuadStateTextView.State.UNCHECKED.ordinal
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }.toTypedArray()
 | 
	
		
			
				|  |  | -        ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected)
 | 
	
		
			
				|  |  | -            .showDialog(router)
 | 
	
		
			
				|  |  | +        showChangeCategoryDialog(manga, categories, preselected)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private fun showChangeCategoryDialog(manga: Manga, categories: List<Category>, preselected: Array<Int>) {
 | 
	
		
			
				|  |  | +        if (dialog != null) return
 | 
	
		
			
				|  |  | +        dialog = ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected)
 | 
	
		
			
				|  |  | +        dialog?.addLifecycleListener(
 | 
	
		
			
				|  |  | +            object : LifecycleListener() {
 | 
	
		
			
				|  |  | +                override fun postDestroy(controller: Controller) {
 | 
	
		
			
				|  |  | +                    super.postDestroy(controller)
 | 
	
		
			
				|  |  | +                    dialog = null
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +        dialog?.showDialog(router)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      override fun updateCategoriesForMangas(mangas: List<Manga>, addCategories: List<Category>, removeCategories: List<Category>) {
 | 
	
	
		
			
				|  | @@ -822,7 +835,7 @@ class MangaController :
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      fun onSetCoverSuccess() {
 | 
	
		
			
				|  |  |          mangaInfoAdapter?.notifyDataSetChanged()
 | 
	
		
			
				|  |  | -        dialog?.setImage(manga)
 | 
	
		
			
				|  |  | +        (dialog as? MangaFullCoverDialog)?.setImage(manga)
 | 
	
		
			
				|  |  |          activity?.toast(R.string.cover_updated)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 |