Enlightenment CVS committal

Author  : englebass
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_shelf.c e_shelf.h 


Log Message:
Make hiding work on the desktop again.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -3 -r1.64 -r1.65
--- e_shelf.c   7 May 2007 18:38:49 -0000       1.64
+++ e_shelf.c   7 May 2007 19:16:51 -0000       1.65
@@ -17,8 +17,8 @@
 static void _e_shelf_menu_append(E_Shelf *es, E_Menu *mn);
 static void _e_shelf_cb_menu_items_append(void *data, E_Menu *mn);
 static void _e_shelf_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
-static void _e_shelf_cb_mouse_in(Ecore_Evas *ee);
-static void _e_shelf_cb_mouse_out(Ecore_Evas *ee);
+static void _e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
+static void _e_shelf_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 static int  _e_shelf_cb_id_sort(void *data1, void *data2);
 static int  _e_shelf_cb_hide_animator(void *data);
 static int  _e_shelf_cb_hide_animator_timer(void *data);
@@ -123,7 +123,6 @@
        e_popup_layer_set(es->popup, layer);
        es->ee = es->popup->ecore_evas;
        es->evas = es->popup->evas;
-       ecore_evas_data_set(es->ee, "e_shelf", es);
      }
    else
      {
@@ -139,10 +138,14 @@
    es->o_event = evas_object_rectangle_add(es->evas);
    evas_object_color_set(es->o_event, 0, 0, 0, 0);
    evas_object_resize(es->o_event, es->w, es->h);
-   
    evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_DOWN, 
_e_shelf_cb_mouse_down, es);
-   ecore_evas_callback_mouse_in_set(es->ee, _e_shelf_cb_mouse_in);
-   ecore_evas_callback_mouse_out_set(es->ee, _e_shelf_cb_mouse_out);
+
+   es->o_hide = evas_object_rectangle_add(es->evas);
+   evas_object_color_set(es->o_hide, 0, 0, 0, 0);
+   evas_object_resize(es->o_hide, es->w, es->h);
+   evas_object_event_callback_add(es->o_hide, EVAS_CALLBACK_MOUSE_IN, 
_e_shelf_cb_mouse_in, es);
+   evas_object_event_callback_add(es->o_hide, EVAS_CALLBACK_MOUSE_OUT, 
_e_shelf_cb_mouse_out, es);
+   evas_object_repeat_events_set(es->o_hide, 1);
  
    es->o_base = edje_object_add(es->evas);
    es->name = evas_stringshare_add(name);
@@ -153,14 +156,18 @@
                             "e/shelf/default/base");
    if (es->popup)
      {
+       evas_object_layer_set(es->o_hide, 1);
+       evas_object_show(es->o_hide);
        evas_object_show(es->o_event);
        evas_object_show(es->o_base);
        e_popup_edje_bg_object_set(es->popup, es->o_base);
      }
    else
      {
+       evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
+       evas_object_layer_set(es->o_hide, layer + 1);
        evas_object_layer_set(es->o_event, layer);
        evas_object_layer_set(es->o_base, layer);
      }
@@ -250,6 +257,7 @@
      e_popup_show(es->popup);
    else
      {
+       evas_object_show(es->o_hide);
        evas_object_show(es->o_event);
        evas_object_show(es->o_base);
      }
@@ -264,6 +272,7 @@
      e_popup_hide(es->popup);
    else
      {
+       evas_object_hide(es->o_hide);
        evas_object_hide(es->o_event);
        evas_object_hide(es->o_base);
      }
@@ -275,8 +284,6 @@
   E_OBJECT_CHECK(es);
   E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE);
 
-  if ((!es->popup) || (!es->cfg->autohide)) return;
-
   if ((show) && (es->hidden))
     {  
        es->hidden = 0;
@@ -296,7 +303,7 @@
              es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, 
es);
         }
     }
-  else if ((!show) && (!es->hidden) && (!es->gadcon->editing))  
+  else if ((!show) && (!es->hidden) && (!es->gadcon->editing) && 
(es->cfg->autohide))
     {
        es->hidden = 1; 
        edje_object_signal_emit(es->o_base, "e,state,hidden", "e");
@@ -329,6 +336,7 @@
      e_popup_move(es->popup, es->x, es->y);
    else
      {
+       evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
      }
@@ -343,6 +351,7 @@
    es->h = h;
    if (es->popup)
      e_popup_resize(es->popup, es->w, es->h);
+   evas_object_resize(es->o_hide, es->w, es->h);
    evas_object_resize(es->o_event, es->w, es->h);
    evas_object_resize(es->o_base, es->w, es->h);
 }
@@ -360,9 +369,11 @@
      e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h); 
    else
      {
+       evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
      }
+   evas_object_resize(es->o_hide, es->w, es->h);
    evas_object_resize(es->o_event, es->w, es->h);
    evas_object_resize(es->o_base, es->w, es->h);
 }
@@ -378,6 +389,7 @@
      e_popup_layer_set(es->popup, es->layer);
    else
      {
+       evas_object_layer_set(es->o_hide, es->layer + 1);
        evas_object_layer_set(es->o_event, es->layer);
        evas_object_layer_set(es->o_base, es->layer);
      }
@@ -596,6 +608,7 @@
 EAPI void 
 e_shelf_popup_set(E_Shelf *es, int popup) 
 {
+   /* FIXME: Needs to recreate the evas objects. */
    E_OBJECT_CHECK(es);
    E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE);
 
@@ -608,14 +621,17 @@
        e_popup_layer_set(es->popup, es->cfg->layer);
        es->ee = es->popup->ecore_evas;
        es->evas = es->popup->evas;
+       evas_object_show(es->o_hide);
        evas_object_show(es->o_event);
        evas_object_show(es->o_base);
        e_popup_edje_bg_object_set(es->popup, es->o_base);
      }
    else 
      {
+       evas_object_move(es->o_hide, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
+       evas_object_layer_set(es->o_hide, es->cfg->layer);
        evas_object_layer_set(es->o_event, es->cfg->layer);
        evas_object_layer_set(es->o_base, es->cfg->layer);
      }
@@ -647,6 +663,7 @@
    e_object_del(E_OBJECT(es->gadcon));
    evas_stringshare_del(es->name);
    evas_stringshare_del(es->style);
+   evas_object_del(es->o_hide);
    evas_object_del(es->o_event);
    evas_object_del(es->o_base);
    if (es->popup)
@@ -1148,23 +1165,21 @@
 }
 
 static void
-_e_shelf_cb_mouse_in(Ecore_Evas *ee)
+_e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void 
*event_info)
 {
    E_Shelf *es;
 
-   es = ecore_evas_data_get(ee, "e_shelf");
-   if (!es) return;
+   es = data;
    edje_object_signal_emit(es->o_base, "e,state,focused", "e");
    e_shelf_toggle(es, 1);
 }
 
 static void 
-_e_shelf_cb_mouse_out(Ecore_Evas *ee)
+_e_shelf_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void 
*event_info)
 {
    E_Shelf *es;
 
-   es = ecore_evas_data_get(ee, "e_shelf");
-   if (!es) return;
+   es = data;
    e_shelf_toggle(es, 0);
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_shelf.h   7 May 2007 16:37:54 -0000       1.22
+++ e_shelf.h   7 May 2007 19:16:51 -0000       1.23
@@ -21,6 +21,7 @@
    E_Zone              *zone; 
    Evas_Object         *o_base;
    Evas_Object         *o_event;
+   Evas_Object         *o_hide;
    Ecore_Evas          *ee;
    Evas                *evas;
    E_Gadcon            *gadcon;



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to