raster pushed a commit to branch master.
commit 72e813bf2ae5d6434e198d0424fc38e7e6405982
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date: Sat Mar 23 15:50:16 2013 +0900
fix segv happiness in term tab sel.
---
TODO | 2 +-
src/bin/sel.c | 28 +++++++++++++++++++---------
2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/TODO b/TODO
index 6975c45..1de040a 100644
--- a/TODO
+++ b/TODO
@@ -3,7 +3,7 @@ make it a first-class terminal:
[ ] splits need to size only by steps in font size (elm feature)
[ ] split handles need to become invisible (elm theme)
-[ ] new term/split/cose buttons need proper icons
+[ ] new term/split/close buttons need proper icons
[ ] better info in tyls -m
[ ] tyls -b needs doing
[ ] blink and blink2 attributes need to be supported
diff --git a/src/bin/sel.c b/src/bin/sel.c
index 2bd80c7..9912629 100644
--- a/src/bin/sel.c
+++ b/src/bin/sel.c
@@ -357,12 +357,25 @@ _media_del_cb(void *data, Evas *e __UNUSED__, Evas_Object
*obj __UNUSED__, void
}
static void
+_entry_termio_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj
__UNUSED__, void *info __UNUSED__)
+{
+ Entry *en = data;
+ if (en->termio) evas_object_event_callback_add
+ (en->termio, EVAS_CALLBACK_DEL, _entry_termio_del_cb, en);
+ en->termio = NULL;
+}
+
+static void
_entry_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
void *info __UNUSED__)
{
Entry *en = data;
+ if (en->obj) evas_object_event_callback_del_full
+ (en->obj, EVAS_CALLBACK_DEL, _entry_del_cb, en);
en->obj = NULL;
if (en->termio)
{
+ evas_object_event_callback_del_full(en->termio, EVAS_CALLBACK_DEL,
+ _entry_termio_del_cb, en);
evas_object_smart_callback_del_full(en->termio, "title,change",
_title_cb, en);
evas_object_smart_callback_del_full(en->termio, "icon,change",
@@ -374,13 +387,6 @@ _entry_del_cb(void *data, Evas *e __UNUSED__, Evas_Object
*obj __UNUSED__, void
}
static void
-_entry_termio_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj
__UNUSED__, void *info __UNUSED__)
-{
- Entry *en = data;
- en->termio = NULL;
-}
-
-static void
_smart_add(Evas_Object *obj)
{
Sel *sd;
@@ -412,6 +418,8 @@ _smart_del(Evas_Object *obj)
{
if (en->termio)
{
+ evas_object_event_callback_del_full(en->termio, EVAS_CALLBACK_DEL,
+ _entry_termio_del_cb, en);
evas_object_smart_callback_del_full(en->termio, "title,change",
_title_cb, en);
evas_object_smart_callback_del_full(en->termio, "icon,change",
@@ -419,6 +427,8 @@ _smart_del(Evas_Object *obj)
evas_object_smart_callback_del_full(en->termio, "bell",
_bell_cb, en);
}
+ if (en->obj) evas_object_event_callback_del_full
+ (en->obj, EVAS_CALLBACK_DEL, _entry_del_cb, en);
if (en->obj) evas_object_del(en->obj);
if (en->media) evas_object_del(en->media);
evas_object_del(en->bg);
@@ -616,7 +626,7 @@ sel_entry_selected_set(Evas_Object *obj, Evas_Object
*entry, Eina_Bool keep_befo
}
if (!keep_before) en->selected_before = EINA_FALSE;
}
- _transit(obj, 0.3);
+ _transit(obj, 0.5);
}
void
@@ -625,7 +635,7 @@ sel_zoom(Evas_Object *obj, double zoom)
Sel *sd = evas_object_smart_data_get(obj);
if (!sd) return;
sd->zoom1 = zoom;
- _transit(obj, 0.3);
+ _transit(obj, 0.5);
}
void
--
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar