These patches fix wrong behavior in evas.ClippedSmartObject.
Cheers,
Eduardo Felipe.
From 711ac1e7e7bf9bfb8a68b42eeda983215cbe9d95 Mon Sep 17 00:00:00 2001
From: Eduardo Felipe Castegnaro <[email protected]>
Date: Tue, 25 Jan 2011 18:57:33 -0200
Subject: [PATCH 1/3] Add python bindings to
evas_object_smart_move_children_relative
---
.../python-evas/evas/evas.c_evas_object_smart.pxi | 16 +---------------
.../python/python-evas/include/evas/c_evas.pxd | 1 +
2 files changed, 2 insertions(+), 15 deletions(-)
diff --git a/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
b/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
index 449830c..4e57c86 100644
--- a/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
+++ b/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
@@ -536,21 +536,7 @@ cdef public class SmartObject(Object) [object
PyEvasSmartObject,
def move_children_relative(self, int dx, int dy):
"Move all children relatively."
- cdef Eina_List *lst, *itr
- cdef Evas_Object *o
- cdef int orig_x, orig_y
-
- if dx == 0 and dy == 0:
- return
-
- lst = evas_object_smart_members_get(self.obj)
- itr = lst
- while itr:
- o = <Evas_Object*>itr.data
- evas_object_geometry_get(o, &orig_x, &orig_y, NULL, NULL)
- evas_object_move(o, orig_x + dx, orig_y + dy)
- itr = itr.next
- eina_list_free(lst)
+ evas_object_smart_move_children_relative(self.obj, dx, dy)
def move(self, int x, int y):
"Default implementation to move all children."
diff --git a/BINDINGS/python/python-evas/include/evas/c_evas.pxd
b/BINDINGS/python/python-evas/include/evas/c_evas.pxd
index a86e17a..22fdbe5 100644
--- a/BINDINGS/python/python-evas/include/evas/c_evas.pxd
+++ b/BINDINGS/python/python-evas/include/evas/c_evas.pxd
@@ -706,6 +706,7 @@ cdef extern from "Evas.h":
void evas_object_smart_need_recalculate_set(Evas_Object *obj, int value)
int evas_object_smart_need_recalculate_get(const_Evas_Object *obj)
void evas_object_smart_calculate(Evas_Object *obj)
+ void evas_object_smart_move_children_relative(Evas_Object *obj, int dx,
int dy)
--
1.7.3.5
From 50db42bd643daab6292b21da94d38f6ce4434ffc Mon Sep 17 00:00:00 2001
From: Eduardo Felipe Castegnaro <[email protected]>
Date: Wed, 26 Jan 2011 14:12:52 -0200
Subject: [PATCH 2/3] Add python bindings to evas_object_static_clip_*
They are used on move_children_relative to ignore huge clippers.
---
.../python/python-evas/evas/evas.c_evas_object.pxi | 15 +++++++++++++++
.../python/python-evas/include/evas/c_evas.pxd | 3 +++
2 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/BINDINGS/python/python-evas/evas/evas.c_evas_object.pxi
b/BINDINGS/python/python-evas/evas/evas.c_evas_object.pxi
index 33159f9..092175b 100644
--- a/BINDINGS/python/python-evas/evas/evas.c_evas_object.pxi
+++ b/BINDINGS/python/python-evas/evas/evas.c_evas_object.pxi
@@ -1052,6 +1052,21 @@ cdef public class Object [object PyEvasObject, type
PyEvasObject_Type]:
def __set__(self, spec):
self.visible_set(spec)
+ def static_clip_get(self):
+ "@rtype: bool"
+ return bool(evas_object_static_clip_get(self.obj))
+
+ def static_clip_set(self, int value):
+ "Set a hint flag on the object that this is used as a static clipper."
+ evas_object_static_clip_set(self.obj, value)
+
+ property static_clip:
+ def __get__(self):
+ return self.static_clip_get()
+
+ def __set__(self, value):
+ self.static_clip_set(value)
+
def render_op_get(self):
"""Return the id of the operation used for rendering.
diff --git a/BINDINGS/python/python-evas/include/evas/c_evas.pxd
b/BINDINGS/python/python-evas/include/evas/c_evas.pxd
index 22fdbe5..e9f76a9 100644
--- a/BINDINGS/python/python-evas/include/evas/c_evas.pxd
+++ b/BINDINGS/python/python-evas/include/evas/c_evas.pxd
@@ -636,6 +636,9 @@ cdef extern from "Evas.h":
void evas_object_hide(Evas_Object *obj)
Eina_Bool evas_object_visible_get(const_Evas_Object *obj)
+ void evas_object_static_clip_set(Evas_Object *obj, Eina_Bool
is_static_clip)
+ Eina_Bool evas_object_static_clip_get(Evas_Object *obj)
+
void evas_object_render_op_set(Evas_Object *obj, Evas_Render_Op op)
Evas_Render_Op evas_object_render_op_get(const_Evas_Object *obj)
--
1.7.3.5
From edbedd4195c72168c2e9c20f5e8c6230697387bc Mon Sep 17 00:00:00 2001
From: Eduardo Felipe Castegnaro <[email protected]>
Date: Wed, 26 Jan 2011 14:16:03 -0200
Subject: [PATCH 3/3] Fix evas.ClippedSmartObject moving it's internal clipper
The clipper should be used to control visibility and color only, but
it was erroneously being moved along the object children during an
object.move_relative() call.
---
.../python-evas/evas/evas.c_evas_object_smart.pxi | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
b/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
index 4e57c86..8564974 100644
--- a/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
+++ b/BINDINGS/python/python-evas/evas/evas.c_evas_object_smart.pxi
@@ -716,8 +716,9 @@ cdef public class ClippedSmartObject(SmartObject) \
SmartObject.__init__(self, canvas, **kargs)
if self.clipper is None:
self.clipper = Rectangle(canvas)
- evas_object_move(self.clipper.obj, -10000, -10000);
- evas_object_resize(self.clipper.obj, 20000, 20000);
+ evas_object_move(self.clipper.obj, -100000, -100000);
+ evas_object_resize(self.clipper.obj, 200000, 200000);
+ evas_object_static_clip_set(self.clipper.obj, 1);
evas_object_pass_events_set(self.clipper.obj, 1);
evas_object_smart_member_add(self.clipper.obj, self.obj)
--
1.7.3.5
------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires
February 28th, so secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel