+ GSList *mimeview_list, *viewer_list;
+
+ for (mimeview_list = mimeviews; mimeview_list != NULL; mimeview_list = g_slist_next(mimeview_list)) {
+ MimeView *mimeview = (MimeView *) mimeview_list->data;
+
+ if (mimeview->mimeviewer && mimeview->mimeviewer->factory == factory) {
+ mimeview_change_view_type(mimeview, MIMEVIEW_TEXT);
+ mimeview->mimeviewer = NULL;
+ }
+
+ while ((viewer_list = g_slist_find_custom(mimeview->viewers, factory, cmp_viewer_by_factroy)) != NULL) {
+ MimeViewer *mimeviewer = (MimeViewer *) viewer_list->data;
+
+ mimeviewer->destroy_viewer(mimeviewer);
+ mimeview->viewers = g_slist_remove(mimeview->viewers, mimeviewer);
+ }
+ }
+