Compare commits

...

2 Commits

Author SHA1 Message Date
Marcel Hollerbach f7ba6a8e9b wip 2020-01-13 20:07:28 +01:00
Marcel Hollerbach 8c857816b1 efl_ui_selection: return ERRORS when setting the selection failed
this returns False on error, but does not print a error anymore, as this
has been mainly what the selection code did. And in case you are running
the buffer engine, this would just return no future at all.

Differential Revision: https://phab.enlightenment.org/D11079
2020-01-13 20:04:42 +01:00
4 changed files with 73 additions and 0 deletions

View File

@ -217,6 +217,9 @@ elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type type,
f = efl_ui_selection_manager_selection_set(sel_man, obj, (Efl_Ui_Selection_Type)type,
(Efl_Ui_Selection_Format)format, data, seatid);
if (!f)
return EINA_FALSE;
ldata->obj = obj;
ldata->type = type;
eina_future_then_easy(f, _selection_lost_cb, NULL, NULL, EINA_VALUE_TYPE_UINT, ldata);

View File

@ -3,6 +3,7 @@
#endif
#include <Elementary.h>
#include "elm_entry_eo.h" //needed to check that spin is in text mode
#include <Efl_Ui.h>
#include "efl_ui_suite.h"
@ -209,6 +210,57 @@ EFL_START_TEST (spin_double_values_hitting_max_with_step)
}
EFL_END_TEST
static inline void
_try_direct_text_input(const char *text, double result)
{
Eo *entry;
efl_ui_focus_util_focus(efl_content_get(efl_part(spin, "efl.text_button")));
get_me_to_those_events(spin);
entry = efl_content_get(efl_part(spin, "efl.entry"));
elm_object_text_set(entry, "");
ck_assert_int_eq(efl_isa(entry, ELM_ENTRY_CLASS), 1);
efl_ui_focus_util_focus(entry);
get_me_to_those_events(spin);
write_key_sequence(spin, text);
get_me_to_those_events(spin);
efl_ui_focus_util_focus(efl_content_get(efl_part(spin, "efl.inc_button")));
ck_assert_msg(EINA_DBL_EQ(efl_ui_range_value_get(spin), result), "Values do not match %f - %f (%s)", efl_ui_range_value_get(spin), result, elm_object_text_get(entry));
}
EFL_START_TEST (spin_direct_text_input)
{
efl_ui_spin_button_direct_text_input_set(spin, EINA_TRUE);
efl_ui_range_limits_set(spin, -30, 30);
efl_ui_range_value_set(spin, 20);
get_me_to_those_events(spin);
_try_direct_text_input("1asdf2", 12);
_try_direct_text_input("1-2", 12);
_try_direct_text_input("-12", -12);
_try_direct_text_input("-100", -30);
_try_direct_text_input("1.8", 18);
_try_direct_text_input("12342435", 30);
}
EFL_END_TEST
EFL_START_TEST (spin_direct_text_input_comma_value)
{
efl_ui_spin_button_direct_text_input_set(spin, EINA_TRUE);
efl_ui_range_limits_set(spin, -30, 30);
efl_ui_range_value_set(spin, 20);
efl_ui_format_string_set(spin, "%.2f", EFL_UI_FORMAT_STRING_TYPE_SIMPLE);
efl_ui_focus_util_focus(efl_content_get(efl_part(spin, "efl.text_button")));
get_me_to_those_events(spin);
_try_direct_text_input("1asdf2.1", 12.1);
_try_direct_text_input("1-2.2", 12.2);
_try_direct_text_input("-12.8", -12.8);
_try_direct_text_input("-100", -30);
_try_direct_text_input("10.8", 10.8);
_try_direct_text_input("12342435.12312341342", 30);
}
EFL_END_TEST
void efl_ui_test_spin_button(TCase *tc)
{
tcase_add_checked_fixture(tc, fail_on_errors_setup, fail_on_errors_teardown);
@ -220,4 +272,6 @@ void efl_ui_test_spin_button(TCase *tc)
tcase_add_test(tc, spin_wraparound);
tcase_add_test(tc, spin_double_values);
tcase_add_test(tc, spin_double_values_hitting_max_with_step);
tcase_add_test(tc, spin_direct_text_input);
tcase_add_test(tc, spin_direct_text_input_comma_value);
}

View File

@ -618,3 +618,18 @@ drag_object(Eo *obj, int x, int y, int dx, int dy, Eina_Bool iterate)
evas_event_feed_mouse_move(e, x + dx, y + dy, 0, NULL);
evas_event_feed_mouse_up(e, 1, 0, 0, NULL);
}
void
write_key_sequence(Eo *obj, const char *seqence)
{
Evas *e = evas_object_evas_get(obj);
for (unsigned int i = 0; i < strlen(seqence); ++i)
{
const char part_seq[] = {seqence[i], '\0'};
evas_event_feed_key_down(e, part_seq, part_seq, part_seq, part_seq, 0, NULL);
ecore_main_loop_iterate();
evas_event_feed_key_up(e, part_seq, part_seq, part_seq, part_seq, 0, NULL);
ecore_main_loop_iterate();
}
}

View File

@ -22,6 +22,7 @@ void click_part(Eo *obj, const char *part);
void click_part_flags(Eo *obj, const char *part, int flags);
void click_object_at(Eo *obj, int x, int y);
void click_object_at_flags(Eo *obj, int x, int y, int flags);
void write_key_sequence(Eo *obj, const char *seqence);
void drag_object(Eo *obj, int x, int y, int dx, int dy, Eina_Bool iterate);
void wheel_object(Eo *obj, Eina_Bool horiz, Eina_Bool down);
void wheel_part(Eo *obj, const char *part, Eina_Bool horiz, Eina_Bool down);