From 687cc32cd01672656c9b6e13d0e967acd471900e Mon Sep 17 00:00:00 2001 From: Brett Nash Date: Tue, 7 Sep 2010 09:36:51 +0000 Subject: [PATCH] Handle providers a little better. SVN revision: 51938 --- legacy/elementary/src/lib/elm_cnp_helper.c | 26 +++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/legacy/elementary/src/lib/elm_cnp_helper.c b/legacy/elementary/src/lib/elm_cnp_helper.c index c9a02b657f..0bdc6e0b04 100644 --- a/legacy/elementary/src/lib/elm_cnp_helper.c +++ b/legacy/elementary/src/lib/elm_cnp_helper.c @@ -24,6 +24,8 @@ #endif +#define PROVIDER_SET "__elm_cnp_provider_set" + enum { CNP_ATOM_TARGETS = 0, CNP_ATOM_text_uri, @@ -275,6 +277,7 @@ static int _elm_cnp_init_count = 0; static Ecore_X_Atom clipboard_atom; Eina_List *pastedimages; +Eina_List *providedobjs; #endif /* Stringshared, so I can just compare pointers later */ @@ -887,17 +890,30 @@ pasteimage_alloc(const char *file) return pi; } +static bool +pasteimage_provider_set(Evas_Object *entry) +{ + void *v; + v = evas_object_data_get(entry, PROVIDER_SET); + if (!v) + { + evas_object_data_set(entry, PROVIDER_SET, pasteimage_provider_set); + elm_entry_item_provider_append(entry, image_provider, NULL); + } + return true; +} + + static bool pasteimage_append(struct pasteimage *pi, Evas_Object *entry) { char entrytag[100]; + char *v; if (!pi) return false; if (!entry) return false; - /* FIXME: Need to do this per widget */ - if (!pastedimages) - elm_entry_item_provider_append(entry, image_provider, NULL); + pasteimage_provider_set(entry); pastedimages = eina_list_append(pastedimages, pi); snprintf(entrytag, sizeof(entrytag),"",pi->tag); @@ -1152,8 +1168,8 @@ found: ddata.y = savedtypes.y; ddata.format = ELM_SEL_IMAGE; /* FIXME: Need to do this per widget */ - if (!pastedimages) - elm_entry_item_provider_append(dropable->obj, image_provider, NULL); + pasteimage_provider_set(dropable->obj); + pastedimages = eina_list_append(pastedimages, savedtypes.pi); snprintf(entrytag, sizeof(entrytag),"",savedtypes.pi->tag); ddata.data = entrytag;