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

Reply via email to