Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_evas


Modified Files:
        Ecore_Evas.h ecore_evas.c ecore_evas_buffer.c 
        ecore_evas_directfb.c ecore_evas_fb.c ecore_evas_private.h 
        ecore_evas_x.c 


Log Message:
- more work on window state changes. 
- add ecore_evas_callback_[un]sticky_set

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/Ecore_Evas.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- Ecore_Evas.h        8 Mar 2006 08:02:55 -0000       1.20
+++ Ecore_Evas.h        27 Jul 2006 16:14:33 -0000      1.21
@@ -129,6 +129,8 @@
 EAPI void        ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
 EAPI void        ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
 EAPI void        ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void 
(*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_sticky_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_unsticky_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
 EAPI void        ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
 EAPI void        ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void 
(*func) (Ecore_Evas *ee));
 EAPI void        ecore_evas_callback_pre_render_set(Ecore_Evas *ee, void 
(*func) (Ecore_Evas *ee));
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- ecore_evas.c        8 Mar 2006 08:02:55 -0000       1.28
+++ ecore_evas.c        27 Jul 2006 16:14:33 -0000      1.29
@@ -357,6 +357,50 @@
 }
 
 /**
+ * Set a callback for Ecore_Evas sticky events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+ 
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee becomes sticky.
+ */
+EAPI void
+ecore_evas_callback_sticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_sticky_set");
+       return;
+     }
+   IFC(ee, fn_callback_sticky_set) (ee, func);
+   IFE;
+   ee->func.fn_sticky = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas un-sticky events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+ 
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee becomes un-sticky.
+ */
+EAPI void
+ecore_evas_callback_unsticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_unsticky_set");
+       return;
+     }
+   IFC(ee, fn_callback_unsticky_set) (ee, func);
+   IFE;
+   ee->func.fn_unsticky = func;
+}
+
+/**
  * Set a callback for Ecore_Evas mouse in events. 
  * @param ee The Ecore_Evas to set callbacks on
  * @param func The function to call
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_buffer.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- ecore_evas_buffer.c 2 Jul 2006 13:14:23 -0000       1.12
+++ ecore_evas_buffer.c 27 Jul 2006 16:14:33 -0000      1.13
@@ -391,6 +391,8 @@
      NULL,
      NULL,
      NULL,
+     NULL,
+     NULL,
      _ecore_evas_resize,
      NULL,
      NULL,
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_directfb.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_evas_directfb.c       8 Mar 2006 08:02:55 -0000       1.6
+++ ecore_evas_directfb.c       27 Jul 2006 16:14:33 -0000      1.7
@@ -502,6 +502,8 @@
      NULL,                             /* cb destroy */
      NULL,                             /* cb focus in */
      NULL,                             /* cb focus out */
+     NULL,                              /* cb sticky */
+     NULL,                              /* cb unsticky */
      NULL,                             /* cb mouse in */
      NULL,                             /* cb mouse out */
      NULL,                             /* cb pre render */
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_fb.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ecore_evas_fb.c     6 Jan 2006 18:47:56 -0000       1.17
+++ ecore_evas_fb.c     27 Jul 2006 16:14:33 -0000      1.18
@@ -434,6 +434,8 @@
      NULL,
      NULL,
      NULL,
+     NULL,
+     NULL,
      _ecore_evas_resize,
      _ecore_evas_move_resize,
      _ecore_evas_rotation_set,
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- ecore_evas_private.h        8 Mar 2006 08:02:55 -0000       1.23
+++ ecore_evas_private.h        27 Jul 2006 16:14:33 -0000      1.24
@@ -65,6 +65,8 @@
    void        (*fn_callback_focus_out_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        (*fn_callback_mouse_in_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        (*fn_callback_mouse_out_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
+   void        (*fn_callback_sticky_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
+   void        (*fn_callback_unsticky_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));   
    void        (*fn_callback_pre_render_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        (*fn_callback_post_render_set) (Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        (*fn_move) (Ecore_Evas *ee, int x, int y);
@@ -116,18 +118,14 @@
       unsigned char  using_bg_pixmap : 1;
       unsigned char  managed : 1;
       struct {
-          /*
           unsigned char modal : 1;
-          */
           unsigned char sticky : 1;
-          /*
           unsigned char maximized_v : 1;
           unsigned char maximized_h : 1;
           unsigned char shaded : 1;
           unsigned char skip_taskbar : 1;
           unsigned char skip_pager : 1;
           unsigned char fullscreen : 1;
-          */
           unsigned char above : 1;
           unsigned char below : 1;
       } state;
@@ -218,6 +216,8 @@
       void          (*fn_destroy) (Ecore_Evas *ee);
       void          (*fn_focus_in) (Ecore_Evas *ee);
       void          (*fn_focus_out) (Ecore_Evas *ee);
+      void          (*fn_sticky) (Ecore_Evas *ee);
+      void          (*fn_unsticky) (Ecore_Evas *ee);      
       void          (*fn_mouse_in) (Ecore_Evas *ee);
       void          (*fn_mouse_out) (Ecore_Evas *ee);
       void          (*fn_pre_render) (Ecore_Evas *ee);
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_x.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -3 -r1.82 -r1.83
--- ecore_evas_x.c      27 Jul 2006 02:42:41 -0000      1.82
+++ ecore_evas_x.c      27 Jul 2006 16:14:33 -0000      1.83
@@ -548,10 +548,22 @@
      {
        unsigned int i, num;
        Ecore_X_Window_State *state;
+       int sticky;
+       
+       sticky = 0;
+       
+       /* TODO: we need to move those to the end, with if statements */
+       ee->engine.x.state.modal = 0;
+       ee->engine.x.state.maximized_v = 0;
+       ee->engine.x.state.maximized_h = 0;
+       ee->engine.x.state.shaded = 0;
+       ee->engine.x.state.skip_taskbar = 0;
+       ee->engine.x.state.skip_pager = 0;              
+       ee->prop.fullscreen = 0;
+       ee->engine.x.state.fullscreen = 0;
+       ee->engine.x.state.above = 0;
+       ee->engine.x.state.below = 0;   
        
-       ee->prop.sticky = 0;
-       ee->engine.x.state.sticky = 0;
-               
        ecore_x_netwm_window_state_get(e->win, &state, &num);
        if (state)
          {
@@ -559,14 +571,56 @@
               {
                  switch (state[i])
                    {
+                    case ECORE_X_WINDOW_STATE_MODAL:
+                       ee->engine.x.state.modal = 1;
+                       break;
                     case ECORE_X_WINDOW_STATE_STICKY:
-                      ee->prop.sticky = 1;
-                      ee->engine.x.state.sticky = 1;                  
-                      break;
+                       if (ee->prop.sticky && ee->engine.x.state.sticky)
+                         break;
+                      
+                       sticky = 1;
+                       ee->prop.sticky = 1;          
+                       ee->engine.x.state.sticky = 1;
+                       if (ee->func.fn_sticky) ee->func.fn_sticky(ee);
+                       break;
+                    case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
+                       ee->engine.x.state.maximized_v = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
+                       ee->engine.x.state.maximized_h = 1;
+                       break;                 
+                    case ECORE_X_WINDOW_STATE_SHADED:
+                       ee->engine.x.state.shaded = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
+                       ee->engine.x.state.skip_taskbar = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_SKIP_PAGER:
+                       ee->engine.x.state.skip_pager = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_FULLSCREEN:                     
+                       ee->prop.fullscreen = 1;
+                       ee->engine.x.state.fullscreen = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_ABOVE:
+                       ee->engine.x.state.above = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_BELOW:
+                       ee->engine.x.state.below = 1;
+                       break;
+                    default:
+                       break;
                    }
-              }
+              }             
          }
-     }                
+       
+       if (ee->prop.sticky && !sticky)
+         {
+            ee->prop.sticky = 0;
+            ee->engine.x.state.sticky = 0;
+            if (ee->func.fn_unsticky) ee->func.fn_unsticky(ee);
+         }             
+     }
    return 1;
 }
 
@@ -2019,6 +2073,8 @@
      NULL,
      NULL,
      _ecore_evas_x_callback_delete_request_set,
+     NULL,
+     NULL,
      NULL,
      NULL,
      NULL,



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to