forked from enlightenment/efl
and support password mode and proper focus on click
SVN revision: 36958
This commit is contained in:
parent
1da0b4df76
commit
a3ad00322f
|
@ -146,6 +146,7 @@ collections {
|
||||||
type: RECT;
|
type: RECT;
|
||||||
mouse_events: 0;
|
mouse_events: 0;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
visible: 0;
|
visible: 0;
|
||||||
min: 17 17;
|
min: 17 17;
|
||||||
align: 1.0 0.0;
|
align: 1.0 0.0;
|
||||||
|
@ -184,6 +185,7 @@ collections {
|
||||||
confine: "sb_vbar";
|
confine: "sb_vbar";
|
||||||
}
|
}
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
min: 17 17;
|
min: 17 17;
|
||||||
rel1 {
|
rel1 {
|
||||||
relative: 0.5 0.5;
|
relative: 0.5 0.5;
|
||||||
|
@ -241,6 +243,7 @@ collections {
|
||||||
type: RECT;
|
type: RECT;
|
||||||
mouse_events: 0;
|
mouse_events: 0;
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
visible: 0;
|
visible: 0;
|
||||||
min: 17 17;
|
min: 17 17;
|
||||||
align: 0.0 1.0;
|
align: 0.0 1.0;
|
||||||
|
@ -279,6 +282,7 @@ collections {
|
||||||
confine: "sb_hbar";
|
confine: "sb_hbar";
|
||||||
}
|
}
|
||||||
description { state: "default" 0.0;
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
min: 17 17;
|
min: 17 17;
|
||||||
rel1 {
|
rel1 {
|
||||||
relative: 0.5 0.5;
|
relative: 0.5 0.5;
|
||||||
|
@ -2767,6 +2771,76 @@ collections {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
group { name: "elm/entry/base-single/default";
|
||||||
|
styles
|
||||||
|
{
|
||||||
|
style { name: "entry_single_textblock_style";
|
||||||
|
base: "font=Sans font_size=10 align=left color=#000 wrap=none";
|
||||||
|
// tag: "br" "\n";
|
||||||
|
// tag: "tab" "\t";
|
||||||
|
tag: "em" "+ font=Sans:style=Oblique";
|
||||||
|
tag: "b" "+ font=Sans:style=Bold";
|
||||||
|
tag: "link" "+ color=#800 underline=on underline_color=#8008";
|
||||||
|
tag: "hilight" "+ font=Sans:style=Bold";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
mouse_events: 1;
|
||||||
|
scale: 1;
|
||||||
|
entry_mode: EDITABLE;
|
||||||
|
multiline: 0;
|
||||||
|
source: "elm/entry/selection/default"; // selection under
|
||||||
|
source4: "elm/entry/cursor/default"; // cursorover
|
||||||
|
source5: "elm/entry/anchor/default"; // anchor under
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
text {
|
||||||
|
style: "entry_single_textblock_style";
|
||||||
|
min: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "focus";
|
||||||
|
signal: "load";
|
||||||
|
source: "";
|
||||||
|
action: FOCUS_SET;
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group { name: "elm/entry/base-password/default";
|
||||||
|
parts {
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
mouse_events: 1;
|
||||||
|
scale: 1;
|
||||||
|
entry_mode: PASSOWRD;
|
||||||
|
multiline: 0;
|
||||||
|
source: "elm/entry/selection/default"; // selection under
|
||||||
|
source4: "elm/entry/cursor/default"; // cursorover
|
||||||
|
source5: "elm/entry/anchor/default"; // anchor under
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
text {
|
||||||
|
style: "entry_single_textblock_style";
|
||||||
|
min: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "focus";
|
||||||
|
signal: "load";
|
||||||
|
source: "";
|
||||||
|
action: FOCUS_SET;
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
group { name: "elm/entry/cursor/default";
|
group { name: "elm/entry/cursor/default";
|
||||||
images {
|
images {
|
||||||
image: "cur_box.png" COMP;
|
image: "cur_box.png" COMP;
|
||||||
|
|
|
@ -757,6 +757,38 @@ my_bt_14(void *data, Evas_Object *obj, void *event_info)
|
||||||
elm_win_resize_object_add(win, bx);
|
elm_win_resize_object_add(win, bx);
|
||||||
evas_object_show(bx);
|
evas_object_show(bx);
|
||||||
|
|
||||||
|
sc = elm_scroller_add(win);
|
||||||
|
elm_scroller_content_min_limit(sc, 0, 1);
|
||||||
|
evas_object_size_hint_weight_set(sc, 1.0, 0.0);
|
||||||
|
evas_object_size_hint_align_set(sc, -1.0, -1.0);
|
||||||
|
elm_box_pack_end(bx, sc);
|
||||||
|
|
||||||
|
en = elm_entry_add(win);
|
||||||
|
elm_entry_single_line_set(en, 1);
|
||||||
|
elm_entry_entry_set(en, "This is a single line");
|
||||||
|
evas_object_size_hint_weight_set(en, 1.0, 1.0);
|
||||||
|
evas_object_size_hint_align_set(en, -1.0, -1.0);
|
||||||
|
elm_scroller_content_set(sc, en);
|
||||||
|
evas_object_show(en);
|
||||||
|
|
||||||
|
evas_object_show(sc);
|
||||||
|
|
||||||
|
sc = elm_scroller_add(win);
|
||||||
|
elm_scroller_content_min_limit(sc, 0, 1);
|
||||||
|
evas_object_size_hint_weight_set(sc, 1.0, 0.0);
|
||||||
|
evas_object_size_hint_align_set(sc, -1.0, -1.0);
|
||||||
|
elm_box_pack_end(bx, sc);
|
||||||
|
|
||||||
|
en = elm_entry_add(win);
|
||||||
|
elm_entry_password_set(en, 1);
|
||||||
|
elm_entry_entry_set(en, "Password here");
|
||||||
|
evas_object_size_hint_weight_set(en, 1.0, 1.0);
|
||||||
|
evas_object_size_hint_align_set(en, -1.0, -1.0);
|
||||||
|
elm_scroller_content_set(sc, en);
|
||||||
|
evas_object_show(en);
|
||||||
|
|
||||||
|
evas_object_show(sc);
|
||||||
|
|
||||||
sc = elm_scroller_add(win);
|
sc = elm_scroller_add(win);
|
||||||
evas_object_size_hint_weight_set(sc, 1.0, 1.0);
|
evas_object_size_hint_weight_set(sc, 1.0, 1.0);
|
||||||
evas_object_size_hint_align_set(sc, -1.0, -1.0);
|
evas_object_size_hint_align_set(sc, -1.0, -1.0);
|
||||||
|
@ -771,7 +803,7 @@ my_bt_14(void *data, Evas_Object *obj, void *event_info)
|
||||||
"in here to edit it. By the way, links are<br>"
|
"in here to edit it. By the way, links are<br>"
|
||||||
"called <a href=anc-02>Anchors</a> so you will need<br>"
|
"called <a href=anc-02>Anchors</a> so you will need<br>"
|
||||||
"to refer to them this way. At the end here is a really long line to test line wrapping to see if it works. But just in case this line is not long enough I will add more here to really test it out, as Elementary really needs some good testing to see if entry widgets work as advertised.");
|
"to refer to them this way. At the end here is a really long line to test line wrapping to see if it works. But just in case this line is not long enough I will add more here to really test it out, as Elementary really needs some good testing to see if entry widgets work as advertised.");
|
||||||
evas_object_size_hint_weight_set(en, 1.0, 0.0);
|
evas_object_size_hint_weight_set(en, 1.0, 1.0);
|
||||||
evas_object_size_hint_align_set(en, -1.0, -1.0);
|
evas_object_size_hint_align_set(en, -1.0, -1.0);
|
||||||
elm_scroller_content_set(sc, en);
|
elm_scroller_content_set(sc, en);
|
||||||
evas_object_show(en);
|
evas_object_show(en);
|
||||||
|
@ -865,7 +897,7 @@ my_bt_15(void *data, Evas_Object *obj, void *event_info)
|
||||||
evas_object_show(bx);
|
evas_object_show(bx);
|
||||||
|
|
||||||
np = elm_notepad_add(win);
|
np = elm_notepad_add(win);
|
||||||
elm_notepad_file_set(np, "note.txt", ELM_TEXT_FORMAT_MARKUP_UTF8);
|
elm_notepad_file_set(np, "note.txt", ELM_TEXT_FORMAT_PLAIN_UTF8);
|
||||||
evas_object_size_hint_weight_set(np, 1.0, 1.0);
|
evas_object_size_hint_weight_set(np, 1.0, 1.0);
|
||||||
evas_object_size_hint_align_set(np, -1.0, -1.0);
|
evas_object_size_hint_align_set(np, -1.0, -1.0);
|
||||||
elm_box_pack_end(bx, np);
|
elm_box_pack_end(bx, np);
|
||||||
|
|
|
@ -127,6 +127,7 @@ extern "C" {
|
||||||
|
|
||||||
EAPI Evas_Object *elm_scroller_add(Evas_Object *parent);
|
EAPI Evas_Object *elm_scroller_add(Evas_Object *parent);
|
||||||
EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child);
|
EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child);
|
||||||
|
EAPI void elm_scroller_content_min_limit(Evas_Object *obj, Evas_Bool w, Evas_Bool h);
|
||||||
/* smart callbacks called:
|
/* smart callbacks called:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -183,6 +184,8 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
EAPI Evas_Object *elm_entry_add(Evas_Object *parent);
|
EAPI Evas_Object *elm_entry_add(Evas_Object *parent);
|
||||||
|
EAPI void elm_entry_single_line_set(Evas_Object *obj, Evas_Bool single_line);
|
||||||
|
EAPI void elm_entry_password_set(Evas_Object *obj, Evas_Bool password);
|
||||||
EAPI void elm_entry_entry_set(Evas_Object *obj, const char *entry);
|
EAPI void elm_entry_entry_set(Evas_Object *obj, const char *entry);
|
||||||
EAPI const char *elm_entry_entry_get(Evas_Object *obj);
|
EAPI const char *elm_entry_entry_get(Evas_Object *obj);
|
||||||
EAPI const char *elm_entry_selection_get(Evas_Object *obj);
|
EAPI const char *elm_entry_selection_get(Evas_Object *obj);
|
||||||
|
@ -198,6 +201,7 @@ extern "C" {
|
||||||
* "selection,cut" - the user cut the text
|
* "selection,cut" - the user cut the text
|
||||||
* "cursor,changed" - the cursor changed position
|
* "cursor,changed" - the cursor changed position
|
||||||
* "anchor,X,clicked,N" - achor called 'X' was clicked with button 'N'
|
* "anchor,X,clicked,N" - achor called 'X' was clicked with button 'N'
|
||||||
|
* "activated" - when the enter key is pressed (useful for single line)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* composite widgets - these basically put together basic widgets above
|
/* composite widgets - these basically put together basic widgets above
|
||||||
|
|
|
@ -131,7 +131,6 @@ _load_plain_utf8(const char *file)
|
||||||
char str[16];
|
char str[16];
|
||||||
|
|
||||||
escape = evas_textblock_string_escape_get(buf + ppos, &stlen);
|
escape = evas_textblock_string_escape_get(buf + ppos, &stlen);
|
||||||
printf("esc = %s\n", escape);
|
|
||||||
if (escape)
|
if (escape)
|
||||||
text = _buf_append(text, escape, &len, &alloc);
|
text = _buf_append(text, escape, &len, &alloc);
|
||||||
else
|
else
|
||||||
|
@ -198,7 +197,6 @@ _save_markup_utf8(const char *file, const char *text)
|
||||||
fputs(text, f); // FIXME: catch error
|
fputs(text, f); // FIXME: catch error
|
||||||
fputs("\n", f); // FIXME: catch error
|
fputs("\n", f); // FIXME: catch error
|
||||||
fclose(f);
|
fclose(f);
|
||||||
printf(".. written\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -316,7 +314,6 @@ _save(Evas_Object *obj)
|
||||||
_save_plain_utf8(wd->file, elm_entry_entry_get(wd->entry));
|
_save_plain_utf8(wd->file, elm_entry_entry_get(wd->entry));
|
||||||
break;
|
break;
|
||||||
case ELM_TEXT_FORMAT_MARKUP_UTF8:
|
case ELM_TEXT_FORMAT_MARKUP_UTF8:
|
||||||
printf(".. save markup\n");
|
|
||||||
_save_markup_utf8(wd->file, elm_entry_entry_get(wd->entry));
|
_save_markup_utf8(wd->file, elm_entry_entry_get(wd->entry));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -328,7 +325,6 @@ static int
|
||||||
_delay_write(void *data)
|
_delay_write(void *data)
|
||||||
{
|
{
|
||||||
Widget_Data *wd = elm_widget_data_get(data);
|
Widget_Data *wd = elm_widget_data_get(data);
|
||||||
printf(".. save\n");
|
|
||||||
_save(data);
|
_save(data);
|
||||||
wd->delay_write = NULL;
|
wd->delay_write = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -338,7 +334,6 @@ static void
|
||||||
_entry_changed(void *data, Evas_Object *obj, void *event_info)
|
_entry_changed(void *data, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
Widget_Data *wd = elm_widget_data_get(data);
|
Widget_Data *wd = elm_widget_data_get(data);
|
||||||
printf(".. changed\n");
|
|
||||||
if (wd->delay_write)
|
if (wd->delay_write)
|
||||||
{
|
{
|
||||||
ecore_timer_del(wd->delay_write);
|
ecore_timer_del(wd->delay_write);
|
||||||
|
|
|
@ -7,8 +7,10 @@ struct _Widget_Data
|
||||||
{
|
{
|
||||||
Evas_Object *ent;
|
Evas_Object *ent;
|
||||||
Evas_Coord lastw;
|
Evas_Coord lastw;
|
||||||
Evas_Bool changed;
|
Evas_Bool changed : 1;
|
||||||
Evas_Bool linewrap;
|
Evas_Bool linewrap : 1;
|
||||||
|
Evas_Bool single_line : 1;
|
||||||
|
Evas_Bool password : 1;
|
||||||
Ecore_Job *deferred_recalc_job;
|
Ecore_Job *deferred_recalc_job;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -218,6 +220,13 @@ _signal_anchor_out(void *data, Evas_Object *obj, const char *emission, const cha
|
||||||
printf("OUT %s\n", emission);
|
printf("OUT %s\n", emission);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_signal_key_enter(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||||
|
{
|
||||||
|
Widget_Data *wd = elm_widget_data_get(data);
|
||||||
|
evas_object_smart_callback_call(data, "activated", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI Evas_Object *
|
EAPI Evas_Object *
|
||||||
elm_entry_add(Evas_Object *parent)
|
elm_entry_add(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
|
@ -252,10 +261,47 @@ elm_entry_add(Evas_Object *parent)
|
||||||
edje_object_signal_callback_add(wd->ent, "anchor,mouse,move,*", "elm.text", _signal_anchor_move, obj);
|
edje_object_signal_callback_add(wd->ent, "anchor,mouse,move,*", "elm.text", _signal_anchor_move, obj);
|
||||||
edje_object_signal_callback_add(wd->ent, "anchor,mouse,in,*", "elm.text", _signal_anchor_in, obj);
|
edje_object_signal_callback_add(wd->ent, "anchor,mouse,in,*", "elm.text", _signal_anchor_in, obj);
|
||||||
edje_object_signal_callback_add(wd->ent, "anchor,mouse,out,*", "elm.text", _signal_anchor_out, obj);
|
edje_object_signal_callback_add(wd->ent, "anchor,mouse,out,*", "elm.text", _signal_anchor_out, obj);
|
||||||
|
edje_object_signal_callback_add(wd->ent, "entry,key,enter", "elm.text", _signal_key_enter, obj);
|
||||||
elm_widget_resize_object_set(obj, wd->ent);
|
elm_widget_resize_object_set(obj, wd->ent);
|
||||||
|
evas_object_propagate_events_set(obj, 0);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
elm_entry_single_line_set(Evas_Object *obj, Evas_Bool single_line)
|
||||||
|
{
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
char *t;
|
||||||
|
if (wd->single_line == single_line) return;
|
||||||
|
wd->single_line = single_line;
|
||||||
|
wd->linewrap = 0;
|
||||||
|
t = elm_entry_entry_get(obj);
|
||||||
|
if (t) t = strdup(t);
|
||||||
|
if (!wd->single_line) _elm_theme_set(wd->ent, "entry", "base", "default");
|
||||||
|
else _elm_theme_set(wd->ent, "entry", "base-single", "default");
|
||||||
|
elm_entry_entry_set(obj, t);
|
||||||
|
if (t) free(t);
|
||||||
|
_sizing_eval(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
elm_entry_password_set(Evas_Object *obj, Evas_Bool password)
|
||||||
|
{
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
char *t;
|
||||||
|
if (wd->password == password) return;
|
||||||
|
wd->password = password;
|
||||||
|
wd->single_line = 1;
|
||||||
|
wd->linewrap = 0;
|
||||||
|
t = elm_entry_entry_get(obj);
|
||||||
|
if (t) t = strdup(t);
|
||||||
|
if (!wd->password) _elm_theme_set(wd->ent, "entry", "base", "default");
|
||||||
|
else _elm_theme_set(wd->ent, "entry", "base-password", "default");
|
||||||
|
elm_entry_entry_set(obj, t);
|
||||||
|
if (t) free(t);
|
||||||
|
_sizing_eval(obj);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
elm_entry_entry_set(Evas_Object *obj, const char *entry)
|
elm_entry_entry_set(Evas_Object *obj, const char *entry)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,8 @@ struct _Widget_Data
|
||||||
{
|
{
|
||||||
Evas_Object *scr;
|
Evas_Object *scr;
|
||||||
Evas_Object *content;
|
Evas_Object *content;
|
||||||
|
Evas_Bool min_w : 1;
|
||||||
|
Evas_Bool min_h : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void _del_hook(Evas_Object *obj);
|
static void _del_hook(Evas_Object *obj);
|
||||||
|
@ -34,7 +36,7 @@ static void
|
||||||
_sizing_eval(Evas_Object *obj)
|
_sizing_eval(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
Widget_Data *wd = elm_widget_data_get(obj);
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
Evas_Coord vw, vh, minw, minh, maxw, maxh;
|
Evas_Coord vw, vh, minw, minh, maxw, maxh, w, h, vmw, vmh;
|
||||||
double xw, xy;
|
double xw, xy;
|
||||||
|
|
||||||
evas_object_size_hint_min_get(wd->content, &minw, &minh);
|
evas_object_size_hint_min_get(wd->content, &minw, &minh);
|
||||||
|
@ -54,6 +56,12 @@ _sizing_eval(Evas_Object *obj)
|
||||||
}
|
}
|
||||||
else if (minh > 0) vh = minh;
|
else if (minh > 0) vh = minh;
|
||||||
evas_object_resize(wd->content, vw, vh);
|
evas_object_resize(wd->content, vw, vh);
|
||||||
|
w = -1;
|
||||||
|
h = -1;
|
||||||
|
edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &vmw, &vmh);
|
||||||
|
if (wd->min_w) w = vmw + minw;
|
||||||
|
if (wd->min_h) h = vmh + minh;
|
||||||
|
evas_object_size_hint_min_set(obj, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -99,8 +107,8 @@ elm_scroller_add(Evas_Object *parent)
|
||||||
|
|
||||||
wd->scr = elm_smart_scroller_add(e);
|
wd->scr = elm_smart_scroller_add(e);
|
||||||
elm_widget_resize_object_set(obj, wd->scr);
|
elm_widget_resize_object_set(obj, wd->scr);
|
||||||
|
|
||||||
edje_object_size_min_calc(wd->scr, &minw, &minh);
|
edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr), &minw, &minh);
|
||||||
evas_object_size_hint_min_set(obj, minw, minh);
|
evas_object_size_hint_min_set(obj, minw, minh);
|
||||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
|
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
|
||||||
|
|
||||||
|
@ -127,3 +135,12 @@ elm_scroller_content_set(Evas_Object *obj, Evas_Object *content)
|
||||||
_sizing_eval(obj);
|
_sizing_eval(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
elm_scroller_content_min_limit(Evas_Object *obj, Evas_Bool w, Evas_Bool h)
|
||||||
|
{
|
||||||
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
|
wd->min_w = w;
|
||||||
|
wd->min_h = h;
|
||||||
|
_sizing_eval(obj);
|
||||||
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ typedef struct _Smart_Data Smart_Data;
|
||||||
|
|
||||||
struct _Smart_Data
|
struct _Smart_Data
|
||||||
{
|
{
|
||||||
|
Evas_Object *obj;
|
||||||
Evas_Object *parent_obj;
|
Evas_Object *parent_obj;
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
Evas_List *subobjs;
|
Evas_List *subobjs;
|
||||||
|
@ -56,6 +57,14 @@ _sub_obj_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
else sd->subobjs = evas_list_remove(sd->subobjs, obj);
|
else sd->subobjs = evas_list_remove(sd->subobjs, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_sub_obj_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
|
{
|
||||||
|
Smart_Data *sd = data;
|
||||||
|
if (obj == sd->resize_obj)
|
||||||
|
elm_widget_focus_set(sd->obj, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
EAPI Evas_Object *
|
EAPI Evas_Object *
|
||||||
elm_widget_add(Evas *evas)
|
elm_widget_add(Evas *evas)
|
||||||
|
@ -170,6 +179,7 @@ elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj)
|
||||||
if (sd->resize_obj)
|
if (sd->resize_obj)
|
||||||
{
|
{
|
||||||
evas_object_event_callback_del(sd->resize_obj, EVAS_CALLBACK_DEL, _sub_obj_del);
|
evas_object_event_callback_del(sd->resize_obj, EVAS_CALLBACK_DEL, _sub_obj_del);
|
||||||
|
evas_object_event_callback_del(sd->resize_obj, EVAS_CALLBACK_MOUSE_DOWN, _sub_obj_mouse_down);
|
||||||
evas_object_smart_member_del(sd->resize_obj);
|
evas_object_smart_member_del(sd->resize_obj);
|
||||||
}
|
}
|
||||||
sd->resize_obj = sobj;
|
sd->resize_obj = sobj;
|
||||||
|
@ -177,6 +187,7 @@ elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj)
|
||||||
{
|
{
|
||||||
evas_object_smart_member_add(sobj, obj);
|
evas_object_smart_member_add(sobj, obj);
|
||||||
evas_object_event_callback_add(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd);
|
evas_object_event_callback_add(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd);
|
||||||
|
evas_object_event_callback_add(sobj, EVAS_CALLBACK_MOUSE_DOWN, _sub_obj_mouse_down, sd);
|
||||||
_smart_reconfigure(sd);
|
_smart_reconfigure(sd);
|
||||||
evas_object_smart_callback_call(obj, "sub-object-add", sobj);
|
evas_object_smart_callback_call(obj, "sub-object-add", sobj);
|
||||||
}
|
}
|
||||||
|
@ -520,6 +531,7 @@ _smart_add(Evas_Object *obj)
|
||||||
|
|
||||||
sd = calloc(1, sizeof(Smart_Data));
|
sd = calloc(1, sizeof(Smart_Data));
|
||||||
if (!sd) return;
|
if (!sd) return;
|
||||||
|
sd->obj = obj;
|
||||||
sd->x = 0;
|
sd->x = 0;
|
||||||
sd->y = 0;
|
sd->y = 0;
|
||||||
sd->w = 0;
|
sd->w = 0;
|
||||||
|
|
Loading…
Reference in New Issue