Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_embed.c ewl_embed.h ewl_table.c ewl_widget.c ewl_window.c 


Log Message:
- fix compiler warning from ewl_table
- the embed will now remember the curretnly active embed. When that changes
  it will send the deselect callback to the currently selected callback in
  the embed. this fixes the problem where the menu would only open once till
  you clicked on something else

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_embed.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ewl_embed.c 23 Oct 2005 23:02:09 -0000      1.15
+++ ewl_embed.c 28 Oct 2005 02:11:29 -0000      1.16
@@ -3,8 +3,9 @@
 #include "ewl_macros.h"
 #include "ewl_private.h"
 
-Ecore_List        *ewl_embed_list = NULL;
+Ecore_List *ewl_embed_list = NULL;
 static Evas_Smart *embedded_smart = NULL;
+static Ewl_Embed *ewl_embed_active_embed = NULL;
 
 static void ewl_embed_smart_add_cb(Evas_Object *obj);
 static void ewl_embed_smart_del_cb(Evas_Object *obj);
@@ -213,6 +214,63 @@
 }
 
 /**
+ * @param embed: The embed to set the active value on
+ * @param act: The active value to set
+ * @return Returns no value.
+ */
+void
+ewl_embed_active_set(Ewl_Embed *embed, unsigned int act)
+{
+       Ewl_Embed *e;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("embed", embed);
+       DCHECK_TYPE("embed", embed, "embed");
+
+       /* return if we're seting active and we're already the active embed */
+       if (act && (embed == ewl_embed_active_embed))
+               DRETURN(DLEVEL_STABLE);
+
+       if (!act)
+       {
+               /* if you said false and we aren't actually the active embed
+                * just exit */
+               if (embed != ewl_embed_active_embed)
+                       DRETURN(DLEVEL_STABLE);
+
+               e = embed;
+               ewl_embed_active_embed = NULL;
+       }
+       else
+       {
+               e = ewl_embed_active_embed;
+               ewl_embed_active_embed = embed;
+       }
+
+       if (e && e->last.clicked)
+       {
+               ewl_object_state_remove(EWL_OBJECT(e->last.clicked),
+                                               EWL_FLAG_STATE_SELECTED);
+               ewl_callback_call(e->last.clicked, EWL_CALLBACK_DESELECT);
+
+               e->last.clicked = NULL;
+       }
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * @return Returns the currently active embed
+ */
+Ewl_Embed *
+ewl_embed_active_embed_get(void)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       DRETURN_PTR(ewl_embed_active_embed, DLEVEL_STABLE);
+}
+
+/**
  * @param embed: the embed to retrieve maximum layer
  * @return Returns the layer used for obtaining evas events.
  * @brief Retrieve the layer being used for receiving evas events.
@@ -393,6 +451,8 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, "embed");
 
+       ewl_embed_active_set(embed, TRUE);
+
        widget = ewl_container_child_at_recursive_get(EWL_CONTAINER(embed),
                        x, y);
        if (!widget)
@@ -481,6 +541,8 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, "embed");
 
+       ewl_embed_active_set(embed, TRUE);
+
        ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
@@ -525,6 +587,8 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, "embed");
 
+       ewl_embed_active_set(embed, TRUE);
+
        ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
@@ -618,6 +682,8 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, "embed");
 
+       ewl_embed_active_set(embed, TRUE);
+
        ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
@@ -651,6 +717,8 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_TYPE("embed", embed, "embed");
 
+       ewl_embed_active_set(embed, TRUE);
+
        ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_embed.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ewl_embed.h 23 Oct 2005 23:02:09 -0000      1.5
+++ ewl_embed.h 28 Oct 2005 02:11:29 -0000      1.6
@@ -77,6 +77,9 @@
 void            ewl_embed_focus_set(Ewl_Embed *embed, int f);
 int             ewl_embed_focus_get(Ewl_Embed *embed);
 
+void           ewl_embed_active_set(Ewl_Embed *embed, unsigned int act);
+Ewl_Embed      *ewl_embed_active_embed_get(void);
+
 int             ewl_embed_max_layer_get(Ewl_Embed *embed);
 void            ewl_embed_max_layer_set(Ewl_Embed *embed, int layer);
 void            ewl_embed_key_down_feed(Ewl_Embed *embed, char *keyname,
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_table.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ewl_table.c 25 Oct 2005 05:34:20 -0000      1.8
+++ ewl_table.c 28 Oct 2005 02:11:29 -0000      1.9
@@ -387,8 +387,8 @@
        Ewl_Grid_Child *gc;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("t", t);
-       DCHECK_TYPE("t", t, "table");
+       DCHECK_PARAM_PTR_RET("t", t, strdup(""));
+       DCHECK_TYPE_RET("t", t, "table", strdup(""));
 
        children = EWL_CONTAINER(t->grid)->children;
        ecore_list_goto_first(children);
@@ -405,8 +405,6 @@
                                        EWL_CONTAINER(child)->children);
 
                        DRETURN_PTR(ewl_text_text_get(tw), DLEVEL_STABLE);
-
-                       break;
                }
        }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_widget.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- ewl_widget.c        22 Oct 2005 16:11:04 -0000      1.31
+++ ewl_widget.c        28 Oct 2005 02:11:29 -0000      1.32
@@ -614,7 +614,7 @@
  * the state parameter.
  */
 void
-ewl_widget_state_set(Ewl_Widget * w, char *state)
+ewl_widget_state_set(Ewl_Widget *w, char *state)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("w", w);
@@ -1348,6 +1348,7 @@
        DCHECK_TYPE("w", w, "widget");
 
        emb = ewl_embed_widget_find(w);
+       ewl_embed_active_set(emb, TRUE);
        ewl_embed_focused_widget_set(emb, w);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
@@ -1365,7 +1366,7 @@
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
-       emb = ewl_embed_widget_find(w);
+       emb = ewl_embed_active_embed_get();
        if (emb) w = ewl_embed_focused_widget_get(emb);
 
        DRETURN_PTR(w, DLEVEL_STABLE);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_window.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- ewl_window.c        27 Oct 2005 05:32:54 -0000      1.19
+++ ewl_window.c        28 Oct 2005 02:11:29 -0000      1.20
@@ -897,10 +897,9 @@
        DCHECK_TYPE("w", w, "widget");
 
        win = EWL_WINDOW(w);
-       if (win->flags & EWL_WINDOW_GRAB_KEYBOARD) {
+       if (win->flags & EWL_WINDOW_GRAB_KEYBOARD) 
                ecore_x_keyboard_grab((Ecore_X_Window)win->window);
-               printf("Grabbed keyboard\n");
-       }
+
        if (win->flags & EWL_WINDOW_GRAB_POINTER) {
                int grabval;
 
@@ -913,8 +912,6 @@
                        printf("GrabFrozen\n");
                else if (grabval == GrabInvalidTime)
                        printf("GrabInvalidTime\n");
-               else
-                       printf("Grabbed pointer\n");
        }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
@@ -936,14 +933,11 @@
        if (strstr(EWL_WINDOW(widget)->render, "x11")) {
                
ecore_x_window_hide((Ecore_X_Window)EWL_EMBED(win)->evas_window);
                ecore_x_window_hide((Ecore_X_Window)win->window);
-               if (win->flags & EWL_WINDOW_GRAB_KEYBOARD) {
+               if (win->flags & EWL_WINDOW_GRAB_KEYBOARD)
                        ecore_x_keyboard_ungrab();
-                       printf("Ungrabbed keyboard\n");
-               }
-               if (win->flags & EWL_WINDOW_GRAB_POINTER) {
+
+               if (win->flags & EWL_WINDOW_GRAB_POINTER)
                        ecore_x_pointer_ungrab();
-                       printf("Ungrabbed pointer\n");
-               }
        }
 #endif
 




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to