Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_actions.c e_actions.h e_bindings.c e_border.c e_border.h 


Log Message:


signal bindings.!!!! this means you can completely rebind every event and
action on a window border theme/design to do what you want. the theme doesnt
determine this anymore. as with wheel bindings it still isnt exported to
config fiels and ipc yet, but the functionality is done.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_actions.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- e_actions.c 22 Sep 2005 12:47:45 -0000      1.26
+++ e_actions.c 22 Sep 2005 16:36:59 -0000      1.27
@@ -25,6 +25,13 @@
    }
 #define ACT_FN_GO_WHEEL(act) \
    static void _e_actions_act_##act##_go_wheel(E_Object *obj, char *params, 
Ecore_X_Event_Mouse_Wheel *ev)
+#define ACT_GO_SIGNAL(name) \
+   { \
+      act = e_action_add(#name); \
+      if (act) act->func.go_signal = _e_actions_act_##name##_go_signal; \
+   }
+#define ACT_FN_GO_SIGNAL(act) \
+   static void _e_actions_act_##act##_go_signal(E_Object *obj, char *params, 
char *sig, char *src)
 #define ACT_GO_KEY(name) \
    { \
       act = e_action_add(#name); \
@@ -76,6 +83,26 @@
    if (!((E_Border *)obj)->lock_user_location)
      e_border_act_move_begin((E_Border *)obj, ev);
 }
+ACT_FN_GO_SIGNAL(window_move)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE) return;
+   if (!((E_Border *)obj)->lock_user_location)
+     {
+       if ((params) && (!strcmp(params, "end")))
+         {
+            e_border_signal_move_end((E_Border *)obj, sig, src);
+         }
+       else
+         {
+            if (((E_Border *)obj)->moving)
+              e_border_signal_move_end((E_Border *)obj, sig, src);
+            else
+              e_border_signal_move_begin((E_Border *)obj, sig, src);
+         }
+     }
+}
 ACT_FN_END(window_move)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
@@ -108,6 +135,25 @@
    if (!((E_Border *)obj)->lock_user_size)
      e_border_act_resize_begin((E_Border *)obj, ev);
 }
+ACT_FN_GO_SIGNAL(window_resize)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE) return;
+   if (!((E_Border *)obj)->lock_user_size)
+     {
+       if ((params) && (!strcmp(params, "end")))
+         e_border_signal_resize_end((E_Border *)obj, params, sig, src);
+       else
+         {
+            if (!params) params = "";
+            if (e_border_resizing_get((E_Border *)obj))
+              e_border_signal_resize_end((E_Border *)obj, params, sig, src);
+            else
+              e_border_signal_resize_begin((E_Border *)obj, params, sig, src);
+         }
+     }
+}
 ACT_FN_END(window_resize)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
@@ -235,6 +281,31 @@
 }
 
 /***************************************************************************/
+ACT_FN_GO(window_sticky)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+   if (!((E_Border *)obj)->lock_user_sticky)
+     {
+       E_Border *bd;
+       
+       bd = (E_Border *)obj;
+       if (params)
+         {
+            if (atoi(params) == 1)
+              e_border_stick(bd);      
+            else if (atoi(params) == 1)
+              e_border_unstick(bd);
+         }
+     }
+}
+
+/***************************************************************************/
 ACT_FN_GO(window_iconic_toggle)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
@@ -255,6 +326,31 @@
 }
 
 /***************************************************************************/
+ACT_FN_GO(window_iconic)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+   if (!((E_Border *)obj)->lock_user_iconify)
+     {
+       E_Border *bd;
+       
+       bd = (E_Border *)obj;
+       if (params)
+         {
+            if (atoi(params) == 1)
+              e_border_iconify(bd);
+            else if (atoi(params) == 0)
+              e_border_uniconify(bd);
+         }
+     }
+}
+
+/***************************************************************************/
 ACT_FN_GO(window_maximized_toggle)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
@@ -270,7 +366,55 @@
        
        bd = (E_Border *)obj;
        if (bd->maximized) e_border_unmaximize(bd);
-       else e_border_maximize(bd, e_config->maximize_policy);
+       else
+         {
+            if (!params)
+              e_border_maximize(bd, e_config->maximize_policy);
+            else
+              {
+                 if (!strcmp(params, "fullscreen")) e_border_maximize(bd, 
E_MAXIMIZE_FULLSCREEN);
+                 else if (!strcmp(params, "smart")) e_border_maximize(bd, 
E_MAXIMIZE_SMART);
+                 else if (!strcmp(params, "expand")) e_border_maximize(bd, 
E_MAXIMIZE_EXPAND);
+                 else if (!strcmp(params, "fill")) e_border_maximize(bd, 
E_MAXIMIZE_FILL);
+                 else e_border_maximize(bd, e_config->maximize_policy);
+              }
+         }
+     }
+}
+
+/***************************************************************************/
+ACT_FN_GO(window_maximized)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+   if (!((E_Border *)obj)->lock_user_maximize)
+     {
+       E_Border *bd;
+       
+       bd = (E_Border *)obj;
+       if (params)
+         {
+            int v;
+            char buf[32];
+            
+            if (sscanf(params, "%i %20s", &v, buf) == 2)
+              {
+                 if (v == 1)
+                   {
+                      if (!strcmp(buf, "fullscreen")) e_border_maximize(bd, 
E_MAXIMIZE_FULLSCREEN);
+                      else if (!strcmp(buf, "smart")) e_border_maximize(bd, 
E_MAXIMIZE_SMART);
+                      else if (!strcmp(buf, "expand")) e_border_maximize(bd, 
E_MAXIMIZE_EXPAND);
+                      else if (!strcmp(buf, "fill")) e_border_maximize(bd, 
E_MAXIMIZE_FILL);
+                   }
+                 else if (v == 0)
+                   e_border_unmaximize(bd);
+              }
+         }
      }
 }
 
@@ -289,13 +433,78 @@
        E_Border *bd;
        
        bd = (E_Border *)obj;
-       if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
-       else e_border_shade(bd, E_DIRECTION_UP);
+       if (bd->shaded)
+         {
+            if (!params)
+              e_border_unshade(bd, E_DIRECTION_UP);
+            else
+              {
+                 if (!strcmp(params, "up")) e_border_unshade(bd, 
E_DIRECTION_UP);
+                 else if (!strcmp(params, "down")) e_border_unshade(bd, 
E_DIRECTION_DOWN);
+                 else if (!strcmp(params, "left")) e_border_unshade(bd, 
E_DIRECTION_LEFT);
+                 else if (!strcmp(params, "right")) e_border_unshade(bd, 
E_DIRECTION_RIGHT);
+                 else e_border_unshade(bd, E_DIRECTION_UP);
+              }
+         }
+       else
+         {
+            if (!params)
+              e_border_shade(bd, E_DIRECTION_UP);
+            else
+              {
+                 if (!strcmp(params, "up")) e_border_shade(bd, E_DIRECTION_UP);
+                 else if (!strcmp(params, "down")) e_border_shade(bd, 
E_DIRECTION_DOWN);
+                 else if (!strcmp(params, "left")) e_border_shade(bd, 
E_DIRECTION_LEFT);
+                 else if (!strcmp(params, "right")) e_border_shade(bd, 
E_DIRECTION_RIGHT);
+                 else e_border_shade(bd, E_DIRECTION_UP);
+              }
+         }
      }
 }
 
 /***************************************************************************/
-ACT_FN_GO(move_relative)
+ACT_FN_GO(window_shaded)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+   if (!((E_Border *)obj)->lock_user_shade)
+     {
+       E_Border *bd;
+       
+       bd = (E_Border *)obj;
+       if (params)
+         {
+            int v;
+            char buf[32];
+            
+            if (sscanf(params, "%i %20s", &v, buf) == 2)
+              {
+                 if (v == 1)
+                   {
+                      if (!strcmp(buf, "up")) e_border_shade(bd, 
E_DIRECTION_UP);
+                      else if (!strcmp(buf, "down")) e_border_shade(bd, 
E_DIRECTION_DOWN);
+                      else if (!strcmp(buf, "left")) e_border_shade(bd, 
E_DIRECTION_LEFT);
+                      else if (!strcmp(buf, "right")) e_border_shade(bd, 
E_DIRECTION_RIGHT);
+                   }
+                 else if (v == 0)
+                   {
+                      if (!strcmp(buf, "up")) e_border_unshade(bd, 
E_DIRECTION_UP);
+                      else if (!strcmp(buf, "down")) e_border_unshade(bd, 
E_DIRECTION_DOWN);
+                      else if (!strcmp(buf, "left")) e_border_unshade(bd, 
E_DIRECTION_LEFT);
+                      else if (!strcmp(buf, "right")) e_border_unshade(bd, 
E_DIRECTION_RIGHT);
+                   }
+              }
+         }
+     }
+}
+
+/***************************************************************************/
+ACT_FN_GO(window_move_by)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
@@ -325,7 +534,7 @@
 }
 
 /***************************************************************************/
-ACT_FN_GO(move_absolute)
+ACT_FN_GO(window_move_to)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
@@ -373,7 +582,7 @@
 }
 
 /***************************************************************************/
-ACT_FN_GO(resize)
+ACT_FN_GO(window_resize_by)
 {
    if (!obj) obj = E_OBJECT(e_border_focused_get());
    if (!obj) return;
@@ -402,6 +611,26 @@
 }
 
 /***************************************************************************/
+ACT_FN_GO(window_drag_icon)
+{
+   if (!obj) obj = E_OBJECT(e_border_focused_get());
+   if (!obj) return;
+   if (obj->type != E_BORDER_TYPE)
+     {
+       obj = E_OBJECT(e_border_focused_get());
+       if (!obj) return;
+     }
+     {
+       E_Border *bd;
+       
+       bd = (E_Border *)obj;
+       bd->drag.start = 1;
+       bd->drag.x = -1;
+       bd->drag.y = -1;
+     }
+}
+
+/***************************************************************************/
 static E_Zone *
 _e_actions_zone_get(E_Object *obj)
 {
@@ -921,11 +1150,13 @@
 
    ACT_GO(window_move);
    ACT_GO_MOUSE(window_move);
+   ACT_GO_SIGNAL(window_move);
    ACT_END(window_move);
    ACT_END_MOUSE(window_move);
    
    ACT_GO(window_resize);
    ACT_GO_MOUSE(window_resize);
+   ACT_GO_SIGNAL(window_resize);
    ACT_END(window_resize);
    ACT_END_MOUSE(window_resize);
   
@@ -943,12 +1174,20 @@
    
    ACT_GO(window_sticky_toggle);
    
+   ACT_GO(window_sticky);
+   
    ACT_GO(window_iconic_toggle);
    
+   ACT_GO(window_iconic);
+   
    ACT_GO(window_maximized_toggle);
    
+   ACT_GO(window_maximized);
+   
    ACT_GO(window_shaded_toggle);
    
+   ACT_GO(window_shaded);
+   
    ACT_GO(desk_flip_by);
 
    ACT_GO(desk_flip_to);
@@ -957,11 +1196,13 @@
    
    ACT_GO(desk_linear_flip_to);
 
-   ACT_GO(move_absolute);
+   ACT_GO(window_move_to);
 
-   ACT_GO(move_relative);
+   ACT_GO(window_move_by);
 
-   ACT_GO(resize);
+   ACT_GO(window_resize_by);
+   
+   ACT_GO(window_drag_icon);
 
    ACT_GO(menu_show);
    ACT_GO_MOUSE(menu_show);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_actions.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_actions.h 22 Sep 2005 12:47:45 -0000      1.5
+++ e_actions.h 22 Sep 2005 16:36:59 -0000      1.6
@@ -21,6 +21,7 @@
       void (*go_mouse)  (E_Object *obj, char *params, 
Ecore_X_Event_Mouse_Button_Down *ev);
       void (*go_wheel)  (E_Object *obj, char *params, 
Ecore_X_Event_Mouse_Wheel *ev);
       void (*go_key)    (E_Object *obj, char *params, Ecore_X_Event_Key_Down 
*ev);
+      void (*go_signal) (E_Object *obj, char *params, char *sig, char *src);
       void (*end)       (E_Object *obj, char *params);
       void (*end_mouse) (E_Object *obj, char *params, 
Ecore_X_Event_Mouse_Button_Up *ev);
       void (*end_key)   (E_Object *obj, char *params, Ecore_X_Event_Key_Up 
*ev);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_bindings.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_bindings.c        22 Sep 2005 12:47:45 -0000      1.17
+++ e_bindings.c        22 Sep 2005 16:36:59 -0000      1.18
@@ -46,6 +46,7 @@
    /* FIXME: these need to be come normal e_config bindings that you can
     * modify via ipc and are saved/loaded to/from the user's config
     */
+   /* wheel events.. anywhere! :) */
    e_bindings_wheel_add(E_BINDING_CONTEXT_CONTAINER,
                        0, -1, E_BINDING_MODIFIER_NONE, 1,
                        "desk_linear_flip_by", "-1");
@@ -82,7 +83,88 @@
    e_bindings_wheel_add(E_BINDING_CONTEXT_BORDER,
                        1, 1, E_BINDING_MODIFIER_ALT, 0, 
                        "desk_linear_flip_by", "1");
-   
+
+   /* these now let you bind your own actions to a border */
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1,double", "title", 
E_BINDING_MODIFIER_NONE, 1, 
+                       "window_shaded_toggle", "up");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,2", "title", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_shaded_toggle", "up");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,wheel,?,1", "title", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_shaded", "0 up");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,wheel,?,-1", "title", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_shaded", "1 up");
+   
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,3", "title", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_menu", "");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,?", "icon", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_menu", "");
+
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,[12]", "close", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_close", "");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,3", "close", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_kill", "");
+   
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,1", "maximize", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_maximized_toggle", "");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,2", "maximize", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_maximized_toggle", "smart");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,3", "maximize", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_maximized_toggle", "expand");
+   
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,clicked,?", "minimize", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_iconic_toggle", "");
+   
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "icon", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_drag_icon", "");
+
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "title", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_move", "");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,up,1", "title", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_move", "end");
+
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_tl", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_resize", "tl");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_t", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_resize", "t");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_tr", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_resize", "tr");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_r", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_resize", "r");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_br", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_resize", "br");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_b", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_resize", "b");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_bl", E_BINDING_MODIFIER_NONE, 
1, 
+                       "window_resize", "bl");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,down,1", "resize_l", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_resize", "l");
+   e_bindings_signal_add(E_BINDING_CONTEXT_BORDER,
+                       "mouse,up,1", "resize_*", E_BINDING_MODIFIER_NONE, 1, 
+                       "window_resize", "end");
+
    return 1;
 }
 
@@ -562,7 +644,9 @@
    act = e_bindings_signal_find(ctxt, obj, sig, src, &bind);
    if (act)
      {
-       if (act->func.go)
+       if (act->func.go_signal)
+         act->func.go_signal(obj, bind->params, sig, src);
+       else if (act->func.go)
          act->func.go(obj, bind->params);
        return act;
      }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.403
retrieving revision 1.404
diff -u -3 -r1.403 -r1.404
--- e_border.c  22 Sep 2005 12:47:45 -0000      1.403
+++ e_border.c  22 Sep 2005 16:36:59 -0000      1.404
@@ -46,21 +46,8 @@
 static int _e_border_cb_desktop_change(void *data, int ev_type, void *ev);
 static int _e_border_cb_sync_alarm(void *data, int ev_type, void *ev);
 
-static int _e_border_cb_pointer_warp(void *data, int ev_type, void *ev);
-
-static void _e_border_cb_signal_move_start(void *data, Evas_Object *obj, const 
char *emission, const char *source);
-static void _e_border_cb_signal_move_stop(void *data, Evas_Object *obj, const 
char *emission, const char *source);
-static void _e_border_cb_signal_resize_tl_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_t_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_tr_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_r_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_br_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_b_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_bl_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_l_start(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_resize_stop(void *data, Evas_Object *obj, 
const char *emission, const char *source);
-static void _e_border_cb_signal_action(void *data, Evas_Object *obj, const 
char *emission, const char *source);
-static void _e_border_cb_signal_drag(void *data, Evas_Object *obj, const char 
*emission, const char *source);
+static int  _e_border_cb_pointer_warp(void *data, int ev_type, void *ev);
+static void _e_border_cb_signal_bind(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static int  _e_border_cb_mouse_in(void *data, int type, void *event);
 static int  _e_border_cb_mouse_out(void *data, int type, void *event);
 static int  _e_border_cb_mouse_wheel(void *data, int type, void *event);
@@ -1954,7 +1941,7 @@
          {
             char source[256];
             
-            snprintf(source, sizeof(source) - 1, "mouse,%i", ev->button);
+            snprintf(source, sizeof(source) - 1, "mouse,down,%i", ev->button);
             _e_border_moveinfo_gather(bd, source);
          }
      }
@@ -2008,7 +1995,7 @@
          {
             char source[256];
             
-            snprintf(source, sizeof(source) - 1, "mouse,%i", ev->button);
+            snprintf(source, sizeof(source) - 1, "mouse,down,%i", ev->button);
             _e_border_moveinfo_gather(bd, source);
          }
      }
@@ -3511,26 +3498,18 @@
    return 1;
 }
 
-static void
-_e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+void
+e_border_signal_move_begin(E_Border *bd, char *sig, char *src)
 {
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_move_begin(bd))
-     return;
+   if (!_e_border_move_begin(bd)) return;
    bd->moving = 1;
    e_zone_flip_win_disable();
-   _e_border_moveinfo_gather(bd, source);
+   _e_border_moveinfo_gather(bd, sig);
 }
 
-static void
-_e_border_cb_signal_move_stop(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+void
+e_border_signal_move_end(E_Border *bd, char *sig, char *src)
 {
-   E_Border *bd;
-
-   bd = data;
    if (!bd->moving) return;
    bd->moving = 0;
    e_zone_flip_win_restore();
@@ -3538,225 +3517,86 @@
    e_zone_flip_coords_handle(bd->zone, -1, -1);
 }
 
-static void
-_e_border_cb_signal_resize_tl_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_TL;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_SE);
-}
-
-static void
-_e_border_cb_signal_resize_t_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_T;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_S);
-}
-
-static void
-_e_border_cb_signal_resize_tr_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_TR;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_SW);
-}
-
-static void
-_e_border_cb_signal_resize_r_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_R;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_W);
-}
-
-static void
-_e_border_cb_signal_resize_br_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_BR;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_NW);
-}
-
-static void
-_e_border_cb_signal_resize_b_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_B;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_N);
-}
-
-static void
-_e_border_cb_signal_resize_bl_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+int
+e_border_resizing_get(E_Border *bd)
 {
-   E_Border *bd;
-
-   bd = data;
-
-   if (!_e_border_resize_begin(bd))
-     return;
-   bd->resize_mode = RESIZE_BL;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_NE);
+   if (bd->resize_mode == RESIZE_NONE) return 0;
+   return 1;
 }
 
-static void
-_e_border_cb_signal_resize_l_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+void
+e_border_signal_resize_begin(E_Border *bd, char *dir, char *sig, char *src)
 {
-   E_Border *bd;
-
-   bd = data;
+   Ecore_X_Gravity grav = ECORE_X_GRAVITY_NW;
+   int resize_mode = RESIZE_BR;
 
    if (!_e_border_resize_begin(bd))
      return;
-   bd->resize_mode = RESIZE_L;
-   _e_border_moveinfo_gather(bd, source);
-   GRAV_SET(bd, ECORE_X_GRAVITY_E);
-}
-
-static void
-_e_border_cb_signal_resize_stop(void *data, Evas_Object *obj, const char 
*emission, const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-   if (bd->resize_mode == RESIZE_NONE) return;
-   _e_border_resize_handle(bd);
-   bd->resize_mode = RESIZE_NONE;
-   _e_border_resize_end(bd);
-   bd->changes.reset_gravity = 1;
-   bd->changed = 1;
-}
-
-static void
-_e_border_cb_signal_action(void *data, Evas_Object *obj, const char *emission, 
const char *source)
-{
-   E_Border *bd;
-
-   bd = data;
-
-   if (e_dnd_active()) return;
-
-   if (!strcmp(source, "close"))
+   if (!strcmp(dir, "tl"))
      {
-       if (!bd->lock_close)
-         e_border_act_close_begin(bd);
+       resize_mode = RESIZE_TL;
+       grav = ECORE_X_GRAVITY_SE;
      }
-   else if (!strcmp(source, "shade_up") || !strcmp(source, "shade"))
+   else if (!strcmp(dir, "t"))
      {
-       if (!bd->lock_user_shade)
-         {
-            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
-            else e_border_shade(bd, E_DIRECTION_UP);
-         }
+       resize_mode = RESIZE_T;
+       grav = ECORE_X_GRAVITY_S;
      }
-   else if (!strcmp(source, "shade_down"))
+   else if (!strcmp(dir, "tr"))
      {
-       if (!bd->lock_user_shade)
-         {
-            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_DOWN);
-            else e_border_shade(bd, E_DIRECTION_DOWN);
-         }
+       resize_mode = RESIZE_TR;
+       grav = ECORE_X_GRAVITY_SW;
      }
-   else if (!strcmp(source, "shade_left"))
+   else if (!strcmp(dir, "r"))
      {
-       if (!bd->lock_user_shade)
-         {
-            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_LEFT);
-            else e_border_shade(bd, E_DIRECTION_LEFT);
-         }
+       resize_mode = RESIZE_R;
+       grav = ECORE_X_GRAVITY_W;
      }
-   else if (!strcmp(source, "shade_right"))
+   else if (!strcmp(dir, "br"))
      {
-       if (!bd->lock_user_shade)
-         {
-            if (bd->shaded) e_border_unshade(bd, E_DIRECTION_RIGHT);
-            else e_border_shade(bd, E_DIRECTION_RIGHT);
-         }
+       resize_mode = RESIZE_BR;
+       grav = ECORE_X_GRAVITY_NW;
      }
-   else if (!strcmp(source, "maximize"))
+   else if (!strcmp(dir, "b"))
      {
-       if (!bd->lock_user_maximize)
-         {
-            if (bd->maximized) e_border_unmaximize(bd);
-            else e_border_maximize(bd, e_config->maximize_policy);
-         }
+       resize_mode = RESIZE_B;
+       grav = ECORE_X_GRAVITY_N;
      }
-   else if (!strcmp(source, "iconify"))
+   else if (!strcmp(dir, "bl"))
      {
-       if (!bd->lock_user_iconify)
-         {
-            if (bd->iconic) e_border_uniconify(bd);
-            else e_border_iconify(bd);
-         }
+       resize_mode = RESIZE_BL;
+       grav = ECORE_X_GRAVITY_NE;
      }
-   else if (!strcmp(source, "menu"))
+   else if (!strcmp(dir, "l"))
      {
-       Evas_Coord x, y;
-
-       evas_pointer_canvas_xy_get(bd->bg_evas , &x, &y);
-       _e_border_menu_show(bd, x + bd->x, y + bd->y, 0, 0);
-     }
-   else if (!strcmp(source, "raise"))
-     {
-       if (!bd->lock_user_stacking)
-         e_border_raise(bd);
-     }
-   else if (!strcmp(source, "lower"))
-     {
-       if (!bd->lock_user_stacking)
-         e_border_lower(bd);
+       resize_mode = RESIZE_L;
+       grav = ECORE_X_GRAVITY_E;
      }
+   bd->resize_mode = resize_mode;
+   _e_border_moveinfo_gather(bd, sig);
+   GRAV_SET(bd, grav);
+}
+
+void
+e_border_signal_resize_end(E_Border *bd, char *dir, char *sig, char *src)
+{
+   if (bd->resize_mode == RESIZE_NONE) return;
+   _e_border_resize_handle(bd);
+   bd->resize_mode = RESIZE_NONE;
+   _e_border_resize_end(bd);
+   bd->changes.reset_gravity = 1;
+   bd->changed = 1;
 }
 
 static void
-_e_border_cb_signal_drag(void *data, Evas_Object *obj, const char *emission, 
const char *source)
+_e_border_cb_signal_bind(void *data, Evas_Object *obj, const char *emission, 
const char *source)
 {
    E_Border *bd;
 
-   if (!strcmp(source, "icon"))
-     {
-       bd = data;
-       bd->drag.start = 1;
-       bd->drag.x = -1;
-       bd->drag.y = -1;
-     }
+   bd = data;
+   if (e_dnd_active()) return;
+   e_bindings_signal_handle(E_BINDING_CONTEXT_BORDER, E_OBJECT(bd), 
+                           (char *)emission, (char *)source);
 }
 
 static int
@@ -4829,32 +4669,8 @@
        ecore_x_window_move(bd->client.shell_win, l, t);
        if (bd->bg_object)
          {
-            edje_object_signal_callback_add(bd->bg_object, "move_start", "*",
-                                            _e_border_cb_signal_move_start, 
bd);
-            edje_object_signal_callback_add(bd->bg_object, "move_stop", "*",
-                                            _e_border_cb_signal_move_stop, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_tl_start", 
"*",
-                                            
_e_border_cb_signal_resize_tl_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_t_start", 
"*",
-                                            
_e_border_cb_signal_resize_t_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_tr_start", 
"*",
-                                            
_e_border_cb_signal_resize_tr_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_r_start", 
"*",
-                                            
_e_border_cb_signal_resize_r_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_br_start", 
"*",
-                                            
_e_border_cb_signal_resize_br_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_b_start", 
"*",
-                                            
_e_border_cb_signal_resize_b_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_bl_start", 
"*",
-                                            
_e_border_cb_signal_resize_bl_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_l_start", 
"*",
-                                            
_e_border_cb_signal_resize_l_start, bd);
-            edje_object_signal_callback_add(bd->bg_object, "resize_stop", "*",
-                                            _e_border_cb_signal_resize_stop, 
bd);
-            edje_object_signal_callback_add(bd->bg_object, "action", "*",
-                                            _e_border_cb_signal_action, bd);
-            edje_object_signal_callback_add(bd->bg_object, "drag", "*",
-                                            _e_border_cb_signal_drag, bd);
+            edje_object_signal_callback_add(bd->bg_object, "*", "*",
+                                            _e_border_cb_signal_bind, bd);
             if (bd->focused)
               edje_object_signal_emit(bd->bg_object, "active", "");
             if (bd->shaded)
@@ -5518,9 +5334,9 @@
 static void
 _e_border_moveinfo_gather(E_Border *bd, const char *source)
 {
-   if (!strcmp(source, "mouse,1")) bd->moveinfo.down.button = 1;
-   else if (!strcmp(source, "mouse,2")) bd->moveinfo.down.button = 2;
-   else if (!strcmp(source, "mouse,3")) bd->moveinfo.down.button = 3;
+   if (e_util_glob_match(source, "mouse,*,1")) bd->moveinfo.down.button = 1;
+   else if (e_util_glob_match(source, "mouse,*,2")) bd->moveinfo.down.button = 
2;
+   else if (e_util_glob_match(source, "mouse,*,3")) bd->moveinfo.down.button = 
3;
    else bd->moveinfo.down.button = 0;
    if ((bd->moveinfo.down.button >= 1) && (bd->moveinfo.down.button <= 3))
      {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -3 -r1.112 -r1.113
--- e_border.h  14 Sep 2005 06:39:59 -0000      1.112
+++ e_border.h  22 Sep 2005 16:36:59 -0000      1.113
@@ -64,7 +64,6 @@
    E_WINDOW_PLACEMENT_CURSOR
 } E_Window_Placement;
 
-
 typedef struct _E_Border                     E_Border;
 typedef struct _E_Border_Pending_Move_Resize E_Border_Pending_Move_Resize;
 typedef struct _E_Event_Border_Resize        E_Event_Border_Resize;
@@ -545,8 +544,14 @@
 EAPI void e_border_frame_recalc(E_Border *bd);
 EAPI Evas_List *e_border_immortal_windows_get(void);
 
-const char *e_border_name_get(E_Border *bd);
+EAPI const char *e_border_name_get(E_Border *bd);
 
+EAPI void e_border_signal_move_begin(E_Border *bd, char *sig, char *src);
+EAPI void e_border_signal_move_end(E_Border *bd, char *sig, char *src);
+EAPI int  e_border_resizing_get(E_Border *bd);
+EAPI void e_border_signal_resize_begin(E_Border *bd, char *dir, char *sig, 
char *src);
+EAPI void e_border_signal_resize_end(E_Border *bd, char *dir, char *sig, char 
*src);
+    
 extern EAPI int E_EVENT_BORDER_RESIZE;
 extern EAPI int E_EVENT_BORDER_MOVE;
 extern EAPI int E_EVENT_BORDER_ADD;




-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to