From a71ae65f8bcb944e312c5f99b43da2e1cb115ae4 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 2 Jul 2009 05:04:33 -0400 Subject: [PATCH] Allow dragging a Workspace.WindowClone into favorites well It's a natural thing to do, though in the future we may want to split the WindowClone into js/misc/window.js or the like. --- js/ui/appDisplay.js | 6 ++++++ src/shell-app-monitor.c | 13 +++++++++++++ src/shell-app-monitor.h | 4 ++++ 3 files changed, 23 insertions(+) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 730d4dff1..a3e9d50cf 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -14,6 +14,7 @@ const Mainloop = imports.mainloop; const AppInfo = imports.misc.appInfo; const DND = imports.ui.dnd; const GenericDisplay = imports.ui.genericDisplay; +const Workspaces = imports.ui.workspaces; const ENTERED_MENU_COLOR = new Clutter.Color(); ENTERED_MENU_COLOR.from_pixel(0x00ff0022); @@ -574,6 +575,11 @@ WellArea.prototype = { id = source.appInfo.appId; } else if (source instanceof AppDisplayItem) { id = source.getId(); + } else if (source instanceof Workspaces.WindowClone) { + let appMonitor = Shell.AppMonitor.get_default(); + id = appMonitor.get_window_id(source.metaWindow); + if (id === null) + return false; } else { return false; } diff --git a/src/shell-app-monitor.c b/src/shell-app-monitor.c index 87b7f6c22..f09961023 100644 --- a/src/shell-app-monitor.c +++ b/src/shell-app-monitor.c @@ -544,6 +544,19 @@ shell_app_monitor_get_most_used_apps (ShellAppMonitor *monitor, return list; } +/** + * shell_app_monitor_get_window_id + * @monitor: An app monitor instance + * @metawin: A #MetaWindow + * + * Returns: (transfer full): Desktop file id associated with window + */ +char * +shell_app_monitor_get_window_id (ShellAppMonitor *monitor, MetaWindow *metawin) +{ + return g_hash_table_lookup (monitor->window_to_appid, metawin); +} + /** * shell_app_monitor_get_running_app_ids: * diff --git a/src/shell-app-monitor.h b/src/shell-app-monitor.h index 65bf8b090..073691b1d 100644 --- a/src/shell-app-monitor.h +++ b/src/shell-app-monitor.h @@ -5,6 +5,8 @@ #include #include +#include "window.h" + /* * This object provides monitoring of system application directories (.desktop files) * and activity-based statistics about applications usage @@ -35,6 +37,8 @@ GType shell_app_monitor_get_type (void) G_GNUC_CONST; ShellAppMonitor* shell_app_monitor_get_default(void); +char *shell_app_monitor_get_window_id (ShellAppMonitor *monitor, MetaWindow *metawin); + /* Get the most popular applications for a given activity */ GSList *shell_app_monitor_get_most_used_apps (ShellAppMonitor *monitor, int activity,