We want to be compatible with the following situation:
- there's no explicit default set in mimeapps.list
- we add support for a content type to a specific application, and that
list is empty
- the default should be picked from the system list, not overridden by
the user-added application.
So we make the default explicit in this case, by adding it to the
relevant section in mimeapps.list.
https://bugzilla.gnome.org/show_bug.cgi?id=637675
This commit also changes (maintaining compatibility) the way
user-specified default applications are stored (as in, those for which
g_app_info_set_as_default_for_type() has been called.
We now store the default application for a content type in a new group
in the mimeapps.list keyfile, and "Added Associations" tracks only the
applications that have been added by the user, following a
most-recently-used first order.
This is useful in GtkAppChooser-like widgets to pre-select the last used
application when constructing a widget.
https://bugzilla.gnome.org/show_bug.cgi?id=636311
Otherwise you break the fallback + recommended distinction for a content
type, as you end up adding support for a given content type to *all* of
the applications claiming to support the supertype.
This ways UIs can differentiate between them, and show them in different
section.
- a recommended app is an application that claims to support a content
type directly, not by a supertype derivation.
- a fallback app is an application that claims to support a supertype of
a given content type.
Removing an extension point is an API and ABI break. In particular, it
causes (older) gvfs versions to fail loading with a linkage error from
ld which in turn makes the desktop unusable.
So this reinstate the extension point and API provided by it, but
deprecates and does not use it. So no functionality is changed.
This reverts parts of commit 9b262f1c5f.
Complaints-Also-To: Ryan Lortie <desrt@desrt.ca>
Move all the annotations over from gobject-introspection.
They will not be used directly by the introspection scanner for now,
instead they will be extracted by a script and updated manually
until introspection is properly integrated into the glib build
This adds a GApplication object to GIO, which is the core of
an application support class, supporting
- uniqueness
- exporting actions (simple scripting)
- standard actions (quit, activate)
The implementation for Linux uses D-Bus, takes a name on the
session bus, and exports a org.gtk.Application interface.
Implementations for Win32 and OS X are still missing.
Note: Since we export types with Iface in the name rather than
Interface we have to use some typedefs to make this work. New
interfaces should probably use Interface as the public name.
2009-03-03 Alexander Larsson <alexl@redhat.com>
Bug 561172 – gnome-open fails on local URIs with anchors
* gdesktopappinfo.c:
Don't force uris to filenames if the uri has an anchor, because
that would strip the anchor.
* glocalvfs.c:
Strip anchor from file:// uris when creating GFile, since
g_filename_from_uri doesn't handle them.
svn path=/trunk/; revision=7953
2009-02-26 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
Support desktop file key X-GIO-NoFuse which disables
use of fuse pathnames for %u and %U arguments.
svn path=/trunk/; revision=7914
* gio.symbols:
* gappinfo.[hc]: Add g_app_info_get_commandline. Requested
by Hans Petter Jansson.
* gdesktopappinfo.c: And implement it here.
svn path=/trunk/; revision=7706
2008-11-28 Matthias Clasen <mclasen@redhat.com>
Bug 559633 – gtk_image_new_from_gicon does not always work for
.desktop files
* gdesktopappinfo.c (g_desktop_app_info_new_from_keyfile): Ignore
extensions on icon names. Proposed by Axel von Bertoldi.
svn path=/trunk/; revision=7698
* gdesktopappinfo.c (g_app_info_can_delete): Only allow deleting
files that have been created by g_app_info_create_from_commandline.
svn path=/trunk/; revision=7693
2008-10-13 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
When adding an application as handling a mime type (but
not as the default), copy the full list of desktop ids handling
that type in before adding the new one on the end of the list.
This means we're not accidentally changing the default by overriding
the info from the later directories in the search path.
Also, fixes small leak of removed_entries.
svn path=/trunk/; revision=7595
2008-10-05 Pascal Terjan <pterjan@linuxfr.org>
Bug 554970 â segfault when update-desktop-database is not available
on the system
* gdesktopappinfo.c (run_update_command): Have the error set before
using it.
svn path=/trunk/; revision=7570
2008-10-01 David Zeuthen <davidz@redhat.com>
* gdesktopappinfo.c (expand_macro): If possible, always pass FUSE
file:// URIs (such as '/home/davidz/.gvfs/sftp on foo/file.avi')
instead of the gio URI (such as sftp://foo/file.avi) when using
g_app_info_launch() and friends. With a sufficiently recent gvfs,
apps using gio+gvfs will map the FUSE file:// URI back to the gio
URI (and thus bypass the fuse daemon) thanks the patch from bug
#530654. Since Nautilus is an user of g_app_info_launch() it
means that non-gio POSIX apps, such as mplayer, will Just Work(tm)
when launced via the file manager. Win. Fixes bug #528670.
* gappinfo.c: Add some notes about the FUSE POSIX URI <-> GIO URI
mapping to the description of GAppInfo.
2008-10-01 David Zeuthen <davidz@redhat.com>
* README.in: Add "Notes about glib 2.20" section detailing the
ramifications of the patch from bug #528670.
svn path=/trunk/; revision=7566
* gdesktopappinfo.c (get_all_desktop_entries_for_mime_type): add a
cast to stop a gcc warning
* gfile.c (g_file_copy_attributes): add parens to stop a gcc
warning
svn path=/trunk/; revision=7550
2008-09-16 Wouter Bolsterlee <wbolster@svn.gnome.org>
* gdesktopappinfo.c (g_desktop_app_info_new_from_keyfile):
Fix trivial typo to unbreak the build (there was a colon
instead of a semicolon at the end of a statement).
svn path=/trunk/; revision=7500
2008-09-14 Cosimo Cecchi <cosimoc@gnome.org>
Bug 551887 – Docs for g_desktop_app_info_new_from_filename ()
aren't clear.
* gdesktopappinfo.c: add a note in the docs clarifying what the
"filename" parameter really is.
svn path=/trunk/; revision=7481
2008-07-28 Matthias Clasen <mclasen@redhat.com>
Bug 545157 – wrong/no list of "open with" applications for .cc and
.cpp files
* gdesktopappinfo.c (get_all_desktop_entries_for_mime_type):
Collect all ancestors, not just direct parents. Pointed
out by Bastien Nocera
svn path=/trunk/; revision=7268
* gio.symbols:
* gdesktopappinfo.[hc]: Add a function to create a
GDesktopAppInfo from a GKeyFile. Proposed by Josselin Mouette.
svn path=/trunk/; revision=7143
2008-07-01 Cody Russell <bratsche@gnome.org>
* gio/gioenums.h:
* gio/giotypes.h:
Moved all relevant typedefs into these files.
* gio/*.[ch]:
Updated wrt added files.
Split types into separate file for easier maintainership. (#538564)
svn path=/trunk/; revision=7127
2008-04-16 Michael Meeks <michael.meeks@novell.com>
* gdesktopappinfo.c (g_desktop_app_info_new_from_filename):
tolerate an empty TryExec= line without failing; nautilus used
to create launchers with these in previous versions. Fixes#528433
svn path=/trunk/; revision=6853
2008-02-06 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
Update to use both mimeapps.list and
defaults.list as discussed on xdg list.
svn path=/trunk/; revision=6461
2008-02-01 Alexander Larsson <alexl@redhat.com>
* gappinfo.c (g_app_info_launch_uris):
Actually call the launch_uris method, not
launch.
2008-02-01 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c (g_desktop_app_info_equal):
Ensure appinfos with no id but same pointer value
compare equal
svn path=/trunk/; revision=6440
2008-01-30 Alexander Larsson <alexl@redhat.com>
* gappinfo.c:
Add doc comment about uris vs GFiles to
g_app_info_launch()
* gdesktopappinfo.c:
Ensure uris passed to g_app_info_launch_uris()
are not roundtriped through GFile (as that
may be slightly destructive for e.g. mailto: links)
svn path=/trunk/; revision=6424
2008-01-29 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
* gdesktopappinfo.h:
giomodule-priv.h include moved to .c file.
svn path=/trunk/; revision=6416
2008-01-29 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
Lazily create the desktop files for appinfos created
by g_app_info_create_from_commandline() when needed
for mime associations. This allows run-time use
of GAppInfo object without creating unnecessary
files on disk.
svn path=/trunk/; revision=6412
2008-01-29 Alexander Larsson <alexl@redhat.com>
* gfile.[ch]:
Add g_file_query_default_handler utility to easily look up
the GAppInfo that handles a file.
* gdesktopappinfo.[ch]:
* giomodule.c:
Set up an extension point for g_app_info_get_default_for_uri_scheme()
* gvfs.c:
Remove unused function
svn path=/trunk/; revision=6409
2008-01-25 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
Implement changes discussed on xdg list.
Now we can add supported mimetypes by just using defaults.list
We can also remove associations in defaults.list.
svn path=/trunk/; revision=6374
2008-01-25 Alexander Larsson <alexl@redhat.com>
* gdesktopappinfo.c:
Don't make local copy of desktop file
for mimetype changes if the file already
supports the new mimetype.
svn path=/trunk/; revision=6372
2008-01-04 Alexander Larsson <alexl@redhat.com>
* gappinfo.[ch]:
* gwin32appinfo.c:
* gio.symbols:
Add g_app_info_supports_files()
Remove desktop arg from g_app_info_should_show().
* gdesktopappinfo.[ch]:
Implement g_app_info_supports_files() and new should_show()
Add g_desktop_app_info_set_desktop_env() to set the desktop
for should_show(). (This will be set by gtk+ later)
svn path=/trunk/; revision=6242
2007-12-30 Matthias Clasen <mclasen@redhat.com>
* gdesktopfileinfo.c (g_app_info_get_all): Don't include NULLs
in the list of returned app infos.
svn path=/trunk/; revision=6218