It doesn't make sense to keep them separate as GtkSizeRequest requires a
GtkWidget and GtkWidget implements GtkSizeRequest, so you can never have
one without the other.
It also makes the code a lot easier because no casts are required when
calling functions.
Also, the names would translate to gtk_widget_get_width() and people
agreed that this would be a too generic name, so a "preferred" was added
to the names.
So this patch moves the functions:
gtk_size_request_get_request_mode() => gtk_widget_get_request_mode()
gtk_size_request_get_width() => gtk_widget_get_preferred_width()
gtk_size_request_get_height() => gtk_widget_get_preferred_height()
gtk_size_request_get_size() => gtk_widget_get_preferred_size()
gtk_size_request_get_width_for_height() =>
gtk_widget_get_preferred_width_for_height()
gtk_size_request_get_height_for_width() =>
gtk_widget_get_preferred_height_for_width()
... and moves the corresponding vfuncs to the GtkWidgetClass.
The patch also renames the implementations of the vfuncs in widgets to
include the word "preferrred".
The keysyms create a lot of potential namespace conflicts for
C, and are especially problematic for introspection, where we take
constants into the namespace, so GDK_Display conflicts with GdkDisplay.
For C application compatiblity, add gdkkeysyms-compat.h which uses
the old names.
Just one user in GTK+ continues to use gdkkeysyms-compat.h, which is
the gtkimcontextsimple.c, since porting that requires porting more
custom Perl code.
2009-01-22 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserentry.c (autocomplete): Relax the assertion;
just do nothing if the folder is not loaded or if the cursor position
is not at the end of the text. A very slow-to-load folder can get
us into the latter state if the user starts typing first.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22186
2009-01-22 Federico Mena Quintero <federico@novell.com>
Fix the computation of "complete but unique" in
GtkFileChooserEntry. Fix the case where "/" was not appended to a
unique directory name during explicit Tab completion.
* gtk/gtkfilechooserentry.c (maybe_append_separator_to_file):
Return whether anything was appended as well as the new string
itself.
(find_common_prefix): Oops, only turn on
is_complete_not_unique_ret if we had a unique match!
(append_common_prefix): If we appended a directory separator, we
*did* expand the common prefix, so we are not in the "nothing
inserted" case.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22184
(start_explicit_completion): Add comments for translators, to
explain the purpose of the various feedback messages used during
completion.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22183
(start_loading_current_folder): Check if the folder to be loaded
is non-native for the local_only=TRUE case; if so, return an error
as we are configured to load only local folders.
(reload_current_folder): Pass on errors from
start_loading_current_folder(). Tighten the preconditions, as we
are sure that we can only receive non-NULL folder-files to load.
(refresh_current_folder_and_file_part): Pass on errors from
reload_current_folder(). At the very end, assert the invariant
described above.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22182
(discard_loading_and_current_folder_file): Factor out function to
cancel the cancellable and discard the current_folder_file,
i.e. to reset the invariant to the "nothing valid is loaded" case.
(gtk_file_chooser_entry_dispose): Use
discard_loading_and_current_folder_file().
(reload_current_folder): Likewise.
(refresh_current_folder_and_file_part): Likewise, and ensure that
the error cases result in the invariant being held.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22181
(start_autocompletion): Process the result from refresh...(). We
only do completion in the REFRESH_OK case. For the error cases,
we don't do anything, as this is autocompletion and must not
result in non-asked-for errors popping up.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22180
(commit_completion_and_refresh): Don't do anything with the result
of refresh...(), since this function doesn't get called during
completion-related interaction.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22179
(start_explicit_completion): Process the result from
refresh...(). Here we present the actual feedback about only
being able to display local folders for local_only=TRUE.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22178
2009-01-22 Federico Mena Quintero <federico@novell.com>
Return an error code when refreshing the entry from the user's
input. We use this in the completion code to know when completion
can't happen due to (for example) having a non-local URI in a file
chooser that is local_only=TRUE.
Also, we start maintaining an invariant that
chooser_entry->current_folder_file != NULL implies that:
* what the user entered is valid
* we are loading that folder (chooser_entry->load_folder_cancellable != NULL)
* or we are done loading that folder, or we have a handle
to it at least (chooser_entry->current_folder != NULL)
The invariant also says that all of the above are NULL (and
chooser_entry->current_folder_file == NULL) implies that the user
typed something invalid. This makes
_gtk_file_chooser_entry_get_current_folder() not able to return
an invalid folder.
* gtk/gtkfilechooserentry.c (RefreshStatus): New enum.
(refresh_current_folder_and_file_part): Return a RefreshStatus.
We filter out incomplete hostnames here (typing
"sftp://incompl[tab]" will error out), as well as completely
unparsable input.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22177
Fix completion so it doesn't pop up for every character in a URI
hostname:
* gtk/gtkfilechooser.h (GtkFileChooserError): Add a
GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME.
* gtk/gtkfilesystem.c (_gtk_file_system_parse): Return an
"incomplete hostname" error if the user has not typed a full
hostname yet in an URI.
* gtk/gtkfilechooserentry.c (append_common_prefix): If we get an
incomplete hostname, just don't pop up an error, since that is a
transient state and the user doesn't need to be notified about it.
(refresh_current_folder_and_file_part): Don't revert to showing
the base folder if we have an incomplete hostname.
(reload_current_folder): Handle the passed folder being NULL, even
if we must force a reload. Also, reload the folder if we didn't
have a cancellable for it (i.e. we hadn't started to load it
before).
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22157
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
Patch by Carlos Garnacho <carlos@imendio.com>:
* gtk/gtkfilechooserentry.c (discard_current_folder): New
function, factored out for when we need to get rid of the
current_folder.
(gtk_file_chooser_entry_dispose): Use discard_current_folder().
(finished_loading_cb): Fix prototype.
(load_directory_get_folder_callback): Discard the completion
store, as well as clearing the completion feedback, if we find an
error while loading the folder. Also, use
discard_current_folder().
(reload_current_folder): Use discard_current_folder().
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=22155
* 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
2008-09-08 Paolo Borelli <pborelli@katamail.com>
* gtk/gtkfilechooserentry.c (install_start_autocompletion_idle):
use gdk_threads_add_idle so that the handler acquires the lock
since it calls gtk functions.
svn path=/trunk/; revision=21321
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-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-06-03 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserentry.c (install_completion_feedback_timer):
If the user presses Tab while the completion feedback window is
active, then we'll assert. Remove the assertion and just re-set
the timer. Fixes https://bugzilla.novell.com/show_bug.cgi?id=355225
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=20305
2008-03-26 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserentry.c (commit_completion_and_refresh): New
helper function; factored out from the functions that commit the
current suggested autocompletion and that refresh the entry's paths.
(gtk_file_chooser_entry_activate): Use commit_completion_and_refresh().
(_gtk_file_chooser_entry_get_file_part): Likewise.
(_gtk_file_chooser_entry_get_current_folder): Likewise. This
makes the entry have the correct paths when *not* using any form
of completion (and makes the file chooser work when clicking the
OK button).
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=19937
2008-03-13 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserentry.c (create_completion_feedback_window):
Set the mouse cursor of the feedback window to invisible, so that
we respect GtkEntry's invisible cursor while typing.
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=19870
2008-03-13 Federico Mena Quintero <federico@novell.com>
* gtk/gtkfilechooserentry.c (show_completion_feedback_window): Put
the feedback window at entry_height/2 pixels to the right of the
cursor, for a cheap "M-width / 2" spacing.
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=19869