Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_evas
Modified Files:
Tag: SPLIT
ecore_evas_private.h ecore_evas_x.c
Log Message:
slight corner case in buffered events. fixed.
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas_private.h,v
retrieving revision 1.1.2.15
retrieving revision 1.1.2.16
diff -u -3 -r1.1.2.15 -r1.1.2.16
--- ecore_evas_private.h 21 May 2003 00:01:39 -0000 1.1.2.15
+++ ecore_evas_private.h 28 May 2003 05:53:08 -0000 1.1.2.16
@@ -91,6 +91,7 @@
short rotation;
char shaped : 1;
char visible : 1;
+ char should_be_visible : 1;
struct {
int x, y;
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas_x.c,v
retrieving revision 1.1.2.14
retrieving revision 1.1.2.15
diff -u -3 -r1.1.2.14 -r1.1.2.15
--- ecore_evas_x.c 25 May 2003 09:43:39 -0000 1.1.2.14
+++ ecore_evas_x.c 28 May 2003 05:53:08 -0000 1.1.2.15
@@ -265,7 +265,8 @@
{
Ecore_Evas *ee;
Ecore_X_Event_Window_Damage *e;
-
+
+ printf("dmg!\n");
e = event;
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
@@ -332,6 +333,7 @@
e = event;
ee = _ecore_evas_x_match(e->win);
+ printf("reconf! %x %i %i, %ix%i\n", e->win, e->x, e->y, e->w, e->h);
if (!ee) return 1; /* pass on event */
if ((ee->prop.fullscreen) && (e->win == ee->engine.x.win_container)) return 0;
if ((e->from_wm) || (ee->prop.fullscreen) || (ee->prop.override))
@@ -405,7 +407,7 @@
e = event;
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
- if (ee->engine.x.win_container != e->win) return 0;
+ if (ee->visible) return 0; /* dont pass it on */
ee->visible = 1;
if (ee->func.fn_show) ee->func.fn_show(ee);
return 0; /* dont pass it on */
@@ -420,7 +422,7 @@
e = event;
ee = _ecore_evas_x_match(e->win);
if (!ee) return 1; /* pass on event */
- if (ee->engine.x.win_container != e->win) return 0;
+ if (!ee->visible) return 0; /* dont pass it on */
ee->visible = 0;
if (ee->func.fn_hide) ee->func.fn_hide(ee);
return 0; /* dont pass it on */
@@ -500,7 +502,9 @@
if (updates) evas_render_updates_free(updates);
}
}
- else if (ee->visible)
+ else if ((ee->visible) ||
+ ((ee->should_be_visible) && (ee->prop.fullscreen)) ||
+ ((ee->should_be_visible) && (ee->prop.override)))
{
if (ee->shaped)
{
@@ -693,25 +697,38 @@
static void
_ecore_evas_show(Ecore_Evas *ee)
{
- ecore_x_window_show(ee->engine.x.win_container);
+ if (!ee->prop.fullscreen)
+ ecore_x_window_show(ee->engine.x.win_container);
+ ecore_x_window_show(ee->engine.x.win);
+ ee->should_be_visible = 1;
}
static void
_ecore_evas_hide(Ecore_Evas *ee)
{
- ecore_x_window_hide(ee->engine.x.win_container);
+ if (!ee->prop.fullscreen)
+ ecore_x_window_hide(ee->engine.x.win_container);
+ ecore_x_window_hide(ee->engine.x.win);
+ ee->visible = 0;
+ ee->should_be_visible = 0;
}
static void
_ecore_evas_raise(Ecore_Evas *ee)
{
- ecore_x_window_raise(ee->engine.x.win_container);
+ if (!ee->prop.fullscreen)
+ ecore_x_window_raise(ee->engine.x.win_container);
+ else
+ ecore_x_window_raise(ee->engine.x.win);
}
static void
_ecore_evas_lower(Ecore_Evas *ee)
{
- ecore_x_window_lower(ee->engine.x.win_container);
+ if (!ee->prop.fullscreen)
+ ecore_x_window_lower(ee->engine.x.win_container);
+ else
+ ecore_x_window_lower(ee->engine.x.win);
}
static void
@@ -874,7 +891,7 @@
ecore_x_window_prop_step_size_set(ee->engine.x.win_container, ee->prop.step.w,
ee->prop.step.h);
ecore_x_window_prop_borderless_set(ee->engine.x.win_container,
ee->prop.borderless);
ecore_x_window_prop_layer_set(ee->engine.x.win_container, ee->prop.layer);
- ecore_x_window_prop_withdrawn_set(ee->engine.x.win_container, ee->prop.withdrawn);
+ ecore_x_window_prop_withdrawn_set(ee->engine.x.win_container,
ee->prop.withdrawn);
}
ecore_x_window_reparent(ee->engine.x.win, ee->engine.x.win_container, 0, 0);
ecore_x_window_show(ee->engine.x.win);
@@ -898,7 +915,9 @@
ecore_x_window_raise(ee->engine.x.win);
ecore_x_window_show(ee->engine.x.win);
ecore_x_window_focus(ee->engine.x.win);
+ ecore_x_window_hide(ee->engine.x.win_container);
ecore_x_window_shape_mask_set(ee->engine.x.win_container, 0);
+ if (ee->should_be_visible) ecore_x_window_show(ee->engine.x.win);
ee->x = 0;
ee->y = 0;
}
@@ -910,6 +929,7 @@
ecore_x_window_reparent(ee->engine.x.win, ee->engine.x.win_container, 0, 0);
ecore_x_window_resize(ee->engine.x.win, pw, ph);
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+ if (ee->should_be_visible) ecore_x_window_show(ee->engine.x.win_container);
}
ee->prop.fullscreen = on;
}
@@ -1079,8 +1099,6 @@
evas_key_lock_add(ee->evas, "Caps_Lock");
evas_key_lock_add(ee->evas, "Num_Lock");
evas_key_lock_add(ee->evas, "Scroll_Lock");
-
- ecore_x_window_show(ee->engine.x.win);
ecore_evases = _ecore_list_prepend(ecore_evases, ee);
return ee;
-------------------------------------------------------
This SF.net email is sponsored by: ObjectStore.
If flattening out C++ or Java code to make your application fit in a
relational database is painful, don't do it! Check out ObjectStore.
Now part of Progress Software. http://www.objectstore.net/sourceforge
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs