From: Hyoyoung Chang <hyoyoung.chang@samsung.com>
Subject: [E-devel] [patch] elm_cnp_helper - adding paragraph separator(<ps>) handling Date: Fri, 05 Aug 2011 13:09:41 +0900 Dear developers. This patch is about elm_cnp_helper. When using elm_entry, sometimes newline isn't copied. That's because <ps> tag. It's represent of 'paragraph separator'. (Other case is using <br>. It works well) I just adding <ps> handling for separated paragraph. SVN revision: 62153
This commit is contained in:
parent
7460ae79e8
commit
79dfcb5d6a
|
@ -78,7 +78,7 @@ struct _Cnp_Selection
|
||||||
struct _Escape
|
struct _Escape
|
||||||
{
|
{
|
||||||
const char *escape;
|
const char *escape;
|
||||||
const char value;
|
const char *value;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Tmp_Info
|
struct _Tmp_Info
|
||||||
|
@ -147,16 +147,19 @@ static int vcard_receive(Cnp_Selection *sed, Ecore_X_Event_Selection_Notify *not
|
||||||
|
|
||||||
static Eina_Bool pasteimage_append(char *file, Evas_Object *entry);
|
static Eina_Bool pasteimage_append(char *file, Evas_Object *entry);
|
||||||
|
|
||||||
|
#define _PARAGRAPH_SEPARATOR "\xE2\x80\xA9"
|
||||||
|
|
||||||
/* Optimisation: Turn this into a 256 byte table:
|
/* Optimisation: Turn this into a 256 byte table:
|
||||||
* then can lookup in one index, not N checks */
|
* then can lookup in one index, not N checks */
|
||||||
static const Escape escapes[] = {
|
static const Escape escapes[] = {
|
||||||
{ "<br>", '\n' },
|
{ "<ps>", _PARAGRAPH_SEPARATOR },
|
||||||
{ "<\t>", '\t' },
|
{ "<br>", "\n" },
|
||||||
{ "gt;", '>' },
|
{ "<\t>", "\t" },
|
||||||
{ "lt;", '<' },
|
{ "gt;", ">" },
|
||||||
{ "amp;", '&' },
|
{ "lt;", "<" },
|
||||||
{ "quot;", '\'' },
|
{ "amp;", "&" },
|
||||||
{ "dquot;", '"' }
|
{ "quot;", "\'" },
|
||||||
|
{ "dquot;", "\"" }
|
||||||
};
|
};
|
||||||
#define N_ESCAPES ((int)(sizeof(escapes) / sizeof(escapes[0])))
|
#define N_ESCAPES ((int)(sizeof(escapes) / sizeof(escapes[0])))
|
||||||
|
|
||||||
|
@ -1035,7 +1038,7 @@ remove_tags(const char *p, int *len)
|
||||||
int i;
|
int i;
|
||||||
if (!p) return NULL;
|
if (!p) return NULL;
|
||||||
|
|
||||||
q = malloc(strlen(p) + 1);
|
q = malloc(strlen(p)+1);
|
||||||
if (!q) return NULL;
|
if (!q) return NULL;
|
||||||
ret = q;
|
ret = q;
|
||||||
|
|
||||||
|
@ -1047,6 +1050,11 @@ remove_tags(const char *p, int *len)
|
||||||
if ((p[1] == 'b') && (p[2] == 'r') &&
|
if ((p[1] == 'b') && (p[2] == 'r') &&
|
||||||
((p[3] == ' ') || (p[3] == '/') || (p[3] == '>')))
|
((p[3] == ' ') || (p[3] == '/') || (p[3] == '>')))
|
||||||
*q++ = '\n';
|
*q++ = '\n';
|
||||||
|
else if ((p[1] == 'p') && (p[2] == 's') && (p[3] == '>'))
|
||||||
|
{
|
||||||
|
strcpy(q, _PARAGRAPH_SEPARATOR);
|
||||||
|
q += (sizeof(_PARAGRAPH_SEPARATOR)-1);
|
||||||
|
}
|
||||||
while ((*p) && (*p != '>')) p++;
|
while ((*p) && (*p != '>')) p++;
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
|
@ -1058,8 +1066,8 @@ remove_tags(const char *p, int *len)
|
||||||
if (!strncmp(p,escapes[i].escape, strlen(escapes[i].escape)))
|
if (!strncmp(p,escapes[i].escape, strlen(escapes[i].escape)))
|
||||||
{
|
{
|
||||||
p += strlen(escapes[i].escape);
|
p += strlen(escapes[i].escape);
|
||||||
*q = escapes[i].value;
|
strcpy(q, escapes[i].value);
|
||||||
q++;
|
q += strlen(escapes[i].value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1087,9 +1095,10 @@ mark_up(const char *start, int inlen, int *lenp)
|
||||||
{
|
{
|
||||||
for (i = 0 ; i < N_ESCAPES ; i ++)
|
for (i = 0 ; i < N_ESCAPES ; i ++)
|
||||||
{
|
{
|
||||||
if (*p == escapes[i].value)
|
if (*p == escapes[i].value[0])
|
||||||
{
|
{
|
||||||
l += strlen(escapes[i].escape);
|
if (!strncmp(p, escapes[i].value, strlen(escapes[i].value)))
|
||||||
|
l += strlen(escapes[i].escape);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1103,11 +1112,14 @@ mark_up(const char *start, int inlen, int *lenp)
|
||||||
{
|
{
|
||||||
for (i = 0; i < N_ESCAPES; i++)
|
for (i = 0; i < N_ESCAPES; i++)
|
||||||
{
|
{
|
||||||
if (*p == escapes[i].value)
|
if (*p == escapes[i].value[0])
|
||||||
{
|
{
|
||||||
strcpy(q, escapes[i].escape);
|
if (!strncmp(p, escapes[i].value, strlen(escapes[i].value)))
|
||||||
q += strlen(escapes[i].escape);
|
{
|
||||||
p ++;
|
strcpy(q, escapes[i].escape);
|
||||||
|
q += strlen(escapes[i].escape);
|
||||||
|
p += strlen(escapes[i].value);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue