From d8edcec5f1a419b70e8ecbebbcea0c6853ee5608 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 26 Nov 2012 09:36:11 +0000 Subject: [PATCH] add function for cloning an e_order SVN revision: 79683 --- src/bin/e_order.c | 25 +++++++++++++++++++++++++ src/bin/e_order.h | 1 + 2 files changed, 26 insertions(+) diff --git a/src/bin/e_order.c b/src/bin/e_order.c index 07c7e63be..9f54d3a7e 100644 --- a/src/bin/e_order.c +++ b/src/bin/e_order.c @@ -75,6 +75,31 @@ e_order_new(const char *path) return eo; } +EAPI E_Order * +e_order_clone(const E_Order *eo) +{ + E_Order *eoc; + Eina_List *l; + Efreet_Desktop *desktop; + + E_OBJECT_CHECK_RETURN(eo, NULL); + E_OBJECT_TYPE_CHECK_RETURN(eo, E_ORDER_TYPE, NULL); + + eoc = E_OBJECT_ALLOC(E_Order, E_ORDER_TYPE, _e_order_free); + if (!eoc) return NULL; + + eoc->path = eina_stringshare_ref(eo->path); + EINA_LIST_FOREACH(eo->desktops, l, desktop) + { + efreet_desktop_ref(desktop); + eoc->desktops = eina_list_append(eoc->desktops, desktop); + } + eoc->monitor = ecore_file_monitor_add(eoc->path, _e_order_cb_monitor, eoc); + + orders = eina_list_append(orders, eoc); + return eoc; +} + EAPI void e_order_update_callback_set(E_Order *eo, void (*cb)(void *data, E_Order *eo), void *data) { diff --git a/src/bin/e_order.h b/src/bin/e_order.h index 88edfedb8..566e4a05f 100644 --- a/src/bin/e_order.h +++ b/src/bin/e_order.h @@ -35,6 +35,7 @@ EAPI void e_order_prepend_relative(E_Order *eo, Efreet_Desktop *desktop, Efreet_ EAPI void e_order_files_append(E_Order *eo, Eina_List *files); EAPI void e_order_files_prepend_relative(E_Order *eo, Eina_List *files, Efreet_Desktop *before); EAPI void e_order_clear(E_Order *eo); +EAPI E_Order *e_order_clone(const E_Order *eo); #endif #endif