[gnome-shell] [ShellTrayManager] a few updates
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] [ShellTrayManager] a few updates
- Date: Thu, 19 Aug 2010 14:14:50 +0000 (UTC)
commit d9169d27f59a7a039b2d9f8e34aff21008b69d9a
Author: Dan Winship <danw gnome org>
Date: Tue Aug 10 11:12:36 2010 -0400
[ShellTrayManager] a few updates
Use the new na_tray_child_get_wm_class() method.
Add the trayicon title to the signal.
https://bugzilla.gnome.org/show_bug.cgi?id=627306
src/shell-tray-manager.c | 47 ++++++++++-----------------------------------
1 files changed, 11 insertions(+), 36 deletions(-)
---
diff --git a/src/shell-tray-manager.c b/src/shell-tray-manager.c
index b047395..f7c172a 100644
--- a/src/shell-tray-manager.c
+++ b/src/shell-tray-manager.c
@@ -160,8 +160,9 @@ shell_tray_manager_class_init (ShellTrayManagerClass *klass)
G_STRUCT_OFFSET (ShellTrayManagerClass, tray_icon_added),
NULL, NULL,
gi_cclosure_marshal_generic,
- G_TYPE_NONE, 2,
+ G_TYPE_NONE, 3,
CLUTTER_TYPE_ACTOR,
+ G_TYPE_STRING,
G_TYPE_STRING);
shell_tray_manager_signals[TRAY_ICON_REMOVED] =
g_signal_new ("tray-icon-removed",
@@ -274,44 +275,13 @@ shell_tray_manager_child_on_realize (GtkWidget *widget,
}
}
-static char *
-get_lowercase_wm_class_from_socket (ShellTrayManager *manager,
- GtkSocket *socket)
-{
- GdkWindow *window;
- MetaScreen *screen;
- MetaDisplay *display;
- XClassHint class_hint;
- gboolean success;
- char *result;
-
- window = gtk_socket_get_plug_window (socket);
- g_return_val_if_fail (window != NULL, NULL);
-
- screen = shell_global_get_screen (shell_global_get ());
- display = meta_screen_get_display (screen);
-
- gdk_error_trap_push ();
-
- success = XGetClassHint (meta_display_get_xdisplay (display), GDK_WINDOW_XWINDOW (window), &class_hint);
-
- gdk_error_trap_pop ();
-
- if (!success)
- return NULL;
-
- result = g_ascii_strdown (class_hint.res_class, -1);
- XFree (class_hint.res_name);
- XFree (class_hint.res_class);
- return result;
-}
-
static void
on_plug_added (GtkSocket *socket,
ShellTrayManager *manager)
{
ShellTrayManagerChild *child;
- char *wm_class;
+ char *wm_class, *lower_wm_class;
+ char *title;
child = g_hash_table_lookup (manager->priv->icons, socket);
/* Only emit this signal once; the point of waiting until we
@@ -323,13 +293,18 @@ on_plug_added (GtkSocket *socket,
return;
child->emitted_plugged = TRUE;
- wm_class = get_lowercase_wm_class_from_socket (manager, socket);
+ na_tray_child_get_wm_class (NA_TRAY_CHILD (socket), NULL, &wm_class);
if (!wm_class)
return;
+ title = na_tray_child_get_title (NA_TRAY_CHILD (socket));
+
+ lower_wm_class = g_ascii_strdown (wm_class, -1);
g_signal_emit (manager, shell_tray_manager_signals[TRAY_ICON_ADDED], 0,
- child->actor, wm_class);
+ child->actor, lower_wm_class, title);
+ g_free (lower_wm_class);
g_free (wm_class);
+ g_free (title);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]