The old semantics was to return a GFile* owned by the file system model; the new
semantics is to hand out new references whenever possible.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
The previous function enumerated the whole directory and used a lot of
outdated API to decide how to show files.
The new code queries the filesystem model to decide about this.
The now unused old functions were removed.
Previously information about file sizes was not available for search
results and recent files, so the column was always hidden. As this
information is now available, we can stop the special handling and use
the same setting as in browse mode.
Use the faster _gtk_file_system_model_get_value() function instead of
gtk_tree_model_get() inside the sort functions. This gives a significant
speed-up when sorting large lists.
In a test case with 40.000 files, the sorting time went from ~5 seconds
to less than 0.5 seconds for my test case. There is 2 significant
problems with gtk_tree_model_get() that cause this:
1) The value is copied, which takes quite a bit of time for strings.
~25% of excessive time or ~1 second in my test
2) The tree model functions need to lookup the interface vfunc. And
gtk_tree_model_get() doesn't do that only once, but multiple times
(verifying column id, getting the actual value, ...)
~75% of excessive time or ~3 seconds in my test
Replace the list model code with the file system model and use all the
file system model API niceties we get from that.
Also adds the function _gtk_file_system_model_add_and_query_file() which
g_file_query_info()'s the file before adding it, so it gets added with
the right information.
Since the time taken by g_file_enumerate_children() depends a lot on the
attributes that are queried, we query the minimum attributes that need
to be queired to display the file chooser.
In particular, the attributes for loading the icon are ignored, as icons
are loaded on demand (see previous commit).
Because loading icons takes a noticable performance, this code loads the
pixbuf on demand and only loads icons for rows that are visible. There
is a few caveats to this:
- The pixbuf cell renderer must report the proer size even if the icon
is not yet loaded. This is achieved by setting a fixed size.
- On theme changes the cahced pixbufs and the cell renderer must be
updated to conform to the new theme.
Previously, there was a GtkTreeSortModel wrapped around the filesystem
model to make it sortable. As the new implementation implements the
GtkTreeSortable interface, we can use this instead.
A lot of code special cases accesses to the tree view for the different
browse modes, which was previously necessary, because the models were
different. Now that they are identical in the first columns, there is no
such need anymore, and the functions don't need to be special cased.
Previously custom functions were used to compute the data passed to the
cell renderers. Now that all this data is saved by the tree models with
compatible nodes, the usual default attribute-to-column mapping can be
used.
With this, caching of the values can happen in the tree model, which
avoids costly lookups of icons or computation of strings. Last but not
least it avoids spurious bugs that could happen when strings changed
without anyone noticing, like the mtime when a new day begins.
All tree models in browse mode now share the first 10 column types
containing all the necessary information to display the model on screen.
Therefor it is now easy to just operate on the tree model associated
with the file tree view and in most cases it isn't necessary anymore to
special case the browse modes.
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
2008-02-21 Tor Lillqvist <tml@novell.com>
* gtk/gtkfilechooserdefault.c (list_mtime_data_func) [Win32]: Must
pass the format string to strftime in the C library's locale's
charset, not the system's. Correspondingly, the return value from
strftime() is in the C library's locale's charset. (#509885)
svn path=/trunk/; revision=19625
2008-02-12 Federico Mena Quintero <federico@novell.com>
Merged from gtk-2-12:
Don't focus the file list when shortcuts get activated. This
removes a lot of ambiguity in when the file selection should
change, and makes the overall code flow simpler.
This fixes http://bugzilla.gnome.org/show_bug.cgi?id=419737 -
file/save dialog clears the filename entry when changing
directories.
Also fixes http://bugzilla.gnome.org/show_bug.cgi?id=499940 -
focus should not go to the file list when a shortcut is activated.
* gtk/gtkfilechooserdefault.c
(shortcuts_activate_volume_mount_cb): Don't focus the file list
(shortcuts_activate_get_info_cb): Likewise.
* gtk/gtkfilechooserdefault.c (switch_to_shortcut): Don't focus
the file list (this was the last place where we would focus the
file list explicitly). If you are in the location entry, for
example, you don't want Alt-Home to take you to the file list; you
just want the current folder to change. Thanks to Olle Bergkvist
<olle.bergkvist@yahoo.se> for pointing this out in
http://bugzilla.gnome.org/show_bug.cgi?id=419737#c51.
(focus_browse_tree_view_if_possible): Removed.
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=19543
2008-02-12 Matthias Clasen <mclasen@redhat.com>
Skip exensions when selecting filenames in the save-as dialog.
(#362516, Carlos Garnacho)
* gtk/gtkfilechooserentry.h:
* gtk/gtkfilechooserentry.c (_gtk_file_chooser_entry_select_filename):
New function to skip the extension part when selecting a filename.
(_gtk_file_chooser_entry_set_base_folder): Use it here.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_entry_grab_focus):
...and here.
svn path=/trunk/; revision=19540
2008-02-12 Matthias Clasen <mclasen@redhat.com>
* gtk/*.c: Unify the handling of various "Enter" keysyms
all over the place. (#515047, Christian Persch)
svn path=/trunk/; revision=19528
2008-01-03 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c (recent_sort_mru): Use the
correct comparison function (kudos to Christian Persch and
Claudio Saavedra for spotting this)
* gtk/gtkrecentchooserutils.c:
(sort_recent_items_mru),
(sort_recent_items_lru): Ditto as above.
svn path=/trunk/; revision=19302
2007-11-26 Josselin Mouette <joss@malsain.org>
reviewed by: Federico Mena Quintero
* gtk/gtkfilechooserdefault.c: (shortcuts_append_paths),
(shortcuts_add_bookmarks), (shortcuts_selection_changed_cb),
(shortcuts_list_create), (gtk_file_chooser_default_should_respond):
Make the shortcuts activate with a single click. (#148828)
Fix a few things affected by the change:
- Set selection mode to GTK_SELECTION_SINGLE to allow a case
where no shortcut is selected.
- Don't activate a shortcut in the response callback.
- Filter out duplicate entries in volumes and bookmarks to
avoid the selection to change when reordering them with DnD.
svn path=/trunk/; revision=19072
2007-10-10 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c (list_mtime_data_func): Convert
the format to the current locale before passing it to
strtime(). Fixes corrupt dates with non-UTF8 encodings on
OpenSolaris. (#465380, Takao Fujiwara)
svn path=/trunk/; revision=18903
2007-10-04 Loïc Minier <lool@dooz.org>
* gtk/gtkfilechooserdefault.c: (list_mtime_data_func): Fix warnings
and display of modified date / time in filechooser for some locales as
it was missing a locale to UTF-8 conversion. Fixes#482504.
svn path=/trunk/; revision=18880
2007-10-02 Federico Mena Quintero <federico@novell.com>
Fix http://bugzilla.gnome.org/show_bug.cgi?id=455284 - In the file
chooser, Ctrl-L should switch to the location entry. If we are
already on the location entry, turn it off. Based on a patch by
Jaap A. Haitsma <jaap@haitsma.org> and an idea by Wouter
Bolsterlee.
* gtk/gtkfilechooserdefault.c (location_button_toggled_cb): Call
location_mode_set() directly instead of using toggle_location_mode().
(toggle_location_mode): Removed.
(location_toggle_popup_handler): If the file entry is not visible,
show it. If it is visible, turn it off only if it is focused.
Otherwise, switch to the entry.
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=18874
2007-09-25 Emmanuele Bassi <ebassi@gnome.org>
Fixes for bug #480123.
* gtk/gtksearchenginesimple.c:
(gtk_search_engine_simple_dispose), (search_thread_done_idle): Cancel
the file tree walking thread when disposing the search engine
implementation.
* gtk/gtkfilechooserdefault.c (search_stop_searching): Forcibly
stop the search engine implementation when stopping the search,
instead of just unreffing the object.
svn path=/trunk/; revision=18865
2007-09-12 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c (render_recent_icon): Use the
"document-open-recent" icon for the the Recently Used shortcut
in the file chooser. (#306445)
* gtk/Makefile.am:
* gtk/stock-icons/16/document-open-recent.png:
* gtk/stock-icons/16/document-open-recent.svg:
* gtk/stock-icons/24/document-open-recent.png:
* gtk/stock-icons/24/document-open-recent.svg: Add the
"document-open-recent" icon to the builtin theme we provide
as a fallback.
svn path=/trunk/; revision=18803
2007-08-23 Emmanuele Bassi <ebassi@gnome.org>
* gtkfilechooserdefault.c:
(search_hit_get_info_cb), (recent_item_get_info_cb): Check if
we are still holding the model before updating it; removes a
set of critical warnings when switching to the browse mode from
a loading search or recent files list.
(recent_clear_model), (recent_sort_model),
(recent_idle_cleanup): When in recent files mode, set the
model for the files list view when we have completed the loading
of the recently used files list. This makes switching between
modes fast again and reduces the amount of redraws needed
to display the list. (#469214)
svn path=/trunk/; revision=18677
2007-07-24 Matthias Clasen <mclasen@redhat.com>
* gtkcolorsel.c:
* gtkfilechooserdefault.c:
* gtkpagesetupunixdialog.c:
* gtkprintunixdialog.c: Port to use new tooltips API.
(#451397, Jan Arne Petersen)
svn path=/trunk/; revision=18539
2007-07-20 Matthias Clasen <mclasen@redhat.com>
Apply a patch by Emmanuele Bassi to limit the number
of shown recent files. (#439715)
* gtk/gtksettings.c: Add a setting for the number
of recent files to display by default.
* gtk/gtkrecentchooserdefault.c:
* gtk/gtkfilechooserdefault.c: Respect the limit.
* gtk/gtkrecentmanager.c: Remove the poll timeout in
dispose, and do not stat more often than every 5 seconds.
* gtk/gtkrecentchooserutils.c:
* gtk/gtkrecentchoosermenu.c: Cleanups
* tests/testrecentchoosermenu.c: Test limits.
svn path=/trunk/; revision=18510
2007-07-20 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c: Apply a patch by Emmanuele
Bassi to add tooltips to the file lists in recent files and
search modes.
svn path=/trunk/; revision=18508
2007-06-26 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c (list_mtime_data_func): Show
the time of last change in the file chooser, for files
modified today or yesterday. (#324543)
* configure.in: Check for localtime_r().
svn path=/trunk/; revision=18248
2007-06-13 Kristian Rietveld <kris@imendio.com>
* gtk/gtk.symbols
* gtk/gtkfilesystem.[ch]: rename _gtk_file_system_create to
gtk_file_system_create to make it public and bring trunk back
in sync with gtk-2-10.
* gtk/gtkfilechooserdefault.c (set_file_system_backend): updated.
svn path=/trunk/; revision=18121
2007-06-06 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c:
(get_file_info_finished), (shortcuts_insert_path),
(shortcuts_add_bookmarks), (shortcuts_add_current_folder): Factor
out the search shortcut, the recently used shortcut and the separator
from the shortcut selection combo. (#444734)
(recent_idle_load): Remove the idle source that lazily loads the
recently used files, if the GtkRecentManager returns an empty
list. (#443913)
svn path=/trunk/; revision=18063
Return after setting the file chooser entry instead of falling through. Also
remove the handling for the search and recent files operation modes, since
they don't have a location entry to update.
svn path=/trunk/; revision=17983
2007-05-18 Carlos Garnacho <carlos@imendio.com>
Refactor GtkFileChooserDialog sizing.
* gtkfilechooserembed.[ch] (delegate_get_resizable_hints)
(_gtk_file_chooser_embed_get_resizable_hints):
s/resizable_hints/resizable/, return just one boolean value to
determine whether the filechooser should be resizable or not.
* gtkfilechooserprivate.h (struct GtkFileChooserDialogPrivate): remove
variables related to the GtkFileChooserEmbed get_default_size() and
get_resizable() implementations.
(struct GtkFileChooserDefault): Move default size management here.
* gtkfilechooserdefault.c (gtk_file_chooser_default_size_allocate):
Added, store currently allocated size to calculate default size later.
(gtk_file_chooser_default_get_resizable_hints):
s/resizable_hints/resizable/.
(gtk_file_chooser_default_set_property): Reload settings if the file
chooser action changes, this way the save expander state will be known
before mapping the window, avoiding wrong window positioning and
flickering. (#424299, #424309)
(find_good_size_from_style): Only get size from style if it wasn't set
previously.
(gtk_file_chooser_default_get_default_size): return default size based
on stored default size and preview/extra widget sizes.
* gtkfilechooserdialog.c (file_chooser_widget_update_hints)
(file_chooser_widget_realized_size_changed)
(file_chooser_widget_unrealized_size_changed): simplified to
(file_chooser_widget_size_changed): set window size and resizability
based on the GtkFileChooserEmbed interface implementation. (Bug
#420285, Tomeu Vizoso)
(gtk_file_chooser_dialog_map): force a dialog size change, so it's
clamped for sure to the 75% of the screen size.
svn path=/trunk/; revision=17859
2007-05-14 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c:
Convert the GtkTreeIter inside the sorting functions for the
search and recent modes. This doesn't yet fix the segfault when
clicking the 'Name' column in recent mode, though.
svn path=/trunk/; revision=17843
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserdefault.c: Support drag and drop for
adding shortcuts of folders when in search or recent files
mode.
svn path=/trunk/; revision=17829
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Follow the sorting order of
the GtkTreeView displaying the files list.
(shortcuts_get_index), (shortcuts_insert_separator),
(shortcuts_model_create), (shortcuts_combo_filter_func): Remove
the separator between the Search and the Recently Used shortcuts.
(list_select_func), (list_icon_data_func), (list_name_data_func),
(list_mtime_data_func): Update the sensitivity of the row
depending on the GtkFileChooserAction used.
svn path=/trunk/; revision=17828
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Update the contents of the
files list when changing the filter of the GtkFileChooserDefault
widget.
svn path=/trunk/; revision=17827
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserdefault.c: Update the add bookmark button
sensitivity when in search or recent files mode, and allow
adding a bookmark for a folder.
svn path=/trunk/; revision=17826
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserdefault.c: UI fixes in the Search mode: add
a mnemonic to the label, de-boldify the label's text and assign
focus to the search entry when switching to the search mode.
(list_name_data_func): Split the text in both search and recent
files mode: on the first line use the short name and on the
second line use the full path.
svn path=/trunk/; revision=17825
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Add support for showing the
recently used files list as a special shortcut item.
svn path=/trunk/; revision=17824
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
GtkFileChooser search fixes and recent files support. (#435342)
* gtk/gtkfilechooserdefault.c: Overall whitespace fixes and
indentation style consistency.
(list_row_activated): If the search hit is a folder, follow it
when activating the row, and switch back to browse mode.
(search_clear_model), (search_start_query),
(search_entry_activate_cb), (search_setup_widgets): Remember
the last query when switching between modes.
svn path=/trunk/; revision=17823
2007-05-11 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtkfilechooserdefault.c:
(_gtk_file_chooser_default_class_init): Add key binding for
the Search shortcut; default to MOD1+S.
(search_shortcut_handler): Handle the key binding.
(search_hit_get_info_cb), (search_add_hit), (search_clear_model),
(search_setup_model): Retrieve informations on the search hits
when adding them to the model.
(list_icon_data_func): Show the search hit icon.
svn path=/trunk/; revision=17822
2007-05-02 Emmanuele Bassi <ebassi@gnome.org>
Add search file support in the GtkFileChooser. Original patch
by Federico Mena Quintero; patch updated by Matthias Clasen.
See bug #344785.
* gtk/gtksearchengine.[ch]: Private search engine abstraction
object.
* gtk/gtksearchenginebeagle.[ch]: Private search engine
implementation using libbeagle (via g_module_open()).
* gtk/gtksearchenginesimple.[ch]: Private search engine
implementation using file tree walking.
* gtk/gtksearchenginetracker.[ch]: Private earch engine
implementation using libtracker (via g_module_open()).
* gtk/gtkquery.[ch]: Private query object for the search
engines.
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechooserdefault.c: Use the GtkSearchEngine to
query a search engine backend using GtkQuery; create a new
operating mode, OPERATION_MODE_SEARCH, and call the common
operating mode OPERATION_MODE_BROWSE; add support for virtual
shortcuts inside the shortcuts model and create a new "Search"
virtual shortcut.
* gtk/Makefile.am: Update the build with the new files
svn path=/trunk/; revision=17783
2007-05-01 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (struct UpdateCurrentFolderData),
(update_current_folder_get_info_cb): add a new struct field to clear
the file entry after the current folder has been updated.
(gtk_file_chooser_default_update_current_folder),
(change_folder_and_display_error): Add a new function parameter to
trigger file entry clearing.
(edited_idle_create_folder_cb),
(file_list_drag_data_received_get_info_cb),
(gtk_file_chooser_default_map),
(gtk_file_chooser_default_set_current_folder),
(switch_to_selected_folder), (save_entry_get_info_cb),
(shortcuts_activate_volume_mount_cb), (shortcuts_activate_volume),
(shortcuts_activate_get_info_cb), (list_row_activated),
(path_bar_clicked): use new function parameter appropriately.
(gtk_file_chooser_default_should_respond): trigger file entry clearing
after the directory is updated instead of clearing it before, this way
we avoid reloading the completion model with the soon to be old folder,
causing a warning and a glitch in the folder where completion happens.
(#379414, Carlos Garnacho)
svn path=/trunk/; revision=17754
2007-03-23 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c: Add a keybinding (C-h) to
toggle whether to show hidden files. (#344657,
Wouter Bolsterlee, Priit Laes, et al)
svn path=/trunk/; revision=17557
2007-03-23 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c: Add a keybinding to
toggle the visibility of the location entry. (#383354,
John Pye, patch by Carlos Garnacho)
svn path=/trunk/; revision=17555
2007-03-15 Federico Mena Quintero <federico@novell.com>
Merged from gtk-2-10:
* gtk/gtkfilechooserdefault.c (find_good_size_from_style):
PANGO_PIXELS() gives us device units, which are *points* in
pangocairo's parlance, but we want actual pixels. So, get the
screen's resolution to compute the actual number of pixels.
Fixes bug #418585.
svn path=/trunk/; revision=17530
2007-03-12 Kristian Rietveld <kris@gtk.org>
* gtk/gtkfilechooserdefault.c (check_save_entry): immediately
bail out if current_folder is NULL. (#350988, lots of reporters,
modified patch by Jan Darmochwal).
svn path=/trunk/; revision=17479
2007-02-26 Matthias Clasen <mclasen@redhat.com>
Apply a patch by Carlos Garnacho to fix several problems
with filechooser size handling (#325477, #151169, 143213,
#153785)
* gtk/gtkfilechooserdefault.c: Increase NUM_LINES slightly.
(browse_widgets_create): Don't force the paned position to 200.
(find_good_size_from_style): Take the size of the extra widget
into account.
* gtk/gtkfilechooserdialog.c (file_chooser_widget_update_hints):
Accept a minimal width parameter. Update all callers.
svn path=/trunk/; revision=17357
* gtk/gtkfilechooserdefault.c:
* gtk/gtkfilechooserprivate.h:
* gtk/gtkfilechoosersettings.c:
* gtk/gtkfilechoosersettings.h:
Save the expanded state of the folder browser with the file
chooser settings. Resolves the expander portions of (#153828,
Lemmit Kaplinski)
svn path=/trunk/; revision=17121
2007-01-03 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (update_chooser_entry):
Exit early if we can't get file info - this happens
if the iter points to the row where we are editing
the name for a newly created folder. (#392191, Michael
Partridge, patch by Kristian Rietveld)
svn path=/trunk/; revision=17046
2006-12-30 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkprintoperation-unix.c:
* gtk/gtkprintbackend.c:
* gtk/gtkfilechooserdefault.c:
* gtk/gtksettings.c: Move a few settings to gtksettings.c
to make sure they show up in the docs. (#365364, Christian
Persch)
svn path=/trunk/; revision=16992
2006-11-08 Christian Persch <chpe@cvs.gnome.org>
* gtk/gtkfilechooserdefault.c (browse_widgets_create): Don't make
the "Location" label bold. Bug #372449.
2006-09-22 Matthias Clasen <mclasen@redhat.com>
Make remote bookmarks work better (#354887)
* gtk/gtkfilechooserdefault.c (shortcuts_reload_icons):
(shortcuts_insert_path):
* gtk/gtkfilechooserbutton.c (change_icon_theme):
(model_add_bookmarks):
(model_update_current_folder):
(update_label_and_image):
If the bookmark points to a remote file, don't call get_info(),
since that may a) take a long time and b) pop up an auth dialog.
Instead, just use a folder icon and create a display name
from the uri.
* gtk/gtkfilechooserdefault.c (_gtk_file_chooser_label_for_uri):
New function to create a suitable display name for a remote
uri. This should really be done in GtkFileSystem.
2006-09-19 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
Display an error when we come to the root.
2006-09-10 Matthias Clasen <mclasen@redhat.com>
* Commit a patch by Behdad to fix typos, omissions and other
errors in the symbol aliasing, and add checks for local PLT
entries. (#354687, Behdad Esfahbod)
2006-09-04 Kristian Rietveld <kris@imendio.com>
* gtk/gtkfilechooserdefault.c (update_current_folder_get_info_cb):
if setting the given folder failed, try setting the parent folder
until we succeed; display an error box at the end.
2006-09-03 Kristian Rietveld <kris@imendio.com>
* gtk/gtkfilechooserdefault.c (save_entry_get_info_cb),
(file_exists_get_info_cb), (gtk_file_chooser_default_should_respond):
change file_exists_and_is_not_folder checks to get the file info
for the path directly instead of querying the current file folder
of the save entry.
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault): add
new field.
* tests/autotestfilechooser.c (wait_for_idle_idle), (wait_for_idle),
(test_reload_sequence), (test_button_folder_states_for_action): wait
for idle after setting a folder to ensure the async operations to load
the folder are finished,
(test_confirm_overwrite), (test_confirm_overwrite_for_path):
factor out test_confirm_overwrite code so we can add tests for more
paths more easily.
2006-09-02 Kristian Rietveld <kris@imendio.com>
First part of file chooser fixes.
* gtk/gtkfilechooserbutton.c (model_add_special): also set the
handle in the model for the desktopdir case.
* gtk/gtkfilechooserdefault.c (shortcuts_add_current_folder): free
volume in case we retrieved it but don't pass it on to insert_path,
(shortcuts_model_create): change the column type for the handles
to pointer instead of GObject so our handle ref counting is not
disturbed,
(show_and_select_paths_finished_loading): don't forget to unref
the dialog.
* gtk/gtkfilesystemunix.c (gtk_file_system_unix_class_init),
(gtk_file_system_unix_init), (gtk_file_system_unix_dispose):
remove pending execute_callbacks_idle during dispose, also
execute all callbacks waiting to be run in the next idle,
(queue_*callback), (execute_callbacks_idle): refactor to maintain
a list of callbacks to call per file system instead of globally,
guard the file system during callback invocation,
(gtk_file_system_unix_get_folder): only add load folder idle if
none has been added yet.
2006-08-17 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c
(_gtk_file_chooser_default_class_init): Enable "/" and "~" as
bindings to activate the location entry again. Fixes bug #340856.
(tree_view_keybinding_cb): Likewise.
(trap_activate_cb): Likewise.
(location_popup_handler): Handle the "path" argument again; set it
as the text on the location entry.
(location_set_user_text): New helper function.
(load_setup_timer): Fix comment.
* tests/autotestfilechooser.c (main): Oops, enable all the tests again.
2006-07-18 Federico Mena Quintero <federico@novell.com>
Fix https://bugzilla.novell.com/show_bug.cgi?id=184875 - make the
location entry in Save mode preserve the stuff from
set_filename(); it was overwriting it with $cwd.
This is the same fix for
http://bugzilla.gnome.org/show_bug.cgi?id=347066
* tests/autotestfilechooser.c: (test_black_box): Added black-box
test for set_filename() and set_current_name().
* gtk/gtkfilechooser.c (gtk_file_chooser_get_type): Cast to
GClassInitFunc in the call to g_type_register_static_simple(), to
avoid a compiler warning.
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault):
Added a browse_files_last_selected_name field. We'll copy the
logic from gtkfilesel.c to see when to clear the location entry.
(struct _GtkFileChooserDefault): Removed the
processing_pending_selections field.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_finalize):
Free impl->browse_files_last_selected_name.
(pending_select_paths_process): Don't use
impl->processing_pending_selections.
(update_chooser_entry): Keep track of the name that was last
selected in the file list. We use this to know when to clear the
location entry. The logic is similar to that of
gtkfilesel.c:gtk_file_selection_file_changed(). This also lets us
get rid of the processing_pending_selections flag.
(update_chooser_entry): Clear the entry if we didn't have a
selection before.
(location_switch_to_filename_entry): Do not set $cwd as the
contents of the location entry here...
(location_popup_handler): ... but do it here instead, only as the
result of the user asking to turn on the location entry.
(gtk_file_chooser_default_get_paths): If the location entry is
empty, do the fallback of seeing if it is sensible to say that
$cwd is the selected path.
(gtk_file_chooser_default_update_current_folder): Don't set the
text of the location entry; this is no longer needed with the
fixes above.
(shortcuts_activate_iter): Clear the location entry when
activating a shortcut if we are not in SAVE mode. This keeps the
contents of the location entry consistent even when switching
folders via the shortcuts.
2006-07-16 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (browse_widgets_create): Mark
the text of the location label as translatable.
2006-06-19 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c:
Avoid a near-duplicate string and add some
translator comments. (#345320, #345321, Hendrik Richter)
2006-06-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c: Add support for pasting
filenames into the filechooser. (#153212, Bastian Nocera)
2006-05-16 Kristian Rietveld <kris@imendio.com>
* gtk/gtkfilechooserdefault.c
(show_and_select_paths_finished_loading): put the newly selected
row(s) the in the middle of the view,
(update_current_folder_get_info_cb),
(gtk_file_chooser_default_update_current_folder): make sure reload
state is set to RELOAD_HAS_FOLDER while loading the new folder,
so _map() won't start loading the current working directory. (Fixes
#341028, reported by Michael Natterer).
2006-05-03 Federico Mena Quintero <federico@novell.com>
Merged the federico-filename-entry branch, to fix bug #136541.
Combined ChangeLogs:
2006-04-17 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (pending_select_paths_process):
Oops, we *do* need to check that we are in OPEN mode before
selecting the first row in the file list. See
https://bugzilla.novell.com/show_bug.cgi?id=166906
(gtk_file_chooser_default_get_paths): If we are in the case for
the file list, and the list has no selected rows, jump to the case
for the filename entry. This is so that
1. The user types a filename in the SAVE filename entry
("foo.txt").
2. He then double-clicks on a folder ("bar") in the file
list.
will yield the expected "bar/foo.txt" selection.
2006-03-29 Federico Mena Quintero <federico@novell.com>
* gtk/gtkpathbar.c (gtk_path_bar_init): Reduce the inter-button
spacing to 0.
* gtk/gtkfilechooserdefault.c (browse_widgets_create): Make the
location label bold.
2006-03-29 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (location_mode_set): Just change the
location_mode field if we are in SAVE/CREATE_FOLDER modes.
(gtk_file_chooser_default_get_paths): Get the path based on the
currently focused widget, or the last-focused widget. This is
what we should have been doing in the beginning, but it worked out
fine because we didn't have the possibility of a filename entry in
OPEN mode.
(gtk_file_chooser_default_should_respond): Handle the case where
the last focused widget is the location_entry.
2006-03-28 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechoosersettings.[ch]: New files with a simple
framework for saving/loading settings from the file chooser in
$XDG_CONFIG_HOME/gtk-2.0/gtkfilechooser.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_unmap):
Save the current settings.
(settings_save): New helper function. We save the location_mode
and show_hidden flags.
(gtk_file_chooser_default_map): Load the settings.
(settings_load): New helper function.
* gtk/gtkfilechooserentry.c
(_gtk_file_chooser_entry_set_file_part): Oops, don't modify
in_change. Our handlers are what set the file_part, so they
*must* be run when we modify the text.
2006-03-27 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault):
Removed the save_file_name_entry. We'll make this be the same as
the location_entry widget.
(struct _GtkFileChooserDefault): Leave only location_button,
location_entry_box, location_label, location_entry. We'll use a
single toggle button for the location entry, which will appear
below the path bar.
(struct _GtkFileChooserDefault): Added a
processing_pending_selections flag.
* gtk/gtkfilechooserdefault.c (save_widgets_create): Destroy the
old location_entry if necessary, and hide the location toggle
widgets.
(update_chooser_entry): In multiple selection mode, just clear the
location_entry.
(check_save_entry): Allow running in OPEN or SELECT_FOLDER modes
if we are in LOCATION_MODE_FILENAME_ENTRY.
(gtk_file_chooser_default_should_respond): Switch to a folder if
the location_entry contains a folder name in OPEN and SAVE mode,
not just SAVE mode. If the entry doesn't contain a folder name,
but is otherwise well-formed, and we are in OPEN mode, return that
we should respond with that filename.
(gtk_file_chooser_default_initial_focus): Focus the location_entry
if appropriate.
(browse_widgets_create): Create the location_entry_box and the
location_label here.
(update_appearance): Call location_mode_set() when switching back
to OPEN/SELECT_FOLDER mode. Hide the location_button when
switching to SAVE/CREATE_FOLDER mode.
(pending_select_paths_process): Turn the
processing_pending_selections flag on and off around changes to
the current selection. Don't special-case OPEN mode anymore,
since the new flag will take care of things in
update_chooser_entry().
(update_chooser_entry): Don't do anything if
processing_pending_selections is TRUE. This keeps the entry from
being polluted when changing folders.
(location_popup_handler): In OPEN/SELECT_FOLDER modes, toggle
between the path bar and the entry. In SAVE/CREATE_FOLDER modes, simply focus the
location_entry.
(update_from_entry): Removed.
(location_entry_create): Removed.
(open_location_cb): Removed.
(file_list_build_popup_menu): Don't add an "Open _Location" menu item.
(location_entry_set_initial_text): Don't do anything if
current_folder is NULL.
* gtk/gtkfilechooserentry.c
(_gtk_file_chooser_entry_set_file_part): Turn in_change on and off
around the call to gtk_entry_set_text(). This makes completion
not happen when the caller has explicitly set a name.
2006-03-24 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserprivate.h (struct _GtkFileChooserDefault):
Added fields location_mode_box, location_pathbar_radio,
location_filename_radio, location_widget_box, location_label,
location_entry. The radio buttons will switch between the pathbar
and the location entry; the other boxes are for layout purposes.
(enum LocationMode): New enum.
(struct _GtkFileChooserDefault): Added a location_mode field.
* gtk/gtkfilechooserdefault.c (browse_widgets_create): Create the
location radio buttons to switch between the pathbar and the
location entry. Pack the browse_path_bar in the new
location_widget_box instead of a generic hbox.
(location_buttons_create): New function.
(gtk_file_chooser_default_init): Initialize impl->location_mode.
(location_switch_to_path_bar): New function.
(location_switch_to_filename_entry): New function.
* gtk/gtkfilechooserbutton.c (model_add_special): The display_name
should not be const.
2006-03-29 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (queue_edited_idle): Handle
double queuing, rather than asserting that it does not
happen. (#330617)
2006-03-07 Federico Mena Quintero <federico@novell.com>
Cancel drags when the grabs get broken. Fixes bug #333056:
* gtk/gtkdnd.c (gtk_drag_selection_received): The time argument is
a guint, not guint32.
(gtk_drag_source_event_cb): Return gboolean, not gint.
(gtk_drag_anim_timeout): Likewise.
(gtk_drag_motion_cb): Likewise.
(gtk_drag_key_cb): Likewise.
(gtk_drag_button_release_cb): Likewise.
(gtk_drag_abort_timeout): Likewise.
(gtk_drag_begin_internal): Connect to "grab-broken-event" on the
ipc_widget.
(gtk_drag_source_info_destroy): Disconnect from the
"grab-broken-event" callback.
(gtk_drag_end): Likewise.
(gtk_drag_grab_broken_event_cb): New callback. We cancel the drag
if the grab was broken and not regrabbed by the DnD code.
2006-03-07 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (shortcuts_button_press_event_cb):
Hack to let the treeview's button-press-event handler run before
ours. This lets the selection be updated before we pop up a
context menu.
2006-02-24 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserdefault.c (shortcuts_list_create): Make the
column header visible, and make it be "_Places". Changed the
accessible object name to Places as well. Fixes bug #331306.
(file_pane_create): Do not create the path bar and "create folder"
button here...
(browse_widgets_create): ... but create them here instead. This
moves the path bar to be above both the hpaned, giving it the full
width of the dialog. Fixes bug #327733.
2006-01-27 Federico Mena Quintero <federico@ximian.com>
Fixes bug #328820:
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_class_init): Make GDK_KP_Divide pop up
the location dialog populated to "/".
(tree_view_keybinding_cb): Likewise.
(trap_activate_cb): Likewise.
* gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_class_init,
tree_view_keybinding_cb, trap_activate_cb): On "unix", pop up the
"Open Location" window on "~" as well as "/". #153213
(location_entry_create): Fix this so autocompletion still works
correctly in that case.
(ok'ed by federico)
2005-11-28 Federico Mena Quintero <federico@ximian.com>
Fixes the critical warnings from bug #317999, thus fixing the bug
completely:
* gtk/gtkfilechooserdefault.c
(gtk_file_chooser_default_get_paths): In SELECT_FOLDER mode,
use _gtk_file_chooser_get_current_folder_path() instead of fetching the
impl->current_folder directly. The latter may be null if we are
in RELOAD_NONE state.
2005-11-28 Federico Mena Quintero <federico@ximian.com>
Fix bug #321560, based on a patch by Bogdan Nicula (bogdanni@hotmail.com):
* gtk/gtkfilechooserdefault.c (up_folder_handler): Don't add the
current_folder to the pending select paths here; the path bar will
give it to us now.
(path_bar_clicked): Add the child_path to the pending select paths
here.
(show_and_select_paths): Don't filter out folders.
(show_and_select_paths): Don't take separate arguments for
only_one_path and multiple paths.
* tests/autotestfilechooser.c (test_folder_switch_and_filters):
New test about preserving the filters when we change folders.
2005-11-28 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilechooserdefault.c (shortcuts_key_press_event_cb): Make
F2 work for renaming bookmarks. (#320822, Jaap A. Haitsma, patch
by Paolo Borelli)