Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_win.h e_win.c 


Log Message:
Add convenience functions for settings layer and sticky.
Support internal states, and add centered state.
Add object paranoia check.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_win.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_win.h     11 Jul 2005 09:19:17 -0000      1.1
+++ e_win.h     30 Aug 2005 01:16:48 -0000      1.2
@@ -29,6 +29,10 @@
    void               (*cb_resize) (E_Win *win);
    void               (*cb_delete) (E_Win *win);
    void                *data;
+
+   struct {
+       unsigned char   centered : 1;
+   } state;
 };
 
 EAPI int    e_win_init               (void);
@@ -46,6 +50,8 @@
 EAPI void   e_win_shaped_set         (E_Win *win, int shaped);
 EAPI void   e_win_avoid_damage_set   (E_Win *win, int avoid);
 EAPI void   e_win_borderless_set     (E_Win *win, int borderless);
+EAPI void   e_win_layer_set          (E_Win *win, int layer);
+EAPI void   e_win_sticky_set         (E_Win *win, int sticky);
 EAPI void   e_win_move_callback_set  (E_Win *win, void (*func) (E_Win *win));
 EAPI void   e_win_resize_callback_set(E_Win *win, void (*func) (E_Win *win));
 EAPI void   e_win_delete_callback_set(E_Win *win, void (*func) (E_Win *win));
@@ -56,5 +62,7 @@
 EAPI void   e_win_name_class_set     (E_Win *win, char *name, char *class);
 EAPI void   e_win_title_set          (E_Win *win, char *title);
 
+EAPI void   e_win_centered_set       (E_Win *win, int centered);
+
 #endif
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_win.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_win.c     12 Jul 2005 18:08:52 -0000      1.2
+++ e_win.c     30 Aug 2005 01:16:48 -0000      1.3
@@ -6,6 +6,7 @@
 /* local subsystem functions */
 static void _e_win_free(E_Win *win);
 static void _e_win_prop_update(E_Win *win);
+static void _e_win_state_update(E_Win *win);
 static void _e_win_cb_move(Ecore_Evas *ee);
 static void _e_win_cb_resize(Ecore_Evas *ee);
 static void _e_win_cb_delete(Ecore_Evas *ee);
@@ -40,6 +41,7 @@
    win = E_OBJECT_ALLOC(E_Win, E_WIN_TYPE, _e_win_free);
    if (!win) return NULL;
    win->container = con;
+   /* TODO: Maybe use an own config for windows? */
    if (e_canvas_engine_decide(e_config->evas_engine_errors) ==
        E_EVAS_ENGINE_GL_X11)
      {
@@ -185,42 +187,72 @@
 void
 e_win_move_callback_set(E_Win *win, void (*func) (E_Win *win))
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->cb_move = func;
 }
 
 void
 e_win_resize_callback_set(E_Win *win, void (*func) (E_Win *win))
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->cb_resize = func;
 }
 
 void
 e_win_delete_callback_set(E_Win *win, void (*func) (E_Win *win))
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->cb_delete = func;
 }
 
 void
 e_win_shaped_set(E_Win *win, int shaped)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    ecore_evas_shaped_set(win->ecore_evas, shaped);
 }
 
 void
 e_win_avoid_damage_set(E_Win *win, int avoid)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    ecore_evas_avoid_damage_set(win->ecore_evas, avoid);
 }
 
 void
 e_win_borderless_set(E_Win *win, int borderless)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    ecore_evas_borderless_set(win->ecore_evas, borderless);
 }
 
 void
+e_win_layer_set(E_Win *win, int layer)
+{
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
+   ecore_evas_layer_set(win->ecore_evas, layer);
+}
+
+void
+e_win_sticky_set(E_Win *win, int sticky)
+{
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
+   ecore_evas_sticky_set(win->ecore_evas, sticky);
+}
+
+void
 e_win_size_min_set(E_Win *win, int w, int h)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->min_w = w;
    win->min_h = h;   
    if (win->border)
@@ -230,6 +262,8 @@
 void
 e_win_size_max_set(E_Win *win, int w, int h)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->max_w = w;
    win->max_h = h;   
    if (win->border)
@@ -239,6 +273,8 @@
 void
 e_win_size_base_set(E_Win *win, int w, int h)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->base_w = w;
    win->base_h = h;   
    if (win->border)
@@ -248,6 +284,8 @@
 void
 e_win_step_set(E_Win *win, int x, int y)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    win->step_x = x;
    win->step_y = y;
    if (win->border)
@@ -257,15 +295,41 @@
 void
 e_win_name_class_set(E_Win *win, char *name, char *class)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    ecore_evas_name_class_set(win->ecore_evas, name, class);
 }
 
 void
 e_win_title_set(E_Win *win, char *title)
 {
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
    ecore_evas_title_set(win->ecore_evas, title);
 }
 
+void
+e_win_centered_set(E_Win *win, int centered)
+{
+   /* TODO:
+    * if win->border is set the window is shown, so we have to tell
+    * e to center this window by message, now it is checked at
+    * border creation.
+    */
+   E_OBJECT_CHECK(win);
+   E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
+   if ((win->state.centered) && (!centered))
+     {
+       win->state.centered = 0;
+       _e_win_state_update(win);
+     }
+   else if ((!win->state.centered) && (centered))
+     {
+       win->state.centered = 1;
+       _e_win_state_update(win);
+     }
+}
+
 /* local subsystem functions */
 static void
 _e_win_free(E_Win *win)
@@ -290,6 +354,25 @@
 }
 
 static void
+_e_win_state_update(E_Win *win)
+{
+   Ecore_X_Atom state[1];
+   int num = 0;
+
+   if (win->state.centered)
+     state[num++] = E_ATOM_WINDOW_STATE_CENTERED;
+
+   if (num)
+     {
+       ecore_x_window_prop_card32_set(win->evas_win, E_ATOM_WINDOW_STATE, 
state, num);
+     }
+   else
+     {
+       ecore_x_window_prop_property_del(win->evas_win, E_ATOM_WINDOW_STATE);
+     }
+}
+
+static void
 _e_win_cb_move(Ecore_Evas *ee)
 {
    E_Win *win;




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to