mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-20 05:50:11 +00:00
Fixes bug #317999:
2005-10-18 Federico Mena Quintero <federico@ximian.com> Fixes bug #317999: * tests/autotestfilechooser.c (test_button_folder_states_for_action): Test that we have either $cwd or the explicitly-set folder. (test_reload_sequence): Likewise. * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_get_current_folder): If our reload_state is RELOAD_EMPTY, return a GtkFilePath corresponding to $cwd.
This commit is contained in:
parent
fcacded8ff
commit
647ba5b40d
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2005-10-18 Federico Mena Quintero <federico@ximian.com>
|
||||||
|
|
||||||
|
Fixes bug #317999:
|
||||||
|
|
||||||
|
* tests/autotestfilechooser.c
|
||||||
|
(test_button_folder_states_for_action): Test that we have either
|
||||||
|
$cwd or the explicitly-set folder.
|
||||||
|
(test_reload_sequence): Likewise.
|
||||||
|
|
||||||
|
* gtk/gtkfilechooserdefault.c
|
||||||
|
(gtk_file_chooser_default_get_current_folder): If our reload_state
|
||||||
|
is RELOAD_EMPTY, return a GtkFilePath corresponding to $cwd.
|
||||||
|
|
||||||
2005-10-14 Tor Lillqvist <tml@novell.com>
|
2005-10-14 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
* gdk/win32/gdkdisplay-win32.c: Remove the clipboard viewer code.
|
* gdk/win32/gdkdisplay-win32.c: Remove the clipboard viewer code.
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
2005-10-18 Federico Mena Quintero <federico@ximian.com>
|
||||||
|
|
||||||
|
Fixes bug #317999:
|
||||||
|
|
||||||
|
* tests/autotestfilechooser.c
|
||||||
|
(test_button_folder_states_for_action): Test that we have either
|
||||||
|
$cwd or the explicitly-set folder.
|
||||||
|
(test_reload_sequence): Likewise.
|
||||||
|
|
||||||
|
* gtk/gtkfilechooserdefault.c
|
||||||
|
(gtk_file_chooser_default_get_current_folder): If our reload_state
|
||||||
|
is RELOAD_EMPTY, return a GtkFilePath corresponding to $cwd.
|
||||||
|
|
||||||
2005-10-14 Tor Lillqvist <tml@novell.com>
|
2005-10-14 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
* gdk/win32/gdkdisplay-win32.c: Remove the clipboard viewer code.
|
* gdk/win32/gdkdisplay-win32.c: Remove the clipboard viewer code.
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Profiling stuff */
|
/* Profiling stuff */
|
||||||
#undef PROFILE_FILE_CHOOSER
|
#define PROFILE_FILE_CHOOSER
|
||||||
#ifdef PROFILE_FILE_CHOOSER
|
#ifdef PROFILE_FILE_CHOOSER
|
||||||
|
|
||||||
|
|
||||||
@ -5415,6 +5415,21 @@ gtk_file_chooser_default_get_current_folder (GtkFileChooser *chooser)
|
|||||||
{
|
{
|
||||||
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
|
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
|
||||||
|
|
||||||
|
if (impl->reload_state == RELOAD_EMPTY)
|
||||||
|
{
|
||||||
|
char *current_working_dir;
|
||||||
|
GtkFilePath *path;
|
||||||
|
|
||||||
|
/* We are unmapped, or we had an error while loading the last folder. We'll return
|
||||||
|
* the $cwd since once we get (re)mapped, we'll load $cwd anyway unless the caller
|
||||||
|
* explicitly calls set_current_folder() on us.
|
||||||
|
*/
|
||||||
|
current_working_dir = g_get_current_dir ();
|
||||||
|
path = gtk_file_system_filename_to_path (impl->file_system, current_working_dir);
|
||||||
|
g_free (current_working_dir);
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
return gtk_file_path_copy (impl->current_folder);
|
return gtk_file_path_copy (impl->current_folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,9 +282,12 @@ test_reload_sequence (gboolean set_folder_before_map)
|
|||||||
GtkFileChooserDefault *impl;
|
GtkFileChooserDefault *impl;
|
||||||
gboolean passed;
|
gboolean passed;
|
||||||
char *folder;
|
char *folder;
|
||||||
|
char *current_working_dir;
|
||||||
|
|
||||||
passed = TRUE;
|
passed = TRUE;
|
||||||
|
|
||||||
|
current_working_dir = g_get_current_dir ();
|
||||||
|
|
||||||
dialog = gtk_file_chooser_dialog_new ("Test file chooser",
|
dialog = gtk_file_chooser_dialog_new ("Test file chooser",
|
||||||
NULL,
|
NULL,
|
||||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||||
@ -299,14 +302,14 @@ test_reload_sequence (gboolean set_folder_before_map)
|
|||||||
{
|
{
|
||||||
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_get_home_dir ());
|
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_get_home_dir ());
|
||||||
|
|
||||||
passed = (impl->current_folder != NULL
|
passed = passed && (impl->current_folder != NULL
|
||||||
&& impl->browse_files_model != NULL
|
&& impl->browse_files_model != NULL
|
||||||
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
&& impl->reload_state == RELOAD_HAS_FOLDER
|
&& impl->reload_state == RELOAD_HAS_FOLDER
|
||||||
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
||||||
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
||||||
: TRUE));
|
: TRUE));
|
||||||
|
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
@ -323,79 +326,83 @@ test_reload_sequence (gboolean set_folder_before_map)
|
|||||||
&& impl->load_timeout_id == 0);
|
&& impl->load_timeout_id == 0);
|
||||||
|
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
passed = passed && (folder == NULL);
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
log_test (passed, "test_reload_sequence(): initial status");
|
log_test (passed, "test_reload_sequence(): initial status");
|
||||||
if (!passed)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* After mapping, it is loading some folder, either the one that was explicitly set or the default one */
|
/* After mapping, it is loading some folder, either the one that was explicitly set or the default one */
|
||||||
|
|
||||||
gtk_widget_show_now (dialog);
|
gtk_widget_show_now (dialog);
|
||||||
|
|
||||||
passed = (impl->current_folder != NULL
|
passed = passed && (impl->current_folder != NULL
|
||||||
&& impl->browse_files_model != NULL
|
&& impl->browse_files_model != NULL
|
||||||
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
&& impl->reload_state == RELOAD_HAS_FOLDER
|
&& impl->reload_state == RELOAD_HAS_FOLDER
|
||||||
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
||||||
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
||||||
: TRUE));
|
: TRUE));
|
||||||
|
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
passed = passed && (folder != NULL);
|
if (set_folder_before_map)
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
else
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
|
|
||||||
g_free (folder);
|
g_free (folder);
|
||||||
|
|
||||||
log_test (passed, "test_reload_sequence(): status after map");
|
log_test (passed, "test_reload_sequence(): status after map");
|
||||||
if (!passed)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* Unmap it; we should still have a folder */
|
/* Unmap it; we should still have a folder */
|
||||||
|
|
||||||
gtk_widget_hide (dialog);
|
gtk_widget_hide (dialog);
|
||||||
|
|
||||||
passed = (impl->current_folder != NULL
|
passed = passed && (impl->current_folder != NULL
|
||||||
&& impl->browse_files_model != NULL
|
&& impl->browse_files_model != NULL
|
||||||
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
&& impl->reload_state == RELOAD_WAS_UNMAPPED
|
&& impl->reload_state == RELOAD_WAS_UNMAPPED
|
||||||
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
||||||
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
||||||
: TRUE));
|
: TRUE));
|
||||||
if (!passed)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
passed = passed && (folder != NULL);
|
if (set_folder_before_map)
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
else
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
|
|
||||||
g_free (folder);
|
g_free (folder);
|
||||||
|
|
||||||
log_test (passed, "test_reload_sequence(): status after unmap");
|
log_test (passed, "test_reload_sequence(): status after unmap");
|
||||||
if (!passed)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* Map it again! */
|
/* Map it again! */
|
||||||
|
|
||||||
gtk_widget_show_now (dialog);
|
gtk_widget_show_now (dialog);
|
||||||
|
|
||||||
passed = (impl->current_folder != NULL
|
passed = passed && (impl->current_folder != NULL
|
||||||
&& impl->browse_files_model != NULL
|
&& impl->browse_files_model != NULL
|
||||||
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& (impl->load_state == LOAD_PRELOAD || impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
&& impl->reload_state == RELOAD_HAS_FOLDER
|
&& impl->reload_state == RELOAD_HAS_FOLDER
|
||||||
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
&& (impl->load_state == LOAD_PRELOAD ? (impl->load_timeout_id != 0) : TRUE)
|
||||||
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
&& ((impl->load_state == LOAD_LOADING || impl->load_state == LOAD_FINISHED)
|
||||||
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
? (impl->load_timeout_id == 0 && impl->sort_model != NULL)
|
||||||
: TRUE));
|
: TRUE));
|
||||||
if (!passed)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
|
||||||
passed = passed && (folder != NULL);
|
if (set_folder_before_map)
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
else
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
|
|
||||||
g_free (folder);
|
g_free (folder);
|
||||||
|
|
||||||
log_test (passed, "test_reload_sequence(): status after re-map");
|
log_test (passed, "test_reload_sequence(): status after re-map");
|
||||||
|
|
||||||
gtk_widget_destroy (dialog);
|
gtk_widget_destroy (dialog);
|
||||||
|
g_free (current_working_dir);
|
||||||
|
|
||||||
return passed;
|
return passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -422,14 +429,16 @@ test_button_folder_states_for_action (GtkFileChooserAction action, gboolean use_
|
|||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
GtkWidget *button;
|
GtkWidget *button;
|
||||||
char *folder;
|
char *folder;
|
||||||
gboolean must_have_folder_initially;
|
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
|
char *current_working_dir;
|
||||||
|
gboolean must_have_cwd;
|
||||||
|
|
||||||
passed = TRUE;
|
passed = TRUE;
|
||||||
|
|
||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
current_working_dir = g_get_current_dir ();
|
||||||
|
must_have_cwd = !(use_dialog && set_folder_on_dialog);
|
||||||
|
|
||||||
must_have_folder_initially = (use_dialog && set_folder_on_dialog);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
|
||||||
if (use_dialog)
|
if (use_dialog)
|
||||||
{
|
{
|
||||||
@ -453,51 +462,71 @@ test_button_folder_states_for_action (GtkFileChooserAction action, gboolean use_
|
|||||||
/* Pre-map; no folder is set */
|
/* Pre-map; no folder is set */
|
||||||
|
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
||||||
if (must_have_folder_initially)
|
if (must_have_cwd)
|
||||||
passed = passed && (folder != NULL);
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
else
|
else
|
||||||
passed = passed && (folder == NULL);
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
|
||||||
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, pre-map, %s",
|
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, pre-map, %s",
|
||||||
get_action_name (action),
|
get_action_name (action),
|
||||||
use_dialog,
|
use_dialog,
|
||||||
set_folder_on_dialog,
|
set_folder_on_dialog,
|
||||||
must_have_folder_initially ? "must have folder" : "folder must not be set");
|
must_have_cwd ? "must have $cwd" : "must have explicit folder");
|
||||||
|
|
||||||
/* Map; folder should be set */
|
/* Map; folder should be set */
|
||||||
|
|
||||||
gtk_widget_show_all (window);
|
gtk_widget_show_all (window);
|
||||||
gtk_widget_show_now (window);
|
gtk_widget_show_now (window);
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
||||||
passed = passed && (folder != NULL);
|
|
||||||
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, mapped, must have folder",
|
if (must_have_cwd)
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
|
else
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
|
||||||
|
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, mapped, %s",
|
||||||
get_action_name (action),
|
get_action_name (action),
|
||||||
use_dialog,
|
use_dialog,
|
||||||
set_folder_on_dialog);
|
set_folder_on_dialog,
|
||||||
|
must_have_cwd ? "must have $cwd" : "must have explicit folder");
|
||||||
g_free (folder);
|
g_free (folder);
|
||||||
|
|
||||||
/* Unmap; folder should be set */
|
/* Unmap; folder should be set */
|
||||||
|
|
||||||
gtk_widget_hide (window);
|
gtk_widget_hide (window);
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
||||||
passed = passed && (folder != NULL);
|
|
||||||
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, unmapped, must have folder",
|
if (must_have_cwd)
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
|
else
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
|
||||||
|
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, unmapped, %s",
|
||||||
get_action_name (action),
|
get_action_name (action),
|
||||||
use_dialog,
|
use_dialog,
|
||||||
set_folder_on_dialog);
|
set_folder_on_dialog,
|
||||||
|
must_have_cwd ? "must have $cwd" : "must have explicit folder");
|
||||||
g_free (folder);
|
g_free (folder);
|
||||||
|
|
||||||
/* Re-map; folder should be set */
|
/* Re-map; folder should be set */
|
||||||
|
|
||||||
gtk_widget_show_now (window);
|
gtk_widget_show_now (window);
|
||||||
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (button));
|
||||||
passed = passed && (folder != NULL);
|
|
||||||
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, re-mapped, must have folder",
|
if (must_have_cwd)
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, current_working_dir) == 0);
|
||||||
|
else
|
||||||
|
passed = passed && (folder != NULL && strcmp (folder, g_get_home_dir()) == 0);
|
||||||
|
|
||||||
|
log_test (passed, "test_button_folder_states_for_action(): %s, use_dialog=%d, set_folder_on_dialog=%d, re-mapped, %s",
|
||||||
get_action_name (action),
|
get_action_name (action),
|
||||||
use_dialog,
|
use_dialog,
|
||||||
set_folder_on_dialog);
|
set_folder_on_dialog,
|
||||||
|
must_have_cwd ? "must have $cwd" : "must have explicit folder");
|
||||||
g_free (folder);
|
g_free (folder);
|
||||||
|
|
||||||
|
g_free (current_working_dir);
|
||||||
|
|
||||||
gtk_widget_destroy (window);
|
gtk_widget_destroy (window);
|
||||||
|
|
||||||
return passed;
|
return passed;
|
||||||
|
Loading…
Reference in New Issue
Block a user