Go to file
Colin Walters 0af108211c apps: Ensure running apps override new .desktop file data
This patch fixes the "apps vanish from alt-TAB bug".

If a "package system" rips away and possibly replaces .desktop files
at some random time, we have historically used inotify to detect this
and reread state (in a racy way, but...).  In GNOME 2, this was
generally not too problematic because the menu widget was totally
separate from the list of windows - and the data they operate on was
disjoint as well.

In GNOME 3 we unify these, and this creates architectural problems
because the windows are tied to the app.

What this patch tries to do is, when rereading the application state,
if we have a running application, we keep that app around instead of
making a new instance.  This ensures we preserve any state such as the
set of open windows.

This requires moving the running state into ShellAppSystem.  Adjust
callers as necessary, and while we're at it drop the unused "contexts"
stuff.

This is just a somewhat quick band-aid; a REAL fix would require us
having low-level control over application installation.  As long as
we're on top of random broken tar+wget wrappers, it will be gross.

A slight future improvement to this patch would add an explicit
"merge" between the old and new data.  I think probably we always keep
around the ShellApp corresponding to a given ID, but replace its
GMenuTreeEntry.

https://bugzilla.gnome.org/show_bug.cgi?id=657990
2011-09-05 17:29:41 -04:00
.settings Convert all JS style to be uniform, add Eclipse settings bits 2008-11-28 20:12:20 +00:00
data Switch default browser to Epiphany 2011-09-02 11:55:44 -04:00
js apps: Ensure running apps override new .desktop file data 2011-09-05 17:29:41 -04:00
man docs: Update man page 2011-06-02 15:36:04 +02:00
po Updated Danish translation 2011-09-05 23:12:52 +02:00
src apps: Ensure running apps override new .desktop file data 2011-09-05 17:29:41 -04:00
tests Add markup.js to TEST_JS 2011-07-27 19:13:03 -04:00
tools build: Make caribou depend on libgee 2011-08-30 15:14:22 +02:00
.gitignore trivial: update .gitignore 2011-07-13 14:59:45 -04:00
.project Convert all JS style to be uniform, add Eclipse settings bits 2008-11-28 20:12:20 +00:00
AUTHORS Initial commit 2008-10-31 04:22:44 +00:00
autogen.sh Modernize autotools configuration 2010-02-11 21:02:21 +01:00
configure.ac Bump version to 3.1.90.1 2011-08-31 11:48:43 -04:00
COPYING Initial commit 2008-10-31 04:22:44 +00:00
gnome-shell.doap Use the description for GNOME shell instead of Mutter 2011-03-27 15:55:37 +02:00
MAINTAINERS MAINTAINERS: Fix my email address 2011-05-23 09:15:58 -04:00
Makefile.am (revert autobuilder test break) 2010-03-01 13:34:20 -05:00
NEWS Bump version to 3.1.90.1 2011-08-31 11:48:43 -04:00
README Add README and DOAP file 2009-09-04 15:23:13 -04:00

GNOME Shell provides core user interface functions for the GNOME 3 desktop,
like switching to windows and launching applications. GNOME Shell takes
advantage of the capabilities of modern graphics hardware and introduces
innovative user interface concepts to provide a visually attractive and
easy to use experience.

For more information about GNOME Shell, including instructions on how
to build GNOME Shell from source and how to get involved with the project,
see:

 http://live.gnome.org/GnomeShell

Bugs should be reported at http://bugzilla.gnome.org against the 'gnome-shell'
product.

License
=======
GNOME Shell is distributed under the terms of the GNU General Public License,
version 2 or later. See the COPYING file for details.