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