Minor URL-related fix-ups
This commit is contained in:
		
							parent
							
								
									380ddd540b
								
							
						
					
					
						commit
						5f8dc88fa7
					
				
							
								
								
									
										27
									
								
								fastiv.c
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								fastiv.c
									
									
									
									
									
								
							| @ -318,15 +318,20 @@ show_error_dialog(GError *error) | |||||||
| 	g_error_free(error); | 	g_error_free(error); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void | ||||||
|  | set_window_title(const char *uri) | ||||||
|  | { | ||||||
|  | 	GFile *file = g_file_new_for_uri(uri); | ||||||
|  | 	gchar *name = g_file_get_parse_name(file); | ||||||
|  | 	gtk_window_set_title(GTK_WINDOW(g.window), name); | ||||||
|  | 	g_free(name); | ||||||
|  | 	g_object_unref(file); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void | static void | ||||||
| switch_to_browser(void) | switch_to_browser(void) | ||||||
| { | { | ||||||
| 	// TODO(p): Use g_file_get_parse_name() or something.
 | 	set_window_title(g.directory); | ||||||
| 	GFile *file = g_file_new_for_uri(g.directory); |  | ||||||
| 	const char *path = g_file_peek_path(file); |  | ||||||
| 	gtk_window_set_title(GTK_WINDOW(g.window), path ? path : g.directory); |  | ||||||
| 	g_object_unref(file); |  | ||||||
| 
 |  | ||||||
| 	gtk_stack_set_visible_child(GTK_STACK(g.stack), g.browser_paned); | 	gtk_stack_set_visible_child(GTK_STACK(g.stack), g.browser_paned); | ||||||
| 	gtk_widget_grab_focus(g.browser_scroller); | 	gtk_widget_grab_focus(g.browser_scroller); | ||||||
| } | } | ||||||
| @ -334,12 +339,7 @@ switch_to_browser(void) | |||||||
| static void | static void | ||||||
| switch_to_view(const char *uri) | switch_to_view(const char *uri) | ||||||
| { | { | ||||||
| 	// TODO(p): Use g_file_get_parse_name() or something.
 | 	set_window_title(uri); | ||||||
| 	GFile *file = g_file_new_for_uri(uri); |  | ||||||
| 	const char *path = g_file_peek_path(file); |  | ||||||
| 	gtk_window_set_title(GTK_WINDOW(g.window), path ? path : uri); |  | ||||||
| 	g_object_unref(file); |  | ||||||
| 
 |  | ||||||
| 	gtk_stack_set_visible_child(GTK_STACK(g.stack), g.view_box); | 	gtk_stack_set_visible_child(GTK_STACK(g.stack), g.view_box); | ||||||
| 	gtk_widget_grab_focus(g.view); | 	gtk_widget_grab_focus(g.view); | ||||||
| } | } | ||||||
| @ -451,8 +451,9 @@ load_directory(const gchar *uri) | |||||||
| 
 | 
 | ||||||
| 		g_ptr_array_sort(g.files, files_compare); | 		g_ptr_array_sort(g.files, files_compare); | ||||||
| 		update_files_index(); | 		update_files_index(); | ||||||
|  | 	} else if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED)) { | ||||||
|  | 		g_error_free(error); | ||||||
| 	} else { | 	} else { | ||||||
| 		// TODO(p): Handle "Operation not supported" silently.
 |  | ||||||
| 		show_error_dialog(error); | 		show_error_dialog(error); | ||||||
| 	} | 	} | ||||||
| 	g_object_unref(file); | 	g_object_unref(file); | ||||||
|  | |||||||
| @ -488,7 +488,6 @@ on_thumbnailer_ready(GObject *object, GAsyncResult *res, gpointer user_data) | |||||||
| 	if (succeeded) | 	if (succeeded) | ||||||
| 		thumbnailer_reprocess_entry(self, entry); | 		thumbnailer_reprocess_entry(self, entry); | ||||||
| 
 | 
 | ||||||
| 	// TODO(p): Eliminate high recursion depth with non-paths.
 |  | ||||||
| 	thumbnailer_next(self); | 	thumbnailer_next(self); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -496,26 +495,17 @@ static void | |||||||
| thumbnailer_next(FivBrowser *self) | thumbnailer_next(FivBrowser *self) | ||||||
| { | { | ||||||
| 	// TODO(p): At least launch multiple thumbnailers in parallel.
 | 	// TODO(p): At least launch multiple thumbnailers in parallel.
 | ||||||
|  | 	// Ideally, try to keep them alive.
 | ||||||
| 	GList *link = self->thumbnail_queue; | 	GList *link = self->thumbnail_queue; | ||||||
| 	if (!link) | 	if (!link) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	const Entry *entry = link->data; | 	const Entry *entry = link->data; | ||||||
| 	GFile *file = g_file_new_for_uri(entry->uri); |  | ||||||
| 	gchar *uri = g_file_get_uri(file); |  | ||||||
| 	g_object_unref(file); |  | ||||||
| 	if (!uri) { |  | ||||||
| 		// TODO(p): Support thumbnailing non-local URIs in some manner.
 |  | ||||||
| 		self->thumbnail_queue = g_list_delete_link(self->thumbnail_queue, link); |  | ||||||
| 		return; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	GError *error = NULL; | 	GError *error = NULL; | ||||||
| 	self->thumbnailer = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, &error, | 	self->thumbnailer = g_subprocess_new(G_SUBPROCESS_FLAGS_NONE, &error, | ||||||
| 		PROJECT_NAME, "--thumbnail", | 		PROJECT_NAME, "--thumbnail", | ||||||
| 		fiv_thumbnail_sizes[self->item_size].thumbnail_spec_name, "--", uri, | 		fiv_thumbnail_sizes[self->item_size].thumbnail_spec_name, "--", | ||||||
| 		NULL); | 		entry->uri, NULL); | ||||||
| 	g_free(uri); |  | ||||||
| 	if (error) { | 	if (error) { | ||||||
| 		g_warning("%s", error->message); | 		g_warning("%s", error->message); | ||||||
| 		g_error_free(error); | 		g_error_free(error); | ||||||
|  | |||||||
| @ -220,6 +220,7 @@ complete_path(GFile *location, GtkListStore *model) | |||||||
| { | { | ||||||
| 	// TODO(p): Do not enter directories unless followed by '/'.
 | 	// TODO(p): Do not enter directories unless followed by '/'.
 | ||||||
| 	// This information has already been stripped from `location`.
 | 	// This information has already been stripped from `location`.
 | ||||||
|  | 	// TODO(p): Try out GFileCompleter.
 | ||||||
| 	GFile *parent = G_FILE_TYPE_DIRECTORY == | 	GFile *parent = G_FILE_TYPE_DIRECTORY == | ||||||
| 			g_file_query_file_type(location, G_FILE_QUERY_INFO_NONE, NULL) | 			g_file_query_file_type(location, G_FILE_QUERY_INFO_NONE, NULL) | ||||||
| 		? g_object_ref(location) | 		? g_object_ref(location) | ||||||
|  | |||||||
| @ -223,9 +223,12 @@ fiv_thumbnail_produce(GFile *target, FivThumbnailSize max_size, GError **error) | |||||||
| 		max_size <= FIV_THUMBNAIL_SIZE_MAX, FALSE); | 		max_size <= FIV_THUMBNAIL_SIZE_MAX, FALSE); | ||||||
| 
 | 
 | ||||||
| 	// Local files only, at least for now.
 | 	// Local files only, at least for now.
 | ||||||
|  | 	// TODO(p): Support thumbnailing the trash scheme.
 | ||||||
| 	const gchar *path = g_file_peek_path(target); | 	const gchar *path = g_file_peek_path(target); | ||||||
| 	if (!path) | 	if (!path) { | ||||||
|  | 		set_error(error, "only local files are supported"); | ||||||
| 		return FALSE; | 		return FALSE; | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	GMappedFile *mf = g_mapped_file_new(path, FALSE, error); | 	GMappedFile *mf = g_mapped_file_new(path, FALSE, error); | ||||||
| 	if (!mf) | 	if (!mf) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user