The new model is mostly API-compatible with the old model (minimal
changes were required), but is a lot faster and has a lot of very
desirable features.
- the model does no longer support a tree, just a list of files in a
given directory
- the storage has been moved to a GArray as opposed to a tree
- no more dependency on GtkFileSystem
- columns are managed by the creator of the model, so any number of
nodes can be added as needed. This also makes the API more similar
to GtkListStore.
- Values are filled on demand using a function given when creating the
model.
- The function can decide to let the model cache returned values or
decide to be called again the next time the value is queried.
- implements GtkTreeSortable
- _gtk_file_system_model_get_value() was added to significantly speed
up value access, which is necessary when sorting large models.
Instead of refiltering the recently used files we should rebuild
the list altogether when the current GtkFileFilter changes; this
allows us to keep showing the maximum amount of recently used
files.
Fixes bug:
http://bugzilla.gnome.org/show_bug.cgi?id=514260
This lets us do this:
1. click on a folder in the shortcuts pane
2. start typing a filename
Then, the typed filename will actually go to the filename entry, like
the user expects. (Or to the search entry, in case the user clicked
on the Search shortcut.)
Also, removed the obsolete callback that made "/" and "~" typed in the
shortcuts pane bring up the location entry.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
People often do this:
1. Bring up a SAVE dialog
2. Click on a folder in the shortcuts pane
3. Start typing a filename
4. Oops! The interactive-search entry in the shortcuts pane appears.
With this, the shortcuts pane will not bring up the interactive-search entry. Then it
will be clear that you are not typing in the right place.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
Add a tooltip that shows the full path of the current folder, to avoid
ambiguity. We only show the tooltip when the expander is collapsed to
avoid cluttering the full file chooser.
We can't set the sort column when we load the GtkFileChooser's settings, as the
file models may not have been created yet. Wait until the models are actually
present; then we can set the sort column.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
The previous patch for this bug was about the initial *file* not existing,
but this also handles the initial *folder* not existing
(such as /usr/nonexistent/nonexistent.txt).
Signed-off-by: Federico Mena Quintero <federico@novell.com>
We now use a GtkSizeGroup to control the vertical size of the various widgets
that get put in the path bar's area: the location bar, the search entry,
the recently-used title label.
This keeps the shortcuts pane and the file list from jumping up and down
when one switches between operation modes (browse/search/recently-used).
Signed-off-by: Federico Mena Quintero <federico@novell.com>
Ellipsize labels in the Save folder's combo so they don't grow too wide.
Ellipsize labels in normal directory buttons in the pathbar, and make
their requisition's width reasonably small. Use a tooltip for buttons
that got ellipsized.
Instead of placing the down-slider directly beside the last button in
the pathbar, use the remaining space in the pathbar for the last
button. Use a different method to find the first visible button.
Walk down from the end, adding buttons until we use all free space.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
Dup the file chooser entry string because the string may be modified
depending on what clients do in the confirm-overwrite signal and this
corrupts the pointer.
* gtk/gtkfilechooserdefault.c (shortcuts_list_create): Never scroll
the places horizontally. Instead, ellipsize the text.
svn path=/trunk/; revision=22397
2009-01-21 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (save_widgets_create): Set
local_only on the location entry when we create it...
(set_local_only): ... and set it here only if the location entry
exists.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22163
Patch by Carlos Garnacho <carlos@imendio.com> - add a local_only
property to GtkFileChooserEntry:
* gtk/gtkfilechooserentry.c (struct _GtkFileChooserEntry): Add a
local_only field.
(_gtk_file_chooser_entry_init): Default to local_only being true.
(start_explicit_completion): Don't allow completion of non-native
files if local_only is turned on.
(start_loading_current_folder): Don't start loading non-native
folders if local_only is turned on.
(_gtk_file_chooser_entry_set_local_only): New function.
(_gtk_file_chooser_entry_get_local_only): New function.
* gtk/gtkfilechooserentry.h (_gtk_file_chooser_entry_set_local_only,
_gtk_file_chooser_entry_get_local_only): New prototypes.
* gtk/gtkfilechooserdefault.c (set_local_only): Set the local_only
property on the entry.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22156
* gtk/gtkfilechooserdefault.c (save_dialog_geometry): New function.
(settings_save): Save the dialog's geometry.
(gtk_file_chooser_default_get_default_size): Load the geometry
from the settings. If it was already saved, return that instead
of computing an ad-hoc size.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22119
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map):
Don't change the default size in ::map() so we don't flicker...
(gtk_file_chooser_default_realize): ... so do it in ::realize()
instead, when the window is not yet visible. This avoids a
dialog-that-resizes when you first pop up the file chooser.
(emit_default_size_changed): Just emit the signal; don't check for
the widget's state so we can be emitted during the initial
::realize() when we are not mapped yet.
(update_preview_widget_visibility): Only emit default_size_changed
if the widget is not mapped, to avoid resizing the dialog while it
is visible.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22117
* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
Mount the enclosing volume if the folder we're switching to is not
mounted. Patch by Tomas Bzatek, based on work by Carlos Garnacho
svn path=/trunk/; revision=21899
* gtk/gtkfilesystem.[hc] (_gtk_file_info_consider_as_directory):
Privately export this method. It classifies directories and mountables
the same.
* gtk/gtkfilesystem.c (enclosing_volume_mount_cb): Silently drop
G_IO_ERROR_ALREADY_MOUNTED error for gvfs backends without visible
mounts.
* gtk/gtkfilesystemmodel.c:
* gtk/gtkfilechooserbutton.c:
* gtk/gtkfilechooserentry.c:
* gtk/gtkfilechooserdefault.c: Use the new function instead of
direct checks for G_FILE_TYPE_DIRECTORY throughout.
svn path=/trunk/; revision=21898
* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
Don't show an error dialog when changing to a non-existing folder,
since this is ususally just an annoyance.
svn path=/trunk/; revision=21894
2008-09-26 Matthias Clasen <mclasen@redhat.com>
Bug 553133 – GtkFileChooser won't ask to mount a volume
* gtk/gtkfilechooserdefault.c (shortcuts_activate_volume): Use
a GtkMountOperation when mounting, so that we get a password
dialog when required.
svn path=/trunk/; revision=21523
2008-09-25 Michael Natterer <mitch@imendio.com>
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_finalize):
don't unref the file system backend, the newly added
unset_file_system_backend() already does this (bug #553135).
svn path=/trunk/; revision=21514
2008-09-22 Matthias Clasen <mclasen@redhat.com>
Bug 553135 – eog crash: assertion failed. Gtk error:
shortcuts_remove_rows: code should not be reached
* gtk/gtkfilechooserdefault.c: Disconnect from GtkFileSystem
signals when we are destroyed, in order to avoid nasty surprises.
Patch by Claudio Saavedra
svn path=/trunk/; revision=21492
2008-09-22 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 552789 – Show size column in the search and recently used
files modes
* gtk/gtkfilechooserdefault.c: Display the file size column
when in OPERATION_MODE_SEARCH. This removes a stat() call
and simplifies the code a little bit by changing the query
for file informations for each search engine hit.
svn path=/trunk/; revision=21491
2008-09-18 Emmanuele Bassi <ebassi@linux.intel.com>
* gtk/gtkfilechooserdefault.c (settings_save): Save the size column
visibility state with the rest of the FileChooser settings.
svn path=/trunk/; revision=21437
2008-09-18 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 325095 – show a 'size' column
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserprivate.h: Add a context menu item controlling
the visibility of the file size column. This works only for the
browse mode, and the column is not visible by default.
* gtk/gtkfilechoosersettings.[ch]: Add a ShowSizeColumn key to the
settings file.
svn path=/trunk/; revision=21431
2008-09-07 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (search_add_hit): Don't unref the
GFile we just put into the search_model. This adds a new memory
leak...
svn path=/trunk/; revision=21315
2008-09-05 Michael Natterer <mitch@imendio.com>
* gtk/gtkfilechooserdefault.c (file_list_drag_data_received_cb):
stop the emission of the signal also when we bail out early
because we don't accept drops from ourselves. Keeps the code from
running into a warning in gtktreeview.c.
svn path=/trunk/; revision=21302
2008-08-26 Matthias Clasen <mclasen@redhat.com>
Bug 549354 – Crash trying to open a file on a remote folder
* gtk/gtkfilechooserdefault.c (error_message_with_parent): Handle
the fact that parent may be NULL without crashing.
svn path=/trunk/; revision=21206
Only emit default-size-changed if the file chooser widget is mapped.
It only makes sense to do this once we know our final configuration,
which is actually when we are mapped.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=21164
2008-08-04 Carlos Garnacho <carlos@imendio.com>
* gtk/gtk.symbols:
* gtk/gtkfilechooser.[ch]: Make GFile-oriented API public. Fixes
#545978.
* gtk/gtkfilechooserbutton.c:
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserutils.c: Update to use public GFile API.
svn path=/trunk/; revision=20971
2008-07-06 Matthias Clasen <mclasen@redhat.com>
Bug 541645 – gtkfilechooserdefault segfaults when bookmark does not
contain ://
* gtk/gtkfilechooserdefault.c (_gtk_file_chooser_label_for_file):
Be more robust. Reported by Jelte van der Hoek
svn path=/trunk/; revision=20787
* gtk/gtkfilechooserdefault.c (browse_files_select_first_row): Don't
select the first row if the folder is empty.
Patch by Olle Bergkvist.
svn path=/trunk/; revision=20751
2008-06-30 Cody Russell <bratsche@gnome.org>
* Practically everything changed.
Change all references of GIMP Toolkit (and variations of it)
to GTK+ Toolkit, showing no mercy at all to our beloved
ancestry. (#540529)
svn path=/trunk/; revision=20709
2008-06-26 Carlos Garnacho <carlos@imendio.com>
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_get_current_folder): current_folder can be
NULL here, do not try to reference it (Bug #540235)
(gtk_file_chooser_default_get_files): Deal better with
gtk_file_chooser_default_get_current_folder() being able to return
NULL.
svn path=/trunk/; revision=20687
2008-06-18 Olle Bergkvist <olle.bergkvist@yahoo.se>
http://bugzilla.gnome.org/show_bug.cgi?id=538784 - Don't change
the filename in the name entry in CREATE_FOLDER mode when changing
folders, so that you can enter a new subfolder name, double-click on a
folder to change to it, and close the dialog.
* gtk/gtkfilechooserdefault.c (update_chooser_entry): Don't change
the filename in the entry in CREATE_FOLDER mode, either.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=20457
2008-06-18 Olle Bergkvist <olle.bergkvist@yahoo.se>
http://bugzilla.gnome.org/show_bug.cgi?id=419737#c59 - The file
chooser clears the filename entry in SAVE/CREATE_FOLDER modes when
it shouldn't.
* gtk/gtkfilechooserdefault.c (shortcuts_activate_iter): Don't
clear the entry for CREATE_FOLDER either; this needs the same
behavior as SAVE mode.
(update_chooser_entry): Only clear the entry in OPEN/SELECT_FOLDER
modes.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=20455
2008-06-17 Michael Natterer <mitch@imendio.com>
* gtk/gtkfilechooserdefault.c: remove static integer variables
which hold the number of members in GtkTargetEntry arrays and use
G_N_ELEMENTS() directly instead.
svn path=/trunk/; revision=20421
2008-06-17 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c:
(gtk_file_chooser_default_init),
(gtk_file_chooser_default_constructor),
(gtk_file_chooser_default_screen_changed),
(recent_start_loading): Remove the GtkRecentManager screen
dance, as it has been deprecated since 2.12. Now we get the
GtkRecentManager singleton whewn we create the FileChooserDefault
instance. (Michael Natterer)
svn path=/trunk/; revision=20419
2008-06-16 Michael Natterer <mitch@imendio.com>
* gtk/gtkfilechooserprivate.h: remove GtkTooltips member from the
GtkFileChooserDefault struct.
* gtk/gtkfilechooserdefault.c: don't allocate and free the
GtkTooltips.
svn path=/trunk/; revision=20396
2008-06-15 Carlos Garnacho <carlos@imendio.com>
* gtk/gtkfilechooser.c (gtk_file_chooser_get_filename): Return full
path here as expected, not just the basename.
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_update_current_folder): Ensure that we keep
a reference to file, since it can be destroyed when switching back to
browse mode.
* gtk/gtkfilesystem.c (get_icon_for_special_directory): Removed, home
and desktop directories are dealt by the filechooser as normal files,
not volumes, so the icon for these is handled directly by GIO.
(_gtk_file_system_volume_render_icon): Update caller.
svn path=/trunk/; revision=20393
2008-06-10 Carlos Garnacho <carlos@imendio.com>
Bug 520874 - Should use gio directly.
* gtk/gtkfilesystem.[ch]: Turn into a private object, which mostly
provides helper functions for asynchronous calls, folder abstraction
and uniform handling of volumes/drives/mounts.
* gtk/gtkfilesystemwin32.[ch]:
* gtk/gtkfilesystemunix.[ch]: Removed, these are no longer required.
* gtk/gtkfilechooser.c:
* gtk/gtkfilechooserbutton.c:
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserentry.[ch]:
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserutils.c:
* gtk/gtkfilesystemmodel.[ch]:
* gtk/gtkpathbar.[ch]: Use GIO internally. Adapt to GtkFileSystem API.
Do not load filesystem implementation modules.
* gtk/Makefile.am:
* gtk/gtk.symbols: the gtkfilesystem.h private header isn't installed
anymore, nor the unix/win32 implementations.
* README.in: Add blurb about these changes.
svn path=/trunk/; revision=20342
2008-05-27 Federico Mena Quintero <federico@novell.com>
http://bugzilla.gnome.org/show_bug.cgi?id=533891 - Don't allow
drag and drop from the file list into itself, as it doesn't make
sense (it would just change the current folder).
* gtk/gtkfilechooserdefault.c (file_list_dest_targets): Use
GTK_TARGET_OTHER_WIDGET so we don't DnD from the file list into
itself.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=20194
2008-05-25 Jan Arne Petersen <jpetersen@jpetersen.org>
* gtk/gtkfilechooserdefault.c: (create_file_list): Add GDK_ACTION_MOVE
to the drag actions to allow trash (#137717).
svn path=/trunk/; revision=20150
2008-05-24 Jan Arne Petersen <jpetersen@jpetersen.org>
* gtk/gtkfilechooserdefault.c: (location_toggle_popup_handler): Don't
try to toggle the visibility of the location entry field in search and
recent mode (#526422)
svn path=/trunk/; revision=20138
2008-05-24 Jan Arne Petersen <jpetersen@jpetersen.org>
* gtk/gtkfilechooserdefault.c: (shortcuts_query_tooltip_cb),
(shortcuts_list_create): Show parse name as tooltip for path
shortcuts (#137503).
svn path=/trunk/; revision=20137
2008-05-19 Federico Mena Quintero <federico@novell.com>
http://bugzilla.gnome.org/show_bug.cgi?id=322298 - Save dialog
can't be resized until you expand the "Browse for other folders"
section.
* gtk/gtkfilechooserembed.h (struct _GtkFileChooserEmbedIface):
Removed the "get_resizable" method.
(_gtk_file_chooser_embed_get_resizable): Removed.
* gtk/gtkfilechooserembed.c: Removed the _get_resizable() machinery.
* gtk/gtkfilechooserdefault.c: Likewise.
* gtk/gtkfilechooserdialog.c
(file_chooser_widget_default_size_changed): Act as if the dialog
were always resizable.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=20113
2008-03-13 Sven Neumann <sven@gimp.org>
* gtk/gtkfilechooserdefault.c
* gtk/gtkprintunixdialog.c: set alternative button order for
overwrite confirmation dialogs (bug #522191).
svn path=/trunk/; revision=19866