I've made a small patch to give to elm_label the same text wrapping
functionality that elm_entry has.

So a new API has been defined:
   EAPI void elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap);

Maybe it should be enabled by default, but for now I've kept the
previous implementation as the primary one.
From 3a336cfc8e0397c0f434fdda8760733ae4e5081e Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Trevi=C3=B1o=20-=203v1n0?= <m...@3v1n0.net>
Date: Tue, 15 Sep 2009 19:49:30 +0200
Subject: [PATCH] elm_label line wrap support

---
 data/themes/default.edc |   16 ++++++++++++++++
 src/lib/Elementary.h.in |    1 +
 src/lib/elm_label.c     |   17 +++++++++++++++++
 3 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/data/themes/default.edc b/data/themes/default.edc
index d215c81..edbe3eb 100644
--- a/data/themes/default.edc
+++ b/data/themes/default.edc
@@ -539,6 +539,22 @@ collections {
       }
    }
 
+   group { name: "elm/label/base_wrap/default";
+      parts {
+	 part { name: "elm.text";
+	    type: TEXTBLOCK;
+	    mouse_events: 0;
+	    scale: 1;
+	    description { state: "default" 0.0;
+	       text {
+		  style: "textblock_style";
+		  min: 0 0;
+	       }
+	    }
+	 }
+      }
+   }
+
 ///////////////////////////////////////////////////////////////////////////////
    group { name: "elm/button/base/default";
       images {
diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in
index cdd323a..c6d724a 100644
--- a/src/lib/Elementary.h.in
+++ b/src/lib/Elementary.h.in
@@ -353,6 +353,7 @@ extern "C" {
    EAPI Evas_Object *elm_label_add(Evas_Object *parent);
    EAPI void         elm_label_label_set(Evas_Object *obj, const char *label);
    EAPI const char  *elm_label_label_get(Evas_Object *obj);
+   EAPI void         elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap);
    /* smart callbacks called:
     */
 
diff --git a/src/lib/elm_label.c b/src/lib/elm_label.c
index c5c29bc..0e49ddf 100644
--- a/src/lib/elm_label.c
+++ b/src/lib/elm_label.c
@@ -7,6 +7,7 @@ struct _Widget_Data
 {
    Evas_Object *lbl;
    const char *label;
+   Eina_Bool linewrap : 1;
 };
 
 static void _del_hook(Evas_Object *obj);
@@ -59,6 +60,8 @@ elm_label_add(Evas_Object *parent)
    elm_widget_theme_hook_set(obj, _theme_hook);
    elm_widget_can_focus_set(obj, 0);
 
+   wd->linewrap = EINA_FALSE;
+
    wd->lbl = edje_object_add(e);
    _elm_theme_set(wd->lbl, "label", "base", "default");
    wd->label = eina_stringshare_add("<br>");
@@ -87,3 +90,17 @@ elm_label_label_get(Evas_Object *obj)
 
    return wd->label;
 }
+
+EAPI void
+elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   const char *t;
+   if (wd->linewrap == wrap) return;
+   wd->linewrap = wrap;
+   t = eina_stringshare_add(elm_label_label_get(obj));
+   _elm_theme_set(wd->lbl, "label", (wd->linewrap ? "base_wrap" : "base"), elm_widget_style_get(obj));
+   elm_label_label_set(obj, t);
+   eina_stringshare_del(t);
+   _sizing_eval(obj);
+}
-- 
1.6.0.4

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to