Select current file on goto-current-file-dir

master
Yevgen Muntyan 2006-11-23 21:35:49 -06:00
parent c425e12db2
commit 55a35f7215
1 changed files with 23 additions and 7 deletions

View File

@ -88,6 +88,9 @@ static GObject *moo_file_selector_constructor (GType type,
GObjectConstructParam *props); GObjectConstructParam *props);
static void moo_file_selector_finalize (GObject *object); static void moo_file_selector_finalize (GObject *object);
static void moo_file_selector_select_file (MooFileSelector *filesel,
const char *filename,
const char *dirname);
static gboolean moo_file_selector_chdir (MooFileView *fileview, static gboolean moo_file_selector_chdir (MooFileView *fileview,
const char *dir, const char *dir,
GError **error); GError **error);
@ -286,6 +289,7 @@ goto_current_doc_dir (MooFileSelector *filesel)
{ {
char *dirname = g_path_get_dirname (filename); char *dirname = g_path_get_dirname (filename);
moo_file_view_chdir (MOO_FILE_VIEW (filesel), dirname, NULL); moo_file_view_chdir (MOO_FILE_VIEW (filesel), dirname, NULL);
moo_file_selector_select_file (filesel, filename, dirname);
g_free (dirname); g_free (dirname);
} }
} }
@ -922,14 +926,25 @@ out:
static void static void
select_file (MooFileSelector *filesel, moo_file_selector_select_file (MooFileSelector *filesel,
const char *filename, const char *filename,
const char *dirname) const char *dirname)
{ {
char *freeme = NULL;
char *curdir = NULL; char *curdir = NULL;
g_return_if_fail (filename != NULL);
g_return_if_fail (dirname != NULL);
g_object_get (filesel, "current-directory", &curdir, NULL); g_object_get (filesel, "current-directory", &curdir, NULL);
/* XXX */
if (dirname[0] && dirname[strlen(dirname) - 1] != '/')
{
freeme = g_strdup_printf ("%s/", dirname);
dirname = freeme;
}
if (curdir && !strcmp (curdir, dirname)) if (curdir && !strcmp (curdir, dirname))
{ {
char *basename = g_path_get_basename (filename); char *basename = g_path_get_basename (filename);
@ -938,6 +953,7 @@ select_file (MooFileSelector *filesel,
} }
g_free (curdir); g_free (curdir);
g_free (freeme);
} }
@ -964,7 +980,7 @@ drop_untitled (MooFileSelector *filesel,
result = moo_edit_save_as (doc, name, NULL, NULL); result = moo_edit_save_as (doc, name, NULL, NULL);
if (result) if (result)
select_file (filesel, name, destdir); moo_file_selector_select_file (filesel, name, destdir);
g_free (name); g_free (name);
return result; return result;
@ -986,7 +1002,7 @@ doc_save_as (MooFileSelector *filesel,
if (filename) if (filename)
{ {
if (moo_edit_save_as (doc, filename, moo_edit_get_encoding (doc), NULL)) if (moo_edit_save_as (doc, filename, moo_edit_get_encoding (doc), NULL))
select_file (filesel, filename, destdir); moo_file_selector_select_file (filesel, filename, destdir);
g_free (filename); g_free (filename);
} }
} }
@ -1006,7 +1022,7 @@ doc_save_copy (MooFileSelector *filesel,
if (filename) if (filename)
{ {
if (moo_edit_save_copy (doc, filename, moo_edit_get_encoding (doc), NULL)) if (moo_edit_save_copy (doc, filename, moo_edit_get_encoding (doc), NULL))
select_file (filesel, filename, destdir); moo_file_selector_select_file (filesel, filename, destdir);
g_free (filename); g_free (filename);
} }
} }
@ -1030,7 +1046,7 @@ doc_move (MooFileSelector *filesel,
if (moo_edit_save_as (doc, filename, moo_edit_get_encoding (doc), NULL)) if (moo_edit_save_as (doc, filename, moo_edit_get_encoding (doc), NULL))
{ {
_moo_unlink (old_filename); _moo_unlink (old_filename);
select_file (filesel, filename, destdir); moo_file_selector_select_file (filesel, filename, destdir);
} }
g_free (filename); g_free (filename);