[gnome-shell] ShellApp+ShellGlobal: unify app launch context code
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] ShellApp+ShellGlobal: unify app launch context code
- Date: Sun, 19 Jan 2014 17:52:46 +0000 (UTC)
commit 3227d4f3edade8d20a79c4c201b8c618230ba2b6
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sun Jan 19 18:34:32 2014 +0100
ShellApp+ShellGlobal: unify app launch context code
Extend shell_global_create_app_launch_context() with the required
parameters and use that for shell_app_launch() too.
https://bugzilla.gnome.org/show_bug.cgi?id=669603
js/misc/util.js | 2 +-
js/ui/components/autorunManager.js | 2 +-
js/ui/components/telepathyClient.js | 2 +-
js/ui/dateMenu.js | 2 +-
js/ui/lookingGlass.js | 4 ++--
js/ui/messageTray.js | 2 +-
js/ui/remoteSearch.js | 2 +-
js/ui/runDialog.js | 2 +-
src/shell-app.c | 34 ++++++----------------------------
src/shell-global.c | 17 ++++++++++++-----
src/shell-global.h | 4 +++-
11 files changed, 30 insertions(+), 43 deletions(-)
---
diff --git a/js/misc/util.js b/js/misc/util.js
index 9965c5a..ba5de4a 100644
--- a/js/misc/util.js
+++ b/js/misc/util.js
@@ -89,7 +89,7 @@ function spawnApp(argv) {
let app = Gio.AppInfo.create_from_commandline(argv.join(' '), null,
Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION);
- let context = global.create_app_launch_context();
+ let context = global.create_app_launch_context(0, -1);
app.launch([], context);
} catch(err) {
_handleSpawnError(argv[0], err);
diff --git a/js/ui/components/autorunManager.js b/js/ui/components/autorunManager.js
index c58fa2e..66077cb 100644
--- a/js/ui/components/autorunManager.js
+++ b/js/ui/components/autorunManager.js
@@ -64,7 +64,7 @@ function startAppForMount(app, mount) {
try {
retval = app.launch(files,
- global.create_app_launch_context())
+ global.create_app_launch_context(0, -1))
} catch (e) {
log('Unable to launch the application ' + app.get_name()
+ ': ' + e.toString());
diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js
index 56fc2d0..e69c2a1 100644
--- a/js/ui/components/telepathyClient.js
+++ b/js/ui/components/telepathyClient.js
@@ -1339,7 +1339,7 @@ const AccountNotification = new Lang.Class({
let cmd = 'empathy-accounts --select-account=' +
account.get_path_suffix();
let app_info = Gio.app_info_create_from_commandline(cmd, null, 0);
- app_info.launch([], global.create_app_launch_context());
+ app_info.launch([], global.create_app_launch_context(0, -1));
}));
this._enabledId = account.connect('notify::enabled',
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index d851ed2..ab7f26d 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -211,7 +211,7 @@ const DateMenuButton = new Lang.Class({
let app = this._getCalendarApp();
if (app.get_id() == 'evolution.desktop')
app = Gio.DesktopAppInfo.new('evolution-calendar.desktop');
- app.launch([], global.create_app_launch_context());
+ app.launch([], global.create_app_launch_context(0, -1));
},
_onOpenClocksActivate: function() {
diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js
index a126d81..5c54d93 100644
--- a/js/ui/lookingGlass.js
+++ b/js/ui/lookingGlass.js
@@ -670,13 +670,13 @@ const Extensions = new Lang.Class({
_onViewSource: function (actor) {
let extension = actor._extension;
let uri = extension.dir.get_uri();
- Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context());
+ Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context(0, -1));
this._lookingGlass.close();
},
_onWebPage: function (actor) {
let extension = actor._extension;
- Gio.app_info_launch_default_for_uri(extension.metadata.url, global.create_app_launch_context());
+ Gio.app_info_launch_default_for_uri(extension.metadata.url, global.create_app_launch_context(0, -1));
this._lookingGlass.close();
},
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index f3806b7..53e838e 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -203,7 +203,7 @@ const URLHighlighter = new Lang.Class({
if (url.indexOf(':') == -1)
url = 'http://' + url;
- Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
+ Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context(0, -1));
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js
index 05a6ae9..2601701 100644
--- a/js/ui/remoteSearch.js
+++ b/js/ui/remoteSearch.js
@@ -283,7 +283,7 @@ const RemoteSearchProvider = new Lang.Class({
// the provider is not compatible with the new version of the interface, launch
// the app itself but warn so we can catch the error in logs
log('Search provider ' + this.appInfo.get_id() + ' does not implement LaunchSearch');
- this.appInfo.launch([], global.create_app_launch_context());
+ this.appInfo.launch([], global.create_app_launch_context(0, -1));
}
});
diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js
index 7d99253..10cae4c 100644
--- a/js/ui/runDialog.js
+++ b/js/ui/runDialog.js
@@ -233,7 +233,7 @@ const RunDialog = new Lang.Class({
let file = Gio.file_new_for_path(path);
try {
Gio.app_info_launch_default_for_uri(file.get_uri(),
- global.create_app_launch_context());
+ global.create_app_launch_context(0, -1));
} catch (e) {
// The exception from gjs contains an error string like:
// Error invoking Gio.app_info_launch_default_for_uri: No application
diff --git a/src/shell-app.c b/src/shell-app.c
index 283bd53..27f56af 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -1185,32 +1185,6 @@ app_child_setup (gpointer user_data)
}
#endif
-static GAppLaunchContext *
-make_launch_context (guint timestamp,
- int workspace)
-{
- GdkAppLaunchContext *context;
- ShellGlobal *global;
- MetaScreen *screen;
- GdkDisplay *gdisplay;
-
- global = shell_global_get ();
- screen = shell_global_get_screen (global);
- gdisplay = gdk_screen_get_display (shell_global_get_gdk_screen (global));
-
- if (timestamp == 0)
- timestamp = shell_global_get_current_time (global);
-
- if (workspace < 0)
- workspace = meta_screen_get_active_workspace_index (screen);
-
- context = gdk_display_get_app_launch_context (gdisplay);
- gdk_app_launch_context_set_timestamp (context, timestamp);
- gdk_app_launch_context_set_desktop (context, workspace);
-
- return G_APP_LAUNCH_CONTEXT (context);
-}
-
/**
* shell_app_launch:
* @timestamp: Event timestamp, or 0 for current event timestamp
@@ -1223,6 +1197,7 @@ shell_app_launch (ShellApp *app,
int workspace,
GError **error)
{
+ ShellGlobal *global;
GAppLaunchContext *context;
gboolean ret;
@@ -1233,7 +1208,8 @@ shell_app_launch (ShellApp *app,
return TRUE;
}
- context = make_launch_context (timestamp, workspace),
+ global = shell_global_get ();
+ context = shell_global_create_app_launch_context (global, timestamp, workspace);
ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL,
context,
@@ -1264,9 +1240,11 @@ shell_app_launch_action (ShellApp *app,
guint timestamp,
int workspace)
{
+ ShellGlobal *global;
GAppLaunchContext *context;
- context = make_launch_context (timestamp, workspace);
+ global = shell_global_get ();
+ context = shell_global_create_app_launch_context (global, timestamp, workspace);
g_desktop_app_info_launch_action (G_DESKTOP_APP_INFO (app->info),
action_name, context);
diff --git a/src/shell-global.c b/src/shell-global.c
index 849278d..f961dad 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -1326,6 +1326,8 @@ shell_global_get_current_time (ShellGlobal *global)
/**
* shell_global_create_app_launch_context:
* @global: A #ShellGlobal
+ * @timestamp: the timestamp for the launch (or 0 for current time)
+ * @workspace: a workspace index, or -1 to indicate the current one
*
* Create a #GAppLaunchContext set up with the correct timestamp, and
* targeted to activate on the current workspace.
@@ -1333,16 +1335,21 @@ shell_global_get_current_time (ShellGlobal *global)
* Return value: (transfer full): A new #GAppLaunchContext
*/
GAppLaunchContext *
-shell_global_create_app_launch_context (ShellGlobal *global)
+shell_global_create_app_launch_context (ShellGlobal *global,
+ int timestamp,
+ int workspace)
{
GdkAppLaunchContext *context;
context = gdk_display_get_app_launch_context (global->gdk_display);
- gdk_app_launch_context_set_timestamp (context, shell_global_get_current_time (global));
- // Make sure that the app is opened on the current workspace even if
- // the user switches before it starts
- gdk_app_launch_context_set_desktop (context, meta_screen_get_active_workspace_index (global->meta_screen));
+ if (timestamp == 0)
+ timestamp = shell_global_get_current_time (global);
+ gdk_app_launch_context_set_timestamp (context, timestamp);
+
+ if (workspace < 0)
+ workspace = meta_screen_get_active_workspace_index (global->meta_screen);
+ gdk_app_launch_context_set_desktop (context, workspace);
return (GAppLaunchContext *)context;
}
diff --git a/src/shell-global.h b/src/shell-global.h
index ec4a089..71bdf7d 100644
--- a/src/shell-global.h
+++ b/src/shell-global.h
@@ -85,7 +85,9 @@ void shell_global_run_at_leisure (ShellGlobal *global,
void shell_global_sync_pointer (ShellGlobal *global);
GAppLaunchContext *
- shell_global_create_app_launch_context (ShellGlobal *global);
+ shell_global_create_app_launch_context (ShellGlobal *global,
+ int timestamp,
+ int workspace);
void shell_global_play_theme_sound (ShellGlobal *global,
guint id,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]