all repos — openbox @ 3e9d050ffe36fa08c1e3e6f610c4d6587d2fdadd

openbox fork - make it a bit more like ryudo

save the sm_client_id just like saving other properties, dont query each time its needed
Dana Jansens danakj@orodu.net
commit

3e9d050ffe36fa08c1e3e6f610c4d6587d2fdadd

parent

9e746b64390277e06c4be0b6afd863841cebed3e

2 files changed, 12 insertions(+), 6 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -461,6 +461,7 @@ g_free(self->icon_title);

g_free(self->name); g_free(self->class); g_free(self->role); + g_free(self->sm_client_id); g_free(self); /* update the list hints */

@@ -677,6 +678,7 @@ client_setup_decor_and_functions(self);

client_update_title(self); client_update_class(self); + client_update_sm_client_id(self); client_update_strut(self); client_update_icons(self); }

@@ -2795,13 +2797,15 @@ }

return NULL; } -gchar* client_get_sm_client_id(ObClient *self) +void client_update_sm_client_id(ObClient *self) { - gchar *id = NULL; + g_free(self->sm_client_id); + self->sm_client_id = NULL; - if (!PROP_GETS(self->window, sm_client_id, locale, &id) && self->group) - PROP_GETS(self->group->leader, sm_client_id, locale, &id); - return id; + if (!PROP_GETS(self->window, sm_client_id, locale, &self->sm_client_id) && + self->group) + PROP_GETS(self->group->leader, sm_client_id, locale, + &self->sm_client_id); } /* finds the nearest edge in the given direction from the current client
M openbox/client.hopenbox/client.h

@@ -106,6 +106,8 @@ /*! The class of the window, can used for grouping */

gchar *class; /*! The specified role of the window, used for identification */ gchar *role; + /*! The session client id for the window. *This can be NULL!* */ + gchar *sm_client_id; /*! The type of window (what its function is) */ ObClientType type;

@@ -497,6 +499,6 @@ void client_set_layer(ObClient *self, int layer);

guint client_monitor(ObClient *self); -gchar* client_get_sm_client_id(ObClient *self); +void client_update_sm_client_id(ObClient *self); #endif