Enlightenment CVS committal Author : chaos Project : e17 Module : proto
Dir : e17/proto/entropy/src Modified Files: entropy_core.c entropy_gui_event_handlers.c Log Message: * Quieter operation * Check to make sure a layout shell is not already registered to receive an event, on register. Prevents double-ups * Saner operation of multi-file select in icon view =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/entropy_core.c,v retrieving revision 1.88 retrieving revision 1.89 diff -u -3 -r1.88 -r1.89 --- entropy_core.c 2 Sep 2006 10:00:16 -0000 1.88 +++ entropy_core.c 5 Sep 2006 06:27:39 -0000 1.89 @@ -932,6 +932,8 @@ /*Register a component to get events created by others in the same layout container*/ void entropy_core_component_event_register(entropy_gui_component_instance* comp, char* event) { entropy_gui_component_instance* layout; + entropy_gui_component_instance* iter; + int found = 0; if (!comp->layout_parent) { @@ -946,8 +948,6 @@ /*First we have to see if this layout is currently registered with the core..*/ Ecore_Hash* event_hash = ecore_hash_get(core_core->layout_gui_events, layout); - //printf(" * Registering a component...\n"); - if (!event_hash) { printf("Alert! - tried to register events for unreg layout component, %p\n", layout); } else { @@ -955,20 +955,57 @@ if (!event_list) { //printf("No events of this type(%p) yet registered for this layout, making a new list..\n", event); - event_list = ecore_list_new(); ecore_hash_set(event_hash, event, event_list); + } else { + ecore_list_goto_first(event_list); + while ((iter = ecore_list_next(event_list))) { + if (iter == comp) { + found = 1; + } + } + } + if (!found) { + /*Now add this component to this list*/ + ecore_list_append(event_list, comp); + //printf("Registered interest in '%s' for this gui component\n", event); } + } +} + +void entropy_core_component_event_deregister(entropy_gui_component_instance* comp, char* event) +{ + entropy_gui_component_instance* layout; + entropy_gui_component_instance* iter; - /*Now add this component to this list*/ - ecore_list_append(event_list, comp); + if (!comp->layout_parent) { + /*This must be a layout (or the programmer has messed up, + * use this as the layout*/ + layout = comp; + } else { + layout = comp->layout_parent; + } + + /*First we have to see if this layout is currently registered with the core..*/ + Ecore_Hash* event_hash = ecore_hash_get(core_core->layout_gui_events, layout); + + if (!event_hash) { + printf("Alert! - tried to de-register events for unreg layout component, %p\n", layout); + } else { + Ecore_List* event_list = ecore_hash_get(event_hash, event); + + if (event_list) { + ecore_list_goto_first(event_list); + while ((iter = ecore_list_current(event_list))) { + if (iter == comp) { + ecore_list_remove(event_list); + } else { + ecore_list_next(event_list); + } + } + } - - - //printf("Registered interest in '%s' for this gui component\n", event); - - } } =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/entropy_gui_event_handlers.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- entropy_gui_event_handlers.c 17 Jul 2006 13:41:46 -0000 1.13 +++ entropy_gui_event_handlers.c 5 Sep 2006 06:27:39 -0000 1.14 @@ -344,7 +344,6 @@ ev->data = request; /*HACK/FIXME - see what happens if we expire events - this should be on request*/ - printf("************* Calling interceptor..\n"); entropy_notify_event_expire_requestor_layout(requestor); res = entropy_plugin_filesystem_filelist_get(request); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs