From 52cdea653c9b3a7055bca40e4019f599d9291bb6 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 29 Jul 2011 15:59:22 -0400 Subject: [PATCH] Allow client destroy notify functions to be removed based on the data associated with them. --- openbox/client.c | 15 +++++++++++++++ openbox/client.h | 1 + 2 files changed, 16 insertions(+) diff --git a/openbox/client.c b/openbox/client.c index 8634707c..07db26bf 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -167,6 +167,21 @@ void client_remove_destroy_notify(ObClientCallback func) } } +void client_remove_destroy_notify_data(ObClientCallback func, gpointer data) +{ + GSList *it; + + for (it = client_destroy_notifies; it; it = g_slist_next(it)) { + ClientCallback *d = it->data; + if (d->func == func && d->data == data) { + g_slice_free(ClientCallback, d); + client_destroy_notifies = + g_slist_delete_link(client_destroy_notifies, it); + break; + } + } +} + void client_set_list(void) { Window *windows, *win_it; diff --git a/openbox/client.h b/openbox/client.h index d5b344ff..18c88ec1 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -326,6 +326,7 @@ typedef void (*ObClientCallback)(ObClient *client, gpointer data); /*! Get notified when the client is unmanaged */ void client_add_destroy_notify(ObClientCallback func, gpointer data); void client_remove_destroy_notify(ObClientCallback func); +void client_remove_destroy_notify_data(ObClientCallback func, gpointer data); /*! Manages a given window @param prompt This specifies an ObPrompt which is being managed. It is -- 2.45.2