Compare commits

..

5 Commits

Author SHA1 Message Date
dd2a95bb99
Bump Wuffs 2021-11-22 20:40:48 +01:00
64fd216409
Fix opening files starting on dashes
fastiv is a bright exception to the sad rule now.
2021-11-22 20:40:48 +01:00
047e49051b
Register for opening directories 2021-11-22 20:37:16 +01:00
4ed6aa6ad7
Don't claim to be able to open several files 2021-11-22 18:23:26 +01:00
8fed3f5a36
Add a better key binding for switching 2021-11-22 16:46:04 +01:00
5 changed files with 41 additions and 10 deletions

11
fastiv-browse.desktop Normal file
View File

@ -0,0 +1,11 @@
[Desktop Entry]
Type=Application
Name=fastiv
GenericName=File Browser
Icon=fastiv
Exec=fastiv --browse -- %f
NoDisplay=true
Terminal=false
StartupNotify=true
Categories=Utility;FileTools;
MimeType=inode/directory;

View File

@ -321,18 +321,25 @@ on_item_activated(G_GNUC_UNUSED FastivBrowser *browser, const char *path,
}
static gboolean
open_any_path(const char *path)
open_any_path(const char *path, gboolean force_browser)
{
GStatBuf st;
gchar *canonical = g_canonicalize_filename(path, g.directory);
gboolean success = !g_stat(canonical, &st);
if (!success)
if (!success) {
show_error_dialog(g_error_new(G_FILE_ERROR,
g_file_error_from_errno(errno), "%s: %s", path, g_strerror(errno)));
else if (S_ISDIR(st.st_mode))
} else if (S_ISDIR(st.st_mode)) {
load_directory(canonical);
else
} else if (force_browser) {
// GNOME, e.g., invokes this as a hint to focus the particular file,
// which we can't currently do yet.
gchar *directory = g_path_get_dirname(canonical);
load_directory(directory);
g_free(directory);
} else {
open(canonical);
}
g_free(canonical);
return success;
}
@ -346,7 +353,7 @@ on_open_location(G_GNUC_UNUSED GtkPlacesSidebar *sidebar, GFile *location,
if (flags & GTK_PLACES_OPEN_NEW_WINDOW)
spawn_path(path);
else
open_any_path(path);
open_any_path(path, FALSE);
g_free(path);
}
}
@ -471,6 +478,13 @@ on_key_press_view(G_GNUC_UNUSED GtkWidget *widget, GdkEventKey *event,
switch_to_browser();
return TRUE;
}
break;
case GDK_MOD1_MASK:
switch (event->keyval) {
case GDK_KEY_Left:
switch_to_browser();
return TRUE;
}
}
return FALSE;
}
@ -513,7 +527,8 @@ on_button_press_browser(G_GNUC_UNUSED GtkWidget *widget, GdkEventButton *event)
int
main(int argc, char *argv[])
{
gboolean show_version = FALSE, show_supported_media_types = FALSE;
gboolean show_version = FALSE, show_supported_media_types = FALSE,
browse = FALSE;
gchar **path_args = NULL;
const GOptionEntry options[] = {
{G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &path_args,
@ -521,6 +536,9 @@ main(int argc, char *argv[])
{"list-supported-media-types", 0, G_OPTION_FLAG_IN_MAIN,
G_OPTION_ARG_NONE, &show_supported_media_types,
"Output supported media types and exit", NULL},
{"browse", 0, G_OPTION_FLAG_IN_MAIN,
G_OPTION_ARG_NONE, &browse,
"Start in filesystem browsing mode", NULL},
{"version", 'V', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE,
&show_version, "Output version information and exit", NULL},
{},
@ -692,8 +710,8 @@ main(int argc, char *argv[])
g.files = g_ptr_array_new_full(16, g_free);
g.directory = g_get_current_dir();
if (!path_arg || !open_any_path(path_arg))
open_any_path(g.directory);
if (!path_arg || !open_any_path(path_arg, browse))
open_any_path(g.directory, FALSE);
// Try to get half of the screen vertically, in 4:3 aspect ratio.
//

View File

@ -3,7 +3,7 @@ Type=Application
Name=fastiv
GenericName=Image Viewer
Icon=fastiv
Exec=fastiv %F
Exec=fastiv -- %f
Terminal=false
StartupNotify=true
Categories=Graphics;2DGraphics;Viewer;

View File

@ -56,6 +56,8 @@ endif
install_data('fastiv.desktop',
install_dir : get_option('datadir') + '/applications')
install_data('fastiv-browse.desktop',
install_dir : get_option('datadir') + '/applications')
install_data('fastiv.svg',
install_dir : get_option('datadir') + '/icons/hicolor/scalable/apps')

@ -1 +1 @@
Subproject commit 7804ffe150db6f0dd2c745587b9327fa4f150ee5
Subproject commit a0e2454f0c21369f9775cad3bcaf1e3bb1db70b6