Enlightenment CVS committal
Author : rbdpngn
Project : e17
Module : libs/ewl
Dir : e17/libs/ewl/src
Modified Files:
ewl_embed.c ewl_embed.h ewl_widget.c
Log Message:
Some fixes for event dispatching for the embed.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- ewl_embed.c 28 Apr 2004 18:04:44 -0000 1.33
+++ ewl_embed.c 6 May 2004 15:43:10 -0000 1.34
@@ -99,8 +99,10 @@
ewl_embed_unrealize_cb, NULL);
ewl_callback_prepend(EWL_WIDGET(w), EWL_CALLBACK_DESTROY,
ewl_embed_destroy_cb, NULL);
+ ewl_callback_prepend(EWL_WIDGET(w), EWL_CALLBACK_CONFIGURE,
+ ewl_embed_configure_cb, NULL);
- LAYER(w) = -1000;
+ w->max_layer = LAYER(w) = -1000;
ecore_list_append(ewl_embed_list, w);
@@ -171,6 +173,23 @@
DRETURN_PTR(emb->smart, DLEVEL_STABLE);
}
+int ewl_embed_get_max_layer(Ewl_Embed *embed)
+{
+ int layer;
+ DENTER_FUNCTION(DLEVEL_STABLE);
+
+ layer = embed->max_layer;
+
+ DRETURN_INT(layer, DLEVEL_STABLE);
+}
+
+void ewl_embed_set_max_layer(Ewl_Embed *embed, int layer)
+{
+ if (REALIZED(embed))
+ evas_object_layer_set(embed->ev_clip, layer);
+ embed->max_layer = layer;
+}
+
/**
* @param embed: the embed where the key event is to occur
* @param keyname: the key press to trigger
@@ -661,39 +680,49 @@
Ewl_Embed *emb = EWL_EMBED(w);
DENTER_FUNCTION(DLEVEL_STABLE);
- if (w->fx_clip_box) {
+ emb->ev_clip = evas_object_rectangle_add(emb->evas);
+
+ if (w->fx_clip_box)
evas_object_clip_set(emb->smart, w->fx_clip_box);
- evas_object_repeat_events_set(w->fx_clip_box, FALSE);
+
+ if (emb->ev_clip) {
+ /*
+ if (w->fx_clip_box)
+ evas_object_clip_set(w->fx_clip_box, emb->ev_clip);
+ */
+ evas_object_color_set(emb->ev_clip, 0, 0, 0, 0);
+ evas_object_show(emb->ev_clip);
+ evas_object_repeat_events_set(emb->ev_clip, FALSE);
/*
* Catch mouse events processed through the evas
*/
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_MOUSE_IN,
ewl_embed_evas_mouse_in_cb, emb);
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_MOUSE_OUT,
ewl_embed_evas_mouse_out_cb, emb);
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_MOUSE_DOWN,
ewl_embed_evas_mouse_down_cb, emb);
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_MOUSE_UP,
ewl_embed_evas_mouse_up_cb, emb);
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_MOUSE_MOVE,
ewl_embed_evas_mouse_move_cb, emb);
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_MOUSE_WHEEL,
ewl_embed_evas_mouse_wheel_cb, emb);
/*
* Catch key events processed through the evas
*/
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_KEY_DOWN,
ewl_embed_evas_key_down_cb, emb);
- evas_object_event_callback_add(w->fx_clip_box,
+ evas_object_event_callback_add(emb->ev_clip,
EVAS_CALLBACK_KEY_UP, ewl_embed_evas_key_up_cb,
emb);
}
@@ -714,6 +743,23 @@
DLEAVE_FUNCTION(DLEVEL_STABLE);
}
+void ewl_embed_configure_cb(Ewl_Widget * w, void *ev_data, void *user_data)
+{
+ Ewl_Embed *emb = EWL_EMBED(w);
+
+ DENTER_FUNCTION(DLEVEL_STABLE);
+ DCHECK_PARAM_PTR("w", w);
+
+ if (emb->ev_clip) {
+ evas_object_move(emb->ev_clip, (Evas_Coord)(CURRENT_X(w)),
+ (Evas_Coord)(CURRENT_Y(w)));
+ evas_object_resize(emb->ev_clip, (Evas_Coord)(CURRENT_W(w)),
+ (Evas_Coord)(CURRENT_H(w)));
+ }
+
+ DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
void ewl_embed_destroy_cb(Ewl_Widget * w, void *ev_data, void *user_data)
{
Ewl_Embed *emb;
@@ -923,7 +969,7 @@
DENTER_FUNCTION(DLEVEL_STABLE);
- embed = evas_object_smart_data_get(obj);
+ embed = data;
ewl_embed_feed_mouse_out(embed, ev->canvas.x, ev->canvas.y,
ewl_ev_get_modifiers());
@@ -939,7 +985,7 @@
DENTER_FUNCTION(DLEVEL_STABLE);
- embed = evas_object_smart_data_get(obj);
+ embed = data;
ewl_embed_feed_mouse_down(embed, ev->button, 1, ev->canvas.x,
ev->canvas.y, ewl_ev_get_modifiers());
@@ -955,7 +1001,7 @@
DENTER_FUNCTION(DLEVEL_STABLE);
- embed = evas_object_smart_data_get(obj);
+ embed = data;
ewl_embed_feed_mouse_up(embed, ev->button, ev->canvas.x,
ev->canvas.y, ewl_ev_get_modifiers());
@@ -971,7 +1017,7 @@
DENTER_FUNCTION(DLEVEL_STABLE);
- embed = evas_object_smart_data_get(obj);
+ embed = data;
ewl_embed_feed_mouse_move(embed, ev->canvas.x, ev->canvas.y,
ewl_ev_get_modifiers());
@@ -996,7 +1042,7 @@
DENTER_FUNCTION(DLEVEL_STABLE);
- embed = evas_object_smart_data_get(obj);
+ embed = data;
ewl_embed_feed_key_down(embed, ev->keyname, ewl_ev_get_modifiers());
DLEAVE_FUNCTION(DLEVEL_STABLE);
@@ -1011,7 +1057,7 @@
DENTER_FUNCTION(DLEVEL_STABLE);
- embed = evas_object_smart_data_get(obj);
+ embed = data;
ewl_embed_feed_key_up(embed, ev->keyname, ewl_ev_get_modifiers());
DLEAVE_FUNCTION(DLEVEL_STABLE);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- ewl_embed.h 28 Apr 2004 18:05:01 -0000 1.21
+++ ewl_embed.h 6 May 2004 15:43:11 -0000 1.22
@@ -39,13 +39,18 @@
void *evas_window; /**< The window holding the evas. */
Evas_Object *smart; /**< Object to manipulate Ewl_Embed from evas */
- Ecore_List *tab_order; /**< Order of widgets to send focus on tab */
+ Evas_Object *ev_clip; /**< Clip box to receive evas events */
+ Ecore_List *tab_order; /**< Order of widgets to send focus on tab */
+
+ int max_layer; /**< The maximum widget layer used */
};
Ewl_Widget *ewl_embed_new(void);
int ewl_embed_init(Ewl_Embed * win);
Evas_Object *ewl_embed_set_evas(Ewl_Embed *emb, Evas *evas,
void *evas_window);
+int ewl_embed_get_max_layer(Ewl_Embed *embed);
+void ewl_embed_set_max_layer(Ewl_Embed *embed, int layer);
void ewl_embed_feed_key_down(Ewl_Embed *embed, char *keyname,
unsigned int modifiers);
void ewl_embed_feed_key_up(Ewl_Embed *embed, char *keyname,
@@ -72,6 +77,7 @@
*/
void ewl_embed_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
void ewl_embed_unrealize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
+void ewl_embed_configure_cb(Ewl_Widget * w, void *ev_data, void *user_data);
void ewl_embed_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
/**
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_widget.c,v
retrieving revision 1.112
retrieving revision 1.113
diff -u -3 -r1.112 -r1.113
--- ewl_widget.c 2 May 2004 19:44:10 -0000 1.112
+++ ewl_widget.c 6 May 2004 15:43:11 -0000 1.113
@@ -1009,9 +1009,13 @@
evas_object_pass_events_set(w->fx_clip_box, TRUE);
}
- if (w->fx_clip_box)
- evas_object_layer_set(w->fx_clip_box,
- ewl_widget_get_layer_sum(w));
+ if (w->fx_clip_box) {
+ int sum;
+ sum = ewl_widget_get_layer_sum(w);
+ if (sum > ewl_embed_get_max_layer(emb))
+ ewl_embed_set_max_layer(emb, sum);
+ evas_object_layer_set(w->fx_clip_box, sum);
+ }
pc = EWL_CONTAINER(w->parent);
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs