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