2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
4 #include <Elementary.h>
8 * @defgroup Scrolled_Entry Scrolled_Entry
11 * A scrolled entry is a convenience widget which shows
12 * a box that the user can enter text into. Unlike an
13 * @ref Entry widget, scrolled entries scroll with user
14 * input so that the window will not expand if the length
15 * of text inside the entry exceeds the initial size of the
18 * Signals that you can add callbacks for are:
19 * - "changed" - The text within the entry was changed
20 * - "activated" - The entry has received focus and the cursor
21 * - "press" - The entry has been clicked
22 * - "longpressed" - The entry has been clicked for a couple seconds
23 * - "clicked" - The entry has been clicked
24 * - "clicked,double" - The entry has been double clicked
25 * - "focused" - The entry has received focus
26 * - "unfocused" - The entry has lost focus
27 * - "selection,paste" - A paste action has occurred
28 * - "selection,copy" - A copy action has occurred
29 * - "selection,cut" - A cut action has occurred
30 * - "selection,start" - A selection has begun
31 * - "selection,changed" - The selection has changed
32 * - "selection,cleared" - The selection has been cleared
33 * - "cursor,changed" - The cursor has changed
34 * - "anchor,clicked" - The anchor has been clicked
37 typedef struct _Widget_Data Widget_Data;
41 Evas_Object *scroller;
43 Elm_Scroller_Policy policy_h, policy_v;
44 Eina_Bool single_line : 1;
47 static const char *widtype = NULL;
49 static const char SIG_CHANGED[] = "changed";
50 static const char SIG_ACTIVATED[] = "activated";
51 static const char SIG_PRESS[] = "press";
52 static const char SIG_LONGPRESSED[] = "longpressed";
53 static const char SIG_CLICKED[] = "clicked";
54 static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
55 static const char SIG_FOCUSED[] = "focused";
56 static const char SIG_UNFOCUSED[] = "unfocused";
57 static const char SIG_SELECTION_PASTE[] = "selection,paste";
58 static const char SIG_SELECTION_COPY[] = "selection,copy";
59 static const char SIG_SELECTION_CUT[] = "selection,cut";
60 static const char SIG_SELECTION_START[] = "selection,start";
61 static const char SIG_SELECTION_CHANGED[] = "selection,changed";
62 static const char SIG_SELECTION_CLEARED[] = "selection,cleared";
63 static const char SIG_CURSOR_CHANGED[] = "cursor,changed";
64 static const char SIG_ANCHOR_CLICKED[] = "anchor,clicked";
65 static const Evas_Smart_Cb_Description _signals[] = {
69 {SIG_LONGPRESSED, ""},
71 {SIG_CLICKED_DOUBLE, ""},
74 {SIG_SELECTION_PASTE, ""},
75 {SIG_SELECTION_COPY, ""},
76 {SIG_SELECTION_CUT, ""},
77 {SIG_SELECTION_START, ""},
78 {SIG_SELECTION_CHANGED, ""},
79 {SIG_SELECTION_CLEARED, ""},
80 {SIG_CURSOR_CHANGED, ""},
81 {SIG_ANCHOR_CLICKED, ""},
86 _del_hook(Evas_Object *obj)
88 Widget_Data *wd = elm_widget_data_get(obj);
94 _theme_hook(Evas_Object *obj)
96 Widget_Data *wd = elm_widget_data_get(obj);
98 elm_object_style_set(wd->entry, elm_widget_style_get(obj));
99 elm_object_style_set(wd->scroller, elm_widget_style_get(obj));
103 _sizing_eval(Evas_Object *obj)
105 Widget_Data *wd = elm_widget_data_get(obj);
106 Evas_Coord minw, minh, minw_scr, minh_scr;
109 evas_object_size_hint_min_get(obj, &minw, &minh);
110 evas_object_size_hint_min_get(wd->scroller, &minw_scr, &minh_scr);
111 if (minw < minw_scr) minw = minw_scr;
112 if (minh < minh_scr) minh = minh_scr;
114 evas_object_size_hint_min_set(obj, minw, minh);
117 evas_object_size_hint_max_set(obj, -1, minh);
119 evas_object_size_hint_max_set(obj, -1, -1);
123 _on_focus_hook(void *data __UNUSED__, Evas_Object *obj)
125 Widget_Data *wd = elm_widget_data_get(obj);
127 if (elm_widget_focus_get(obj))
128 elm_widget_focus_steal(wd->entry);
131 #ifdef HAVE_CONFORMANT_AUTOSCROLL
133 _imp_region_get_hook(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
135 Widget_Data *wd = elm_widget_data_get(obj);
137 elm_widget_imp_region_get(wd->entry, x, y, w, h);
143 _disable_hook(Evas_Object *obj)
145 Widget_Data *wd = elm_widget_data_get(obj);
147 elm_object_disabled_set(wd->entry, elm_widget_disabled_get(obj));
151 _signal_emit_hook(Evas_Object *obj, const char *emission, const char *source)
153 Widget_Data *wd = elm_widget_data_get(obj);
155 elm_object_signal_emit(wd->entry, emission, source);
156 elm_object_signal_emit(wd->scroller, emission, source);
161 _entry_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
164 evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
168 _entry_activated(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
170 evas_object_smart_callback_call(data, SIG_ACTIVATED, NULL);
174 _entry_press(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
176 evas_object_smart_callback_call(data, SIG_PRESS, NULL);
180 _entry_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
182 evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
186 _entry_clicked_double(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
188 evas_object_smart_callback_call(data, SIG_CLICKED_DOUBLE, NULL);
192 _entry_cursor_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
194 evas_object_smart_callback_call(data, SIG_CURSOR_CHANGED, NULL);
198 _entry_anchor_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
200 evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, NULL);
204 _entry_selection_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
206 evas_object_smart_callback_call(data, SIG_SELECTION_START, NULL);
210 _entry_selection_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
212 evas_object_smart_callback_call(data, SIG_SELECTION_CHANGED, NULL);
216 _entry_selection_cleared(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
218 evas_object_smart_callback_call(data, SIG_SELECTION_CLEARED, NULL);
222 _entry_selection_paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
224 evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
228 _entry_selection_copy(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
230 evas_object_smart_callback_call(data, SIG_SELECTION_COPY, NULL);
234 _entry_selection_cut(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
236 evas_object_smart_callback_call(data, SIG_SELECTION_CUT, NULL);
240 _entry_longpressed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
242 evas_object_smart_callback_call(data, SIG_LONGPRESSED, NULL);
246 _entry_focused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
248 evas_object_smart_callback_call(data, SIG_FOCUSED, NULL);
252 _entry_unfocused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
254 evas_object_smart_callback_call(data, SIG_UNFOCUSED, NULL);
258 _entry_maxlength_reached(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
260 evas_object_smart_callback_call(data, "maxlength,reached", NULL);
265 * This adds a scrolled entry to @p parent object.
267 * @param parent The parent object
268 * @return The new object or NULL if it cannot be created
270 * @ingroup Scrolled_Entry
273 elm_scrolled_entry_add(Evas_Object *parent)
279 wd = ELM_NEW(Widget_Data);
280 e = evas_object_evas_get(parent);
281 obj = elm_widget_add(e);
282 ELM_SET_WIDTYPE(widtype, "scrolled_entry");
283 elm_widget_type_set(obj, "scrolled_entry");
284 elm_widget_sub_object_add(parent, obj);
285 elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
286 elm_widget_data_set(obj, wd);
287 elm_widget_del_hook_set(obj, _del_hook);
288 elm_widget_disable_hook_set(obj, _disable_hook);
289 elm_widget_can_focus_set(obj, 1);
290 elm_widget_theme_hook_set(obj, _theme_hook);
291 elm_widget_signal_emit_hook_set(obj, _signal_emit_hook);
292 #ifdef HAVE_CONFORMANT_AUTOSCROLL
293 elm_widget_imp_region_get_hook_set(obj, _imp_region_get_hook, NULL);
296 wd->scroller = elm_scroller_add(parent);
297 elm_widget_resize_object_set(obj, wd->scroller);
298 elm_scroller_bounce_set(wd->scroller, 0, 0);
299 elm_scroller_propagate_events_set(wd->scroller, 1);
301 wd->entry = elm_entry_add(parent);
302 evas_object_size_hint_weight_set(wd->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
303 evas_object_size_hint_align_set(wd->entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
304 elm_scroller_content_set(wd->scroller, wd->entry);
305 evas_object_show(wd->entry);
307 evas_object_smart_callback_add(wd->entry, "changed", _entry_changed, obj);
308 evas_object_smart_callback_add(wd->entry, "activated", _entry_activated, obj);
309 evas_object_smart_callback_add(wd->entry, "press", _entry_press, obj);
310 evas_object_smart_callback_add(wd->entry, "clicked", _entry_clicked, obj);
311 evas_object_smart_callback_add(wd->entry, "clicked,double", _entry_clicked_double, obj);
312 evas_object_smart_callback_add(wd->entry, "cursor,changed", _entry_cursor_changed, obj);
313 evas_object_smart_callback_add(wd->entry, "anchor,clicked", _entry_anchor_clicked, obj);
314 evas_object_smart_callback_add(wd->entry, "selection,start", _entry_selection_start, obj);
315 evas_object_smart_callback_add(wd->entry, "selection,changed", _entry_selection_changed, obj);
316 evas_object_smart_callback_add(wd->entry, "selection,cleared", _entry_selection_cleared, obj);
317 evas_object_smart_callback_add(wd->entry, "selection,paste", _entry_selection_paste, obj);
318 evas_object_smart_callback_add(wd->entry, "selection,copy", _entry_selection_copy, obj);
319 evas_object_smart_callback_add(wd->entry, "selection,cut", _entry_selection_cut, obj);
320 evas_object_smart_callback_add(wd->entry, "longpressed", _entry_longpressed, obj);
321 evas_object_smart_callback_add(wd->entry, "focused", _entry_focused, obj);
322 evas_object_smart_callback_add(wd->entry, "unfocused", _entry_unfocused, obj);
323 evas_object_smart_callback_add(wd->entry, "maxlength,reached", _entry_maxlength_reached, obj);
327 // TODO: convert Elementary to subclassing of Evas_Smart_Class
328 // TODO: and save some bytes, making descriptions per-class and not instance!
329 evas_object_smart_callbacks_descriptions_set(obj, _signals);
334 * This sets the scrolled entry object not to line wrap. All input will
335 * be on a single line, and the entry box will scroll with user input.
337 * @param obj The scrolled entry object
338 * @param single_line If true, the text in the scrolled entry
339 * will be on a single line.
341 * @ingroup Scrolled_Entry
344 elm_scrolled_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line)
346 ELM_CHECK_WIDTYPE(obj, widtype);
347 Widget_Data *wd = elm_widget_data_get(obj);
349 if (wd->single_line == single_line) return;
350 elm_entry_single_line_set(wd->entry, single_line);
351 wd->single_line = single_line;
354 elm_scroller_policy_set(wd->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
355 elm_scroller_content_min_limit(wd->scroller, 0, 1);
359 elm_scroller_policy_set(wd->scroller, wd->policy_h, wd->policy_v);
360 elm_scroller_content_min_limit(wd->scroller, 0, 0);
366 * This returns true if the scrolled entry has been set to single line mode.
367 * See also elm_scrolled_entry_single_line_set().
369 * @param obj The scrolled entry object
370 * @return single_line If true, the text in the scrolled entry is set to display
373 * @ingroup Scrolled_Entry
376 elm_scrolled_entry_single_line_get(const Evas_Object *obj)
378 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
379 Widget_Data *wd = elm_widget_data_get(obj);
380 if (!wd) return EINA_FALSE;
381 return elm_entry_single_line_get(wd->entry);
386 * This sets the scrolled entry object to password mode. All text entered
387 * and/or displayed within the widget will be replaced with asterisks (*).
389 * @param obj The scrolled entry object
390 * @param password If true, password mode is enabled.
392 * @ingroup Scrolled_Entry
395 elm_scrolled_entry_password_set(Evas_Object *obj, Eina_Bool password)
397 ELM_CHECK_WIDTYPE(obj, widtype);
398 Widget_Data *wd = elm_widget_data_get(obj);
400 elm_entry_password_set(wd->entry, password);
404 * This returns whether password mode is enabled.
405 * See also elm_scrolled_entry_password_set().
407 * @param obj The scrolled entry object
408 * @return If true, the scrolled entry is set to display all characters
411 * @ingroup Scrolled_Entry
414 elm_scrolled_entry_password_get(const Evas_Object *obj)
416 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
417 Widget_Data *wd = elm_widget_data_get(obj);
418 if (!wd) return EINA_FALSE;
419 return elm_entry_password_get(wd->entry);
424 * This sets the text displayed within the scrolled entry to @p entry.
426 * @param obj The scrolled entry object
427 * @param entry The text to be displayed
429 * @ingroup Scrolled_Entry
432 elm_scrolled_entry_entry_set(Evas_Object *obj, const char *entry)
434 ELM_CHECK_WIDTYPE(obj, widtype);
435 Widget_Data *wd = elm_widget_data_get(obj);
437 elm_entry_entry_set(wd->entry, entry);
441 * This returns the text currently shown in object @p entry.
442 * See also elm_scrolled_entry_entry_set().
444 * @param obj The scrolled entry object
445 * @return The currently displayed text or NULL on failure
447 * @ingroup Scrolled_Entry
450 elm_scrolled_entry_entry_get(const Evas_Object *obj)
452 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
453 Widget_Data *wd = elm_widget_data_get(obj);
454 if (!wd) return NULL;
455 return elm_entry_entry_get(wd->entry);
459 * This returns all selected text within the scrolled entry.
461 * @param obj The scrolled entry object
462 * @return The selected text within the scrolled entry or NULL on failure
464 * @ingroup Scrolled_Entry
467 elm_scrolled_entry_selection_get(const Evas_Object *obj)
469 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
470 Widget_Data *wd = elm_widget_data_get(obj);
471 if (!wd) return NULL;
472 return elm_entry_selection_get(wd->entry);
476 * This inserts text in @p entry at the beginning of the scrolled entry
479 * @param obj The scrolled entry object
480 * @param entry The text to insert
482 * @ingroup Scrolled_Entry
485 elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry)
487 ELM_CHECK_WIDTYPE(obj, widtype);
488 Widget_Data *wd = elm_widget_data_get(obj);
490 elm_entry_entry_insert(wd->entry, entry);
494 * This enables word line wrapping in the scrolled entry object. It is the opposite
495 * of elm_scrolled_entry_single_line_set(). Additionally, setting this disables
496 * character line wrapping.
497 * See also elm_scrolled_entry_line_char_wrap_set().
499 * @param obj The scrolled entry object
500 * @param wrap If true, the scrolled entry will be wrapped once it reaches the end
501 * of the object. Wrapping will occur at the end of the word before the end of the
504 * @ingroup Scrolled_Entry
507 elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
509 ELM_CHECK_WIDTYPE(obj, widtype);
510 Widget_Data *wd = elm_widget_data_get(obj);
512 elm_entry_line_wrap_set(wd->entry, wrap);
516 * This enables character line wrapping in the scrolled entry object. It is the opposite
517 * of elm_scrolled_entry_single_line_set(). Additionally, setting this disables
518 * word line wrapping.
519 * See also elm_scrolled_entry_line_wrap_set().
521 * @param obj The scrolled entry object
522 * @param wrap If true, the scrolled entry will be wrapped once it reaches the end
523 * of the object. Wrapping will occur immediately upon reaching the end of the object.
525 * @ingroup Scrolled_Entry
528 elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap)
530 ELM_CHECK_WIDTYPE(obj, widtype);
531 Widget_Data *wd = elm_widget_data_get(obj);
533 elm_entry_line_char_wrap_set(wd->entry, wrap);
537 * This sets the editable attribute of the scrolled entry.
539 * @param obj The scrolled entry object
540 * @param editable If true, the scrolled entry will be editable by the user.
541 * If false, it will be set to the disabled state.
543 * @ingroup Scrolled_Entry
546 elm_scrolled_entry_editable_set(Evas_Object *obj, Eina_Bool editable)
548 ELM_CHECK_WIDTYPE(obj, widtype);
549 Widget_Data *wd = elm_widget_data_get(obj);
551 elm_entry_editable_set(wd->entry, editable);
555 * This gets the editable attribute of the scrolled entry.
556 * See also elm_scrolled_entry_editable_set().
558 * @param obj The scrolled entry object
559 * @return If true, the scrolled entry is editable by the user.
560 * If false, it is not editable by the user
562 * @ingroup Scrolled_Entry
565 elm_scrolled_entry_editable_get(const Evas_Object *obj)
567 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
568 Widget_Data *wd = elm_widget_data_get(obj);
569 if (!wd) return EINA_FALSE;
570 return elm_entry_editable_get(wd->entry);
575 * This drops any existing text selection within the scrolled entry.
577 * @param obj The scrolled entry object
579 * @ingroup Scrolled_Entry
582 elm_scrolled_entry_select_none(Evas_Object *obj)
584 ELM_CHECK_WIDTYPE(obj, widtype);
585 Widget_Data *wd = elm_widget_data_get(obj);
587 elm_entry_select_none(wd->entry);
591 * This selects all text within the scrolled entry.
593 * @param obj The scrolled entry object
595 * @ingroup Scrolled_Entry
598 elm_scrolled_entry_select_all(Evas_Object *obj)
600 ELM_CHECK_WIDTYPE(obj, widtype);
601 Widget_Data *wd = elm_widget_data_get(obj);
603 elm_entry_select_all(wd->entry);
607 * This moves the cursor one place to the right within the entry.
609 * @param obj The scrolled entry object
610 * @return EINA_TRUE upon success, EINA_FALSE upon failure
612 * @ingroup Scrolled_Entry
615 elm_scrolled_entry_cursor_next(Evas_Object *obj)
617 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
618 Widget_Data *wd = elm_widget_data_get(obj);
619 if (!wd) return EINA_FALSE;
620 return elm_entry_cursor_next(wd->entry);
624 * This moves the cursor one place to the left within the entry.
626 * @param obj The scrolled entry object
627 * @return EINA_TRUE upon success, EINA_FALSE upon failure
629 * @ingroup Scrolled_Entry
632 elm_scrolled_entry_cursor_prev(Evas_Object *obj)
634 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
635 Widget_Data *wd = elm_widget_data_get(obj);
636 if (!wd) return EINA_FALSE;
637 return elm_entry_cursor_prev(wd->entry);
641 * This moves the cursor one line up within the entry.
643 * @param obj The scrolled entry object
644 * @return EINA_TRUE upon success, EINA_FALSE upon failure
646 * @ingroup Scrolled_Entry
649 elm_scrolled_entry_cursor_up(Evas_Object *obj)
651 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
652 Widget_Data *wd = elm_widget_data_get(obj);
653 if (!wd) return EINA_FALSE;
654 return elm_entry_cursor_up(wd->entry);
658 * This moves the cursor one line down within the entry.
660 * @param obj The scrolled entry object
661 * @return EINA_TRUE upon success, EINA_FALSE upon failure
663 * @ingroup Scrolled_Entry
666 elm_scrolled_entry_cursor_down(Evas_Object *obj)
668 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
669 Widget_Data *wd = elm_widget_data_get(obj);
670 if (!wd) return EINA_FALSE;
671 return elm_entry_cursor_down(wd->entry);
675 * This moves the cursor to the beginning of the entry.
677 * @param obj The scrolled entry object
679 * @ingroup Scrolled_Entry
682 elm_scrolled_entry_cursor_begin_set(Evas_Object *obj)
684 ELM_CHECK_WIDTYPE(obj, widtype);
685 Widget_Data *wd = elm_widget_data_get(obj);
687 elm_entry_cursor_begin_set(wd->entry);
691 * This moves the cursor to the end of the entry.
693 * @param obj The scrolled entry object
695 * @ingroup Scrolled_Entry
698 elm_scrolled_entry_cursor_end_set(Evas_Object *obj)
700 ELM_CHECK_WIDTYPE(obj, widtype);
701 Widget_Data *wd = elm_widget_data_get(obj);
704 elm_scroller_region_get(wd->scroller, &x, &y, &w, &h);
705 elm_entry_cursor_end_set(wd->entry);
706 elm_scroller_region_show(wd->scroller, x, y, w, h);
710 * This moves the cursor to the beginning of the current line.
712 * @param obj The scrolled entry object
714 * @ingroup Scrolled_Entry
717 elm_scrolled_entry_cursor_line_begin_set(Evas_Object *obj)
719 ELM_CHECK_WIDTYPE(obj, widtype);
720 Widget_Data *wd = elm_widget_data_get(obj);
722 elm_entry_cursor_line_begin_set(wd->entry);
726 * This moves the cursor to the end of the current line.
728 * @param obj The scrolled entry object
730 * @ingroup Scrolled_Entry
733 elm_scrolled_entry_cursor_line_end_set(Evas_Object *obj)
735 ELM_CHECK_WIDTYPE(obj, widtype);
736 Widget_Data *wd = elm_widget_data_get(obj);
738 elm_entry_cursor_line_end_set(wd->entry);
742 * This begins a selection within the scrolled entry as though
743 * the user were holding down the mouse button to make a selection.
745 * @param obj The scrolled entry object
747 * @ingroup Scrolled_Entry
750 elm_scrolled_entry_cursor_selection_begin(Evas_Object *obj)
752 ELM_CHECK_WIDTYPE(obj, widtype);
753 Widget_Data *wd = elm_widget_data_get(obj);
755 elm_entry_cursor_selection_begin(wd->entry);
759 * This ends a selection within the scrolled entry as though
760 * the user had just released the mouse button while making a selection.
762 * @param obj The scrolled entry object
764 * @ingroup Scrolled_Entry
767 elm_scrolled_entry_cursor_selection_end(Evas_Object *obj)
769 ELM_CHECK_WIDTYPE(obj, widtype);
770 Widget_Data *wd = elm_widget_data_get(obj);
772 elm_entry_cursor_selection_end(wd->entry);
778 * @param obj The scrolled entry object
779 * @return TODO: fill this in
781 * @ingroup Scrolled_Entry
784 elm_scrolled_entry_cursor_is_format_get(const Evas_Object *obj)
786 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
787 Widget_Data *wd = elm_widget_data_get(obj);
788 if (!wd) return EINA_FALSE;
789 return elm_entry_cursor_is_format_get(wd->entry);
793 * This returns whether the cursor is visible.
795 * @param obj The scrolled entry object
796 * @return If true, the cursor is visible.
798 * @ingroup Scrolled_Entry
801 elm_scrolled_entry_cursor_is_visible_format_get(const Evas_Object *obj)
803 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
804 Widget_Data *wd = elm_widget_data_get(obj);
805 if (!wd) return EINA_FALSE;
806 return elm_entry_cursor_is_visible_format_get(wd->entry);
812 * @param obj The scrolled entry object
813 * @return TODO: fill this in
815 * @ingroup Scrolled_Entry
818 elm_scrolled_entry_cursor_content_get(const Evas_Object *obj)
820 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
821 Widget_Data *wd = elm_widget_data_get(obj);
822 if (!wd) return NULL;
823 return elm_entry_cursor_content_get(wd->entry);
827 * This executes a "cut" action on the selected text in the scrolled entry.
829 * @param obj The scrolled entry object
831 * @ingroup Scrolled_Entry
834 elm_scrolled_entry_selection_cut(Evas_Object *obj)
836 ELM_CHECK_WIDTYPE(obj, widtype);
837 Widget_Data *wd = elm_widget_data_get(obj);
839 elm_entry_selection_cut(wd->entry);
843 * This executes a "copy" action on the selected text in the scrolled entry.
845 * @param obj The scrolled entry object
847 * @ingroup Scrolled_Entry
850 elm_scrolled_entry_selection_copy(Evas_Object *obj)
852 ELM_CHECK_WIDTYPE(obj, widtype);
853 Widget_Data *wd = elm_widget_data_get(obj);
855 elm_entry_selection_copy(wd->entry);
859 * This executes a "paste" action in the scrolled entry.
861 * @param obj The scrolled entry object
863 * @ingroup Scrolled_Entry
866 elm_scrolled_entry_selection_paste(Evas_Object *obj)
868 ELM_CHECK_WIDTYPE(obj, widtype);
869 Widget_Data *wd = elm_widget_data_get(obj);
871 elm_entry_selection_paste(wd->entry);
875 * This clears and frees the items in a scrolled entry's contextual (right click) menu.
877 * @param obj The scrolled entry object
879 * @ingroup Scrolled_Entry
882 elm_scrolled_entry_context_menu_clear(Evas_Object *obj)
884 ELM_CHECK_WIDTYPE(obj, widtype);
885 Widget_Data *wd = elm_widget_data_get(obj);
887 elm_entry_context_menu_clear(wd->entry);
891 * This adds an item to the scrolled entry's contextual menu.
893 * @param obj The scrolled entry object
894 * @param label The item's text label
895 * @param icon_file The item's icon file
896 * @param icon_type The item's icon type
897 * @param func The callback to execute when the item is clicked
898 * @param data The data to associate with the item for related functions
900 * @ingroup Scrolled_Entry
903 elm_scrolled_entry_context_menu_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data)
905 ELM_CHECK_WIDTYPE(obj, widtype);
906 Widget_Data *wd = elm_widget_data_get(obj);
908 elm_entry_context_menu_item_add(wd->entry, label, icon_file, icon_type, func, data);
912 * This disables the scrolled entry's contextual (right click) menu.
914 * @param obj The scrolled entry object
915 * @param disabled If true, the menu is disabled
917 * @ingroup Scrolled_Entry
920 elm_scrolled_entry_context_menu_disabled_set(Evas_Object *obj, Eina_Bool disabled)
922 ELM_CHECK_WIDTYPE(obj, widtype);
923 Widget_Data *wd = elm_widget_data_get(obj);
925 elm_entry_context_menu_disabled_set(wd->entry, disabled);
929 * This returns whether the scrolled entry's contextual (right click) menu is disabled.
931 * @param obj The scrolled entry object
932 * @return If true, the menu is disabled
934 * @ingroup Scrolled_Entry
937 elm_scrolled_entry_context_menu_disabled_get(const Evas_Object *obj)
939 ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
940 Widget_Data *wd = elm_widget_data_get(obj);
941 if (!wd) return EINA_FALSE;
942 return elm_entry_context_menu_disabled_get(wd->entry);
946 * This sets the scrolled entry's scrollbar policy (ie. enabling/disabling them).
948 * @param obj The scrolled entry object
949 * @param h The horizontal scrollbar policy to apply
950 * @param v The vertical scrollbar policy to apply
952 * @ingroup Scrolled_Entry
955 elm_scrolled_entry_scrollbar_policy_set(Evas_Object *obj, Elm_Scroller_Policy h, Elm_Scroller_Policy v)
957 ELM_CHECK_WIDTYPE(obj, widtype);
958 Widget_Data *wd = elm_widget_data_get(obj);
962 elm_scroller_policy_set(wd->scroller, h, v);
966 * This enables/disables bouncing within the entry.
968 * @param obj The scrolled entry object
969 * @param h The horizontal bounce state
970 * @param v The vertical bounce state
972 * @ingroup Scrolled_Entry
975 elm_scrolled_entry_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce)
977 ELM_CHECK_WIDTYPE(obj, widtype);
978 Widget_Data *wd = elm_widget_data_get(obj);
980 elm_scroller_bounce_set(wd->scroller, h_bounce, v_bounce);
983 * This set's the maximum bytes that can be added in to scrolled entry.
985 * @param obj The scrolled entry object
986 * @param max_no_of_bytes Maximum number of bytes scrolled entry can have.
988 * @ingroup Scrolled_Entry
991 elm_scrolled_entry_maximum_bytes_set(Evas_Object *obj, int max_no_of_bytes)
993 ELM_CHECK_WIDTYPE(obj, widtype);
994 Widget_Data *wd = elm_widget_data_get(obj);
996 elm_entry_maximum_bytes_set(wd->entry,max_no_of_bytes);
1000 * This set's the scrolled entry in password mode with out masking the last character entered by user,
1001 * and later masking the character after 2 seconds.
1003 * @param obj The scrolled entry object
1004 * @param show_last_character The show_last_character flag (1 for "password mode along with showing last character"
1007 * @ingroup Scrolled_Entry
1010 elm_scrolled_entry_password_show_last_character_set(Evas_Object *obj, Eina_Bool show_last_character)
1012 ELM_CHECK_WIDTYPE(obj, widtype);
1013 Widget_Data *wd = elm_widget_data_get(obj);
1015 elm_entry_password_show_last_character_set(wd->entry, show_last_character);
1019 * Get the input method context in the scrolled entry widget
1021 * @param obj The scrolled entry object
1022 * @return The input method context
1024 * @ingroup Scrolled_Entry
1026 EAPI Ecore_IMF_Context *elm_scrolled_entry_imf_context_get(Evas_Object *obj)
1028 ELM_CHECK_WIDTYPE(obj, widtype) NULL;
1029 Widget_Data *wd = elm_widget_data_get(obj);
1030 if (!wd || !wd->entry) return NULL;
1032 return elm_entry_imf_context_get(wd->entry);
1036 * This sets the attribute to show the input panel automatically.
1038 * @param obj The scrolled entry object
1039 * @param enabled If true, the input panel is appeared when entry is clicked or has a focus
1041 * @ingroup Scrolled_Entry
1044 elm_scrolled_entry_input_panel_enabled_set(Evas_Object *obj, Eina_Bool enabled)
1046 ELM_CHECK_WIDTYPE(obj, widtype);
1047 Widget_Data *wd = elm_widget_data_get(obj);
1048 if (!wd || !wd->entry) return;
1050 elm_entry_input_panel_enabled_set(wd->entry, enabled);
1054 * Set the input panel layout of the scrolled entry
1056 * @param obj The scrolled entry object
1057 * @param layout the layout to set
1059 * @ingroup Scrolled_Entry
1062 elm_scrolled_entry_input_panel_layout_set(Evas_Object *obj, Elm_Input_Panel_Layout layout)
1064 ELM_CHECK_WIDTYPE(obj, widtype);
1065 Widget_Data *wd = elm_widget_data_get(obj);
1066 if (!wd || !wd->entry) return;
1068 elm_entry_input_panel_layout_set(wd->entry, layout);
1072 * Set whether scrolled entry should support auto capitalization
1074 * @param obj The entry object
1075 * @param on If true, scrolled entry suports auto capitalization.
1077 * @ingroup Scrolled_Entry
1080 elm_scrolled_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap)
1082 ELM_CHECK_WIDTYPE(obj, widtype);
1083 Widget_Data *wd = elm_widget_data_get(obj);
1084 if (!wd || !wd->entry) return;
1086 elm_entry_autocapitalization_set(wd->entry, autocap);
1090 * Set whether scrolled entry should support auto period
1092 * @param obj The entry object
1093 * @param on If true, scrolled entry suports auto period.
1095 * @ingroup Scrolled_Entry
1098 elm_scrolled_entry_autoperiod_set(Evas_Object *obj, Eina_Bool autoperiod)
1100 ELM_CHECK_WIDTYPE(obj, widtype);
1101 Widget_Data *wd = elm_widget_data_get(obj);
1102 if (!wd || !wd->entry) return;
1104 elm_entry_autoperiod_set(wd->entry, autoperiod);