Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_border.h e_desk.c e_fm.c e_fm.h e_int_menus.c 


Log Message:


was hacking a bit with borders and desktops - just ignore that codee. it's
unused - at the moment.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.533
retrieving revision 1.534
diff -u -3 -r1.533 -r1.534
--- e_border.c  28 Aug 2006 02:31:32 -0000      1.533
+++ e_border.c  30 Aug 2006 13:37:35 -0000      1.534
@@ -790,11 +790,11 @@
 #endif
    if (bd->internal_ecore_evas)
      ecore_evas_managed_move(bd->internal_ecore_evas,
-                            bd->x + bd->client_inset.l,
-                            bd->y + bd->client_inset.t);
+                            bd->x + bd->fx.x + bd->client_inset.l,
+                            bd->y + bd->fx.y + bd->client_inset.t);
    ecore_x_icccm_move_resize_send(bd->client.win,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t,
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t,
                                  bd->client.w,
                                  bd->client.h);
    _e_border_move_update(bd);
@@ -807,6 +807,30 @@
 }
 
 EAPI void
+e_border_fx_offset(E_Border *bd, int x, int y)
+{
+   E_OBJECT_CHECK(bd);
+   E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
+
+   if ((x == bd->fx.x) && (y == bd->fx.y)) return;
+   bd->pre_res_change.valid = 0;
+   bd->fx.x = x;
+   bd->fx.y = y;
+   bd->changed = 1;
+   bd->changes.pos = 1;
+   if (bd->internal_ecore_evas)
+     ecore_evas_managed_move(bd->internal_ecore_evas,
+                            bd->x + bd->fx.x + bd->client_inset.l,
+                            bd->y + bd->fx.y + bd->client_inset.t);
+   ecore_x_icccm_move_resize_send(bd->client.win,
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t,
+                                 bd->client.w,
+                                 bd->client.h);
+   _e_border_move_update(bd);
+}
+
+EAPI void
 e_border_resize(E_Border *bd, int w, int h)
 {
    E_Event_Border_Resize *ev;
@@ -849,11 +873,11 @@
      }
    if (bd->internal_ecore_evas)
      ecore_evas_managed_move(bd->internal_ecore_evas,
-                            bd->x + bd->client_inset.l,
-                            bd->y + bd->client_inset.t);
+                            bd->x + bd->fx.x + bd->client_inset.l,
+                            bd->y + bd->fx.y + bd->client_inset.t);
    ecore_x_icccm_move_resize_send(bd->client.win,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t,
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t,
                                  bd->client.w,
                                  bd->client.h);
    ev = calloc(1, sizeof(E_Event_Border_Resize));
@@ -914,11 +938,11 @@
      }
    if (bd->internal_ecore_evas)
      ecore_evas_managed_move(bd->internal_ecore_evas,
-                            bd->x + bd->client_inset.l,
-                            bd->y + bd->client_inset.t);
+                            bd->x + bd->fx.x + bd->client_inset.l,
+                            bd->y + bd->fx.y + bd->client_inset.t);
    ecore_x_icccm_move_resize_send(bd->client.win,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t,
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t,
                                  bd->client.w,
                                  bd->client.h);
    _e_border_resize_update(bd);
@@ -2439,8 +2463,8 @@
    if (ev)
      {
        e_int_border_menu_show(bd,
-                              bd->x + ev->x - bd->zone->container->x,
-                              bd->y + ev->y - bd->zone->container->y, key,
+                              bd->x + bd->fx.x + ev->x - 
bd->zone->container->x,
+                              bd->y + bd->fx.y + ev->y - 
bd->zone->container->y, key,
                               ev->time);
      }
    else
@@ -2749,11 +2773,11 @@
      }
    if (bd->internal_ecore_evas)
      ecore_evas_managed_move(bd->internal_ecore_evas,
-                            bd->x + bd->client_inset.l,
-                            bd->y + bd->client_inset.t);
+                            bd->x + bd->fx.x + bd->client_inset.l,
+                            bd->y + bd->fx.y + bd->client_inset.t);
    ecore_x_icccm_move_resize_send(bd->client.win,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t,
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t,
                                  bd->client.w,
                                  bd->client.h);
 }
@@ -4372,15 +4396,15 @@
          {
             bd->mouse.last_down[ev->button - 1].mx = ev->root.x;
             bd->mouse.last_down[ev->button - 1].my = ev->root.y;
-            bd->mouse.last_down[ev->button - 1].x = bd->x;
-            bd->mouse.last_down[ev->button - 1].y = bd->y;
+            bd->mouse.last_down[ev->button - 1].x = bd->x + bd->fx.x;
+            bd->mouse.last_down[ev->button - 1].y = bd->y + bd->fx.y;
             bd->mouse.last_down[ev->button - 1].w = bd->w;
             bd->mouse.last_down[ev->button - 1].h = bd->h;
          }
        else
          {
-            bd->moveinfo.down.x = bd->x;
-            bd->moveinfo.down.y = bd->y;
+            bd->moveinfo.down.x = bd->x + bd->fx.x;
+            bd->moveinfo.down.y = bd->y + bd->fx.y;
             bd->moveinfo.down.w = bd->w;
             bd->moveinfo.down.h = bd->h;
          }
@@ -4415,15 +4439,15 @@
      {
        bd->mouse.last_down[ev->button - 1].mx = ev->root.x;
        bd->mouse.last_down[ev->button - 1].my = ev->root.y;
-       bd->mouse.last_down[ev->button - 1].x = bd->x;
-       bd->mouse.last_down[ev->button - 1].y = bd->y;
+       bd->mouse.last_down[ev->button - 1].x = bd->x + bd->fx.x;
+       bd->mouse.last_down[ev->button - 1].y = bd->y + bd->fx.y;
        bd->mouse.last_down[ev->button - 1].w = bd->w;
        bd->mouse.last_down[ev->button - 1].h = bd->h;
      }
    else
      {
-       bd->moveinfo.down.x = bd->x;
-       bd->moveinfo.down.y = bd->y;
+       bd->moveinfo.down.x = bd->x + bd->fx.x;
+       bd->moveinfo.down.y = bd->y + bd->fx.y;
        bd->moveinfo.down.w = bd->w;
        bd->moveinfo.down.h = bd->h;
      }
@@ -4464,8 +4488,8 @@
          {
             bd->mouse.last_up[ev->button - 1].mx = ev->root.x;
             bd->mouse.last_up[ev->button - 1].my = ev->root.y;
-            bd->mouse.last_up[ev->button - 1].x = bd->x;
-            bd->mouse.last_up[ev->button - 1].y = bd->y;
+            bd->mouse.last_up[ev->button - 1].x = bd->x + bd->fx.x;
+            bd->mouse.last_up[ev->button - 1].y = bd->y + bd->fx.y;
          }
        bd->mouse.current.mx = ev->root.x;
        bd->mouse.current.my = ev->root.y;
@@ -4491,8 +4515,8 @@
      {
        bd->mouse.last_up[ev->button - 1].mx = ev->root.x;
        bd->mouse.last_up[ev->button - 1].my = ev->root.y;
-       bd->mouse.last_up[ev->button - 1].x = bd->x;
-       bd->mouse.last_up[ev->button - 1].y = bd->y;
+       bd->mouse.last_up[ev->button - 1].x = bd->x + bd->fx.x;
+       bd->mouse.last_up[ev->button - 1].y = bd->y + bd->fx.y;
      }
    bd->mouse.current.mx = ev->root.x;
    bd->mouse.current.my = ev->root.y;
@@ -4603,7 +4627,9 @@
 
                            evas_object_geometry_get(bd->icon_object,
                                                     &x, &y, &w, &h);
-                           drag = e_drag_new(bd->zone->container, bd->x + x, 
bd->y + y,
+                           drag = e_drag_new(bd->zone->container,
+                                             bd->x + bd->fx.x + x, 
+                                             bd->y + bd->fx.y + y,
                                              drag_types, 1, bd, -1, NULL);
                            edje_object_file_get(bd->icon_object, &file, &part);
                            if ((file) && (part))
@@ -5669,11 +5695,11 @@
 
        if (bd->internal_ecore_evas)
          ecore_evas_managed_move(bd->internal_ecore_evas,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t);
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t);
        ecore_x_icccm_move_resize_send(bd->client.win,
-                                      bd->x + bd->client_inset.l,
-                                      bd->y + bd->client_inset.t,
+                                      bd->x + bd->fx.x + bd->client_inset.l,
+                                      bd->y + bd->fx.y + bd->client_inset.t,
                                       bd->client.w,
                                       bd->client.h);
        /* if the explicit geometry request asks for the app to be
@@ -5757,13 +5783,16 @@
      {
        if (bd->internal_ecore_evas)
          ecore_evas_managed_move(bd->internal_ecore_evas,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t);
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t);
 //     printf("##- BORDER NEEDS POS/SIZE CHANGE 0x%x\n", bd->client.win);
        if ((bd->shaded) && (!bd->shading))
          {
             evas_obscured_clear(bd->bg_evas);
-            ecore_x_window_move_resize(bd->win, bd->x, bd->y, bd->w, bd->h);
+            ecore_x_window_move_resize(bd->win, 
+                                       bd->x + bd->fx.x, 
+                                       bd->y + bd->fx.y,
+                                       bd->w, bd->h);
             ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h);
             if (bd->internal_ecore_evas)
               ecore_evas_move_resize(bd->internal_ecore_evas, 0, 0, 
bd->client.w, bd->client.h);
@@ -5772,7 +5801,9 @@
             ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h);
             evas_object_resize(bd->bg_object, bd->w, bd->h);
             e_container_shape_resize(bd->shape, bd->w, bd->h);
-            e_container_shape_move(bd->shape, bd->x, bd->y);
+            e_container_shape_move(bd->shape,
+                                   bd->x + bd->fx.x,
+                                   bd->y + bd->fx.y);
          }
        else
          {
@@ -5781,7 +5812,10 @@
                                         bd->client_inset.l, bd->client_inset.t,
                                         bd->w - (bd->client_inset.l + 
bd->client_inset.r),
                                         bd->h - (bd->client_inset.t + 
bd->client_inset.b));
-            ecore_x_window_move_resize(bd->win, bd->x, bd->y, bd->w, bd->h);
+            ecore_x_window_move_resize(bd->win,
+                                       bd->x + bd->fx.x,
+                                       bd->y + bd->fx.y,
+                                       bd->w, bd->h);
             ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h);
             ecore_x_window_move_resize(bd->client.shell_win,
                                        bd->client_inset.l, bd->client_inset.t,
@@ -5837,7 +5871,9 @@
             ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h);
             evas_object_resize(bd->bg_object, bd->w, bd->h);
             e_container_shape_resize(bd->shape, bd->w, bd->h);
-            e_container_shape_move(bd->shape, bd->x, bd->y);
+            e_container_shape_move(bd->shape, 
+                                   bd->x + bd->fx.x,
+                                   bd->y + bd->fx.y);
          }
        bd->changes.pos = 0;
        bd->changes.size = 0;
@@ -5848,10 +5884,10 @@
      {
        if (bd->internal_ecore_evas)
          ecore_evas_managed_move(bd->internal_ecore_evas,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t);
-       ecore_x_window_move(bd->win, bd->x, bd->y);
-       e_container_shape_move(bd->shape, bd->x, bd->y);
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.x + bd->client_inset.t);
+       ecore_x_window_move(bd->win, bd->x + bd->fx.x, bd->y + bd->fx.y);
+       e_container_shape_move(bd->shape, bd->x + bd->fx.x, bd->y + bd->fx.y);
        bd->changes.pos = 0;
        rem_change = 1;
        send_event = 0;
@@ -5860,8 +5896,8 @@
      {
        if (bd->internal_ecore_evas)
          ecore_evas_managed_move(bd->internal_ecore_evas,
-                                 bd->x + bd->client_inset.l,
-                                 bd->y + bd->client_inset.t);
+                                 bd->x + bd->fx.x + bd->client_inset.l,
+                                 bd->y + bd->fx.y + bd->client_inset.t);
 //     printf("##- BORDER NEEDS SIZE CHANGE 0x%x\n", bd->client.win);
        if (bd->shaded && !bd->shading)
          {
@@ -6113,11 +6149,11 @@
                       bd->changes.pos = 1;
                       if (bd->internal_ecore_evas)
                         ecore_evas_managed_move(bd->internal_ecore_evas,
-                                                bd->x + bd->client_inset.l,
-                                                bd->y + bd->client_inset.t);
+                                                bd->x + bd->fx.x + 
bd->client_inset.l,
+                                                bd->y + bd->fx.y + 
bd->client_inset.t);
                       ecore_x_icccm_move_resize_send(bd->client.win,
-                                                     bd->x + 
bd->client_inset.l,
-                                                     bd->y + 
bd->client_inset.t,
+                                                     bd->x + bd->fx.x + 
bd->client_inset.l,
+                                                     bd->y + bd->fx.y + 
bd->client_inset.t,
                                                      bd->client.w, 
bd->client.h);
                    }
               }
@@ -6126,8 +6162,8 @@
        ecore_x_window_show(bd->win);
        if (bd->cur_mouse_action)
          {
-            bd->moveinfo.down.x = bd->x;
-            bd->moveinfo.down.y = bd->y;
+            bd->moveinfo.down.x = bd->x + bd->fx.x;
+            bd->moveinfo.down.y = bd->y + bd->fx.y;
             bd->moveinfo.down.w = bd->w;
             bd->moveinfo.down.h = bd->h;
             bd->mouse.current.mx = x;
@@ -6740,7 +6776,7 @@
        bd->client.netwm.sync.send_time = ecore_time_get();
      }
    if (e_config->resize_info_follows)
-     e_move_resize_object_coords_set(bd->x, bd->y, bd->w, bd->h); 
+     e_move_resize_object_coords_set(bd->x + bd->fx.x, bd->y + bd->fx.y, 
bd->w, bd->h); 
    else
      e_move_resize_object_coords_set(bd->zone->x, bd->zone->y, bd->zone->w, 
bd->zone->h);
    e_resize_begin(bd->zone, w, h);
@@ -6799,7 +6835,7 @@
          h = bd->client.h;
      }
    if (e_config->resize_info_follows)
-     e_move_resize_object_coords_set(bd->x, bd->y, bd->w, bd->h);
+     e_move_resize_object_coords_set(bd->x + bd->fx.x, bd->y + bd->fx.y, 
bd->w, bd->h);
    else
      e_move_resize_object_coords_set(bd->zone->x, bd->zone->y, bd->zone->w, 
bd->zone->h);
    e_resize_update(w, h);
@@ -6829,7 +6865,7 @@
      }
 #endif
    if (e_config->move_info_follows)
-     e_move_resize_object_coords_set(bd->x, bd->y, bd->w, bd->h); 
+     e_move_resize_object_coords_set(bd->x + bd->fx.x, bd->y + bd->fx.y, 
bd->w, bd->h); 
    else
      e_move_resize_object_coords_set(bd->zone->x, bd->zone->y, bd->zone->w, 
bd->zone->h);
    e_move_begin(bd->zone, bd->x, bd->y);
@@ -6859,7 +6895,7 @@
 _e_border_move_update(E_Border *bd)
 {
    if (e_config->move_info_follows)
-     e_move_resize_object_coords_set(bd->x, bd->y, bd->w, bd->h); 
+     e_move_resize_object_coords_set(bd->x + bd->fx.x, bd->y + bd->fx.y, 
bd->w, bd->h); 
    else
      e_move_resize_object_coords_set(bd->zone->x, bd->zone->y, bd->zone->w, 
bd->zone->h);
    e_move_update(bd->x, bd->y);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -3 -r1.148 -r1.149
--- e_border.h  20 Aug 2006 04:48:27 -0000      1.148
+++ e_border.h  30 Aug 2006 13:37:35 -0000      1.149
@@ -124,6 +124,10 @@
    Evas_List      *handlers;
 
    struct {
+      int          x, y;
+   } fx;
+   
+   struct {
       int          l, r, t, b;
    } client_inset;
 
@@ -558,6 +562,7 @@
 EAPI void      e_border_show(E_Border *bd);
 EAPI void      e_border_hide(E_Border *bd, int manage);
 EAPI void      e_border_move(E_Border *bd, int x, int y);
+EAPI void      e_border_fx_offset(E_Border *bd, int x, int y);
 EAPI void      e_border_resize(E_Border *bd, int w, int h);
 EAPI void      e_border_move_resize(E_Border *bd, int x, int y, int w, int h);
 EAPI void      e_border_layer_set(E_Border *bd, int layer);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- e_desk.c    22 Jul 2006 22:25:04 -0000      1.61
+++ e_desk.c    30 Aug 2006 13:37:35 -0000      1.62
@@ -183,6 +183,113 @@
      }
 }
 
+static void _e_desk_show_begin(E_Desk *desk);
+static void _e_desk_show_end(E_Desk *desk);
+static int _e_desk_show_animator(void *data);
+
+static void
+_e_desk_show_begin(E_Desk *desk)
+{
+   E_Border_List     *bl;
+   E_Border          *bd;
+
+   bl = e_container_border_list_first(desk->zone->container);
+   while ((bd = e_container_border_list_next(bl)))
+     {
+       if ((bd->desk->zone == desk->zone) && (!bd->iconic))
+         {
+            if ((bd->desk == desk) && (!bd->sticky))
+              {
+                 e_border_fx_offset(bd, -desk->zone->w, 0);
+                 e_border_show(bd);
+                 if (bd->want_fullscreen)
+                   {
+                      e_border_fullscreen(bd, e_config->fullscreen_policy);
+                      bd->want_fullscreen = 0;
+                   }
+              }
+            else if (bd->moving)
+              e_border_desk_set(bd, desk);
+         }
+     }
+   e_container_border_list_free(bl);
+   ecore_animator_add(_e_desk_show_animator, desk);
+}
+
+static void
+_e_desk_show_end(E_Desk *desk)
+{
+   E_Border_List     *bl;
+   E_Border          *bd;
+
+   bl = e_container_border_list_first(desk->zone->container);
+   while ((bd = e_container_border_list_next(bl)))
+     {
+       if ((bd->desk->zone == desk->zone) && (!bd->iconic))
+         {
+            if ((bd->desk == desk) && (!bd->sticky))
+              {
+                 e_border_fx_offset(bd, 0, 0);
+              }
+            else if (bd->moving)
+              {
+                 e_border_fx_offset(bd, 0, 0);
+                 e_border_desk_set(bd, desk);
+              }
+         }
+     }
+   e_container_border_list_free(bl);
+}
+
+static int
+_e_desk_show_animator(void *data)
+{
+   E_Desk            *desk;
+   E_Border_List     *bl;
+   E_Border          *bd;
+   int done = 1;
+
+   desk = data;
+   bl = e_container_border_list_first(desk->zone->container);
+   while ((bd = e_container_border_list_next(bl)))
+     {
+       if ((bd->desk->zone == desk->zone) && (!bd->iconic))
+         {
+            if (bd->moving)
+              {
+              }
+            else if ((bd->desk == desk) || (!bd->sticky))
+              {
+                  e_border_fx_offset(bd, bd->fx.x + 20, 0);
+                 if (bd->fx.x < 0)
+                   done = 0;
+              }
+         }
+     }
+   e_container_border_list_free(bl);
+   if (done)
+     {
+       _e_desk_show_end(desk);
+       return 0;
+     }
+   return 1;
+}
+
+static void
+_e_desk_hide_begin(E_Desk *desk)
+{
+}
+
+static void
+_e_desk_hide_end(E_Desk *desk)
+{
+}
+
+static int
+_e_desk_hide_animator(void *data)
+{
+}
+
 EAPI void
 e_desk_show(E_Desk *desk)
 {
@@ -196,6 +303,8 @@
    E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
    if (desk->visible) return;
 
+//   _e_desk_show_begin(desk);
+   
    for (x = 0; x < desk->zone->desk_x_count; x++)
      {
        for (y = 0; y < desk->zone->desk_y_count; y++)
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -3 -r1.43 -r1.44
--- e_fm.c      30 Aug 2006 12:24:13 -0000      1.43
+++ e_fm.c      30 Aug 2006 13:37:35 -0000      1.44
@@ -36,6 +36,12 @@
       Evas_List     *list;
       int            member_max;
    } regions;
+   struct {
+      struct {
+        void (*func) (void *data, Evas_Object *obj, E_Menu *m);
+        void *data;
+      } start, end;
+   } icon_menu;
    
    Evas_List        *icons;
    Evas_List        *queue;
@@ -479,6 +485,33 @@
 }
 
 EAPI void
+e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void 
*data, Evas_Object *obj, E_Menu *m), void *data)
+{
+   E_Fm2_Smart_Data *sd;
+   
+   sd = evas_object_smart_data_get(obj);
+   if (!sd) return; // safety
+   if (!evas_object_type_get(obj)) return; // safety
+   if (strcmp(evas_object_type_get(obj), "e_fm")) return; // safety
+   sd->icon_menu.start.func = func;
+   sd->icon_menu.start.data = data;
+}
+
+EAPI void
+e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, void (*func) (void 
*data, Evas_Object *obj, E_Menu *m), void *data)
+{
+   E_Fm2_Smart_Data *sd;
+   
+   sd = evas_object_smart_data_get(obj);
+   if (!sd) return; // safety
+   if (!evas_object_type_get(obj)) return; // safety
+   if (strcmp(evas_object_type_get(obj), "e_fm")) return; // safety
+   sd->icon_menu.end.func = func;
+   sd->icon_menu.end.data = data;
+}
+
+
+EAPI void
 e_fm2_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
 {
    E_Fm2_Smart_Data *sd;
@@ -2465,14 +2498,21 @@
    E_Manager *man;
    E_Container *con;
    E_Zone *zone;
-   int x, y;
+   int x, y, can_w;
    char buf[4096];
    
    sd = ic->sd;
 
    mn = e_menu_new();
    e_menu_category_set(mn, "e/fileman/action");
-   
+
+   if (sd->icon_menu.start.func)
+     {
+       sd->icon_menu.start.func(sd->icon_menu.start.data, sd->obj, mn);
+       mi = e_menu_item_new(mn);
+       e_menu_item_separator_set(mi, 1);
+     }
+
    mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Refresh View"));
    e_menu_item_icon_edje_set(mi,
@@ -2497,7 +2537,32 @@
      }
    
    snprintf(buf, sizeof(buf), "%s/%s", sd->realpath, ic->info.file);
-   if (ecore_file_can_write(buf))
+   can_w = 0;
+   if (ic->info.link)
+     {
+       struct stat st;
+       
+       if (lstat(buf, &st) == 0)
+         {
+            if (st.st_uid == getuid())
+              {
+                 if (st.st_mode & S_IWUSR) can_w = 1;
+              }
+            else if (st.st_gid == getgid())
+              {
+                 if (st.st_mode & S_IWGRP) can_w = 1;
+              }
+            else
+              {
+                 if (st.st_mode & S_IWOTH) can_w = 1;
+              }
+         }
+     }
+   else
+     {
+       if (ecore_file_can_write(buf)) can_w = 1;
+     }
+   if (can_w)
      {
        mi = e_menu_item_new(mn);
        e_menu_item_separator_set(mi, 1);
@@ -2517,6 +2582,13 @@
                                                        
"e/fileman/button/rename"),
                                  "e/fileman/button/rename");
        e_menu_item_callback_set(mi, _e_fm2_file_rename, ic);
+     }
+
+   if (sd->icon_menu.end.func)
+     {
+       sd->icon_menu.end.func(sd->icon_menu.end.data, sd->obj, mn);
+       mi = e_menu_item_new(mn);
+       e_menu_item_separator_set(mi, 1);
      }
    
    man = e_manager_current_get();
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_fm.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_fm.h      26 Aug 2006 11:06:05 -0000      1.14
+++ e_fm.h      30 Aug 2006 13:37:35 -0000      1.15
@@ -111,7 +111,9 @@
 EAPI Evas_List            *e_fm2_all_list_get(Evas_Object *obj);
 EAPI void                  e_fm2_select_set(Evas_Object *obj, const char 
*file, int select);
 EAPI void                  e_fm2_file_show(Evas_Object *obj, const char *file);
-    
+EAPI void                  
e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, void (*func) (void 
*data, Evas_Object *obj, E_Menu *m), void *data);
+EAPI void                  e_fm2_icon_menu_end_extend_callback_set(Evas_Object 
*obj, void (*func) (void *data, Evas_Object *obj, E_Menu *m), void *data);
+
 EAPI void                  e_fm2_pan_set(Evas_Object *obj, Evas_Coord x, 
Evas_Coord y);
 EAPI void                  e_fm2_pan_get(Evas_Object *obj, Evas_Coord *x, 
Evas_Coord *y);
 EAPI void                  e_fm2_pan_max_get(Evas_Object *obj, Evas_Coord *x, 
Evas_Coord *y);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -3 -r1.153 -r1.154
--- e_int_menus.c       28 Aug 2006 11:22:27 -0000      1.153
+++ e_int_menus.c       30 Aug 2006 13:37:35 -0000      1.154
@@ -75,7 +75,7 @@
    e_object_data_set(E_OBJECT(m), dat);   
    e_object_del_attach_func_set(E_OBJECT(m), _e_int_menus_main_del_hook);
    
-   e_menu_category_set(m,"main");
+   e_menu_category_set(m, "main");
    subm = e_int_menus_favorite_apps_new();
    dat->apps = subm;
    mi = e_menu_item_new(m);



-------------------------------------------------------------------------
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