efl

Форк
0
/
efl_ui_test_text.c 
546 строк · 20.2 Кб
1
#define EFL_NOLEGACY_API_SUPPORT
2
#ifdef HAVE_CONFIG_H
3
# include "elementary_config.h"
4
#endif
5
#define EFL_LAYOUT_CALC_PROTECTED
6
#include <Efl_Ui.h>
7
#include "efl_ui_suite.h"
8
#include "Evas_Legacy.h"
9

10
static void
11
increment_int_changed(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
12
{
13
   int *value = data;
14
   (*value)++;
15
}
16

17
EFL_START_TEST(text_cnp)
18
{
19
   Eo *txt;
20
   Eo *win = win_add();
21

22
   int i_copy = 0, i_paste = 0, i_cut = 0;
23

24
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win,
25
                efl_event_callback_add(efl_added, EFL_UI_TEXTBOX_EVENT_SELECTION_COPY, increment_int_changed, &i_copy),
26
                efl_event_callback_add(efl_added, EFL_UI_TEXTBOX_EVENT_SELECTION_PASTE, increment_int_changed, &i_paste),
27
                efl_event_callback_add(efl_added, EFL_UI_TEXTBOX_EVENT_SELECTION_CUT, increment_int_changed, &i_cut)
28
                );
29

30
   efl_text_set(txt, "Hello");
31
   efl_text_interactive_all_select(txt);
32
   efl_ui_textbox_selection_copy(txt);
33
   efl_text_interactive_all_unselect(txt);
34
   efl_text_cursor_object_text_insert(efl_text_interactive_main_cursor_get(txt), "X");
35
   efl_ui_textbox_selection_paste(txt);
36
   ecore_main_loop_iterate();
37
   ck_assert_int_eq(i_copy, 1);
38
   ck_assert_int_eq(i_paste, 1);
39
   ck_assert_str_eq(efl_text_get(txt), "HelloXHello");
40

41
   i_copy = i_cut = i_paste= 0;
42
   efl_text_set(txt, "Hello");
43
   efl_text_interactive_all_select(txt);
44
   efl_ui_textbox_selection_copy(txt);
45
   efl_text_interactive_all_select(txt);
46
   efl_ui_textbox_selection_cut(txt);
47
   efl_ui_textbox_selection_paste(txt);
48
   efl_ui_textbox_selection_paste(txt);
49
   ecore_main_loop_iterate();
50
   ck_assert_int_eq(i_copy, 1);
51
   ck_assert_int_eq(i_cut, 1);
52
   ck_assert_int_eq(i_paste, 2);
53
   //FIXME
54
   //fail_if(strcmp(efl_text_get(txt),"HelloHello"));
55
   efl_del(txt);
56
}
57
EFL_END_TEST
58

59
static void
60
_stop_event_soon(void *data EINA_UNUSED, const Efl_Event *ev)
61
{
62
   efl_event_callback_stop(ev->object);
63
}
64

65
EFL_START_TEST(text_all_select_all_unselect)
66
{
67
   Eo *txt, *txt2;
68
   Eo *win = win_add();
69

70
   int i_have_selection = 0, i_selection = 0;
71

72
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win,
73
                efl_event_callback_add(efl_added, EFL_TEXT_INTERACTIVE_EVENT_HAVE_SELECTION_CHANGED,
74
                            increment_int_changed, &i_have_selection),
75
                efl_event_callback_add(efl_added, EFL_TEXT_INTERACTIVE_EVENT_SELECTION_CHANGED,
76
                            increment_int_changed, &i_selection)
77
                );
78
   efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL);
79
   efl_text_set(txt, "Hello");
80
   efl_text_interactive_all_select(txt);
81
   Efl_Text_Cursor_Object *c1=NULL, *c2 =NULL;
82
   efl_text_interactive_selection_cursors_get(txt, &c1, &c2);
83
   ck_assert_ptr_ne(c1, NULL);
84
   ck_assert_ptr_ne(c2, NULL);
85
   fail_if(!efl_text_interactive_have_selection_get(txt));
86
   ck_assert_int_eq(efl_text_cursor_object_position_get(c1), 0);
87
   ck_assert_int_eq(efl_text_cursor_object_position_get(c2), 5);
88
   efl_text_interactive_all_unselect(txt);
89
   fail_if(efl_text_interactive_have_selection_get(txt));
90
   ecore_main_loop_iterate();
91
   ck_assert_int_eq(i_have_selection, 2);
92
   ck_assert_int_eq(i_selection, 1);
93

94
   /*Partial select, the select all*/
95
   Eo *sel1, *sel2;
96
   i_selection = 0;
97
   efl_text_interactive_selection_cursors_get(txt, &sel1, &sel2);
98
   efl_text_cursor_object_position_set(sel1, 1);
99
   efl_text_cursor_object_position_set(sel2, 2);
100
   ck_assert_int_eq(i_selection, 2);
101
   efl_text_interactive_all_select(txt);
102
   ck_assert_int_eq(i_selection, 3);
103
   ck_assert_int_eq(efl_text_cursor_object_position_get(sel1), 0);
104
   ck_assert_int_eq(efl_text_cursor_object_position_get(sel2), 5);
105

106
   Eo *cur1 = efl_ui_textbox_cursor_create(txt);
107
   Eo *cur2 = efl_ui_textbox_cursor_create(txt);
108
   efl_text_cursor_object_position_set(cur1, 1);
109
   efl_text_cursor_object_position_set(cur2, 2);
110
   efl_text_interactive_selection_cursors_set(txt, cur1, cur2);
111
   ck_assert_int_eq(i_selection, 4);
112
   efl_text_interactive_selection_cursors_get(txt, &sel1, &sel2);
113
   ck_assert_int_eq(efl_text_cursor_object_position_get(sel1),1);
114
   ck_assert_int_eq(efl_text_cursor_object_position_get(sel2),2);
115

116

117
   /*Select part then select all*/
118
   efl_text_interactive_all_unselect(txt);
119
   i_have_selection = 0, i_selection = 0;
120
   efl_text_cursor_object_position_set(cur1, 1);
121
   efl_text_cursor_object_position_set(cur2, 2);
122
   efl_text_interactive_selection_cursors_set(txt, cur1, cur2);
123
   ck_assert_int_eq(i_selection, 1);
124
   ck_assert_int_eq(i_have_selection, 1);
125
   efl_text_interactive_all_select(txt);
126
   ck_assert_int_eq(i_selection, 2);
127
   ck_assert_int_eq(i_have_selection, 1);
128
   efl_text_interactive_all_unselect(txt);
129
   ck_assert_int_eq(i_have_selection, 2);
130

131
   //cursor selection change on efl_markup_set
132
   txt2 = efl_add(EFL_UI_TEXTBOX_CLASS, win);
133
   efl_text_markup_set(txt2, "<ps>");
134

135
   efl_del(txt);
136
   efl_del(txt2);
137
   efl_del(win);
138
}
139
EFL_END_TEST
140

141
EFL_START_TEST(text_selection)
142
{
143
   Eo *txt;
144
   Eo *win = win_add();
145

146
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
147
   efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL);
148
   efl_gfx_entity_size_set(txt, EINA_SIZE2D(300, 300));
149
   efl_text_set(txt, "Hello");
150
   get_me_to_those_events(txt);
151
   drag_object(txt, 2, 2, 295, 295, EINA_TRUE);
152
   ecore_main_loop_iterate();
153
   Efl_Text_Cursor_Object *c1=NULL, *c2 =NULL;
154
   efl_text_interactive_selection_cursors_get(txt, &c1, &c2);
155
   ck_assert_ptr_ne(c1, NULL);
156
   ck_assert_ptr_ne(c2, NULL);
157
   fail_if(!efl_text_interactive_have_selection_get(txt));
158
   ck_assert_int_eq(efl_text_cursor_object_position_get(c1), 0);
159
   ck_assert_int_eq(efl_text_cursor_object_position_get(c2), 5);
160
   efl_text_interactive_all_unselect(txt);
161
   fail_if(efl_text_interactive_have_selection_get(txt));
162
   efl_text_interactive_selection_allowed_set(txt, EINA_FALSE);
163
   drag_object(txt, 2, 2, 295, 295, EINA_TRUE);
164
   ecore_main_loop_iterate();
165
   fail_if(efl_text_interactive_have_selection_get(txt));
166
   efl_del(txt);
167
}
168
EFL_END_TEST
169

170
static void
171
user_changed(void *data, const Efl_Event *ev)
172
{
173
   Efl_Text_Change_Info *info = (Efl_Text_Change_Info *)ev->info;
174
   Efl_Text_Change_Info *stored = (Efl_Text_Change_Info *)data;
175
   *stored = *info;
176
}
177

178
EFL_START_TEST(text_user_change)
179
{
180
   Eo *txt;
181
   Eo *win = win_add();
182
   Efl_Text_Change_Info info = {0};
183
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win,
184
                efl_event_callback_add(efl_added, EFL_TEXT_INTERACTIVE_EVENT_CHANGED_USER, user_changed, &info)
185
                );
186
   efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL);
187
   efl_text_set(txt, "Hello");
188
   efl_gfx_entity_size_set(txt, EINA_SIZE2D(300, 300));
189
   efl_text_interactive_all_select(txt);
190
   efl_ui_textbox_selection_cut(txt);
191
   ck_assert_int_eq(info.position, 0);
192
   ck_assert_int_eq(info.length, 5);
193
   efl_del(txt);
194
   efl_del(win);
195
}
196
EFL_END_TEST
197

198
EFL_START_TEST(text_scroll_mode)
199
{
200
   Eo *txt, *win, *cur;
201
   win = win_add();
202
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
203
   efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL);
204
   cur = efl_text_interactive_main_cursor_get(txt);
205
   efl_text_set(txt, "Hello");
206
   /*scroll mode is false by default*/
207
   fail_if(efl_ui_textbox_scrollable_get(txt));
208
   efl_ui_textbox_scrollable_set(txt, !efl_ui_textbox_scrollable_get(txt));
209
   efl_text_cursor_object_text_insert(cur, "World");
210
   fail_if(!efl_ui_textbox_scrollable_get(txt));
211
   efl_ui_textbox_scrollable_set(txt, !efl_ui_textbox_scrollable_get(txt));
212
   efl_text_cursor_object_text_insert(cur, "!!!");
213

214
   ck_assert_str_eq(efl_text_get(txt),"HelloWorld!!!");
215
   efl_del(txt);
216
   efl_del(win);
217
}
218
EFL_END_TEST
219

220
EFL_START_TEST(text_change_event)
221
{
222
   Eo *txt;
223
   Eo *win = win_add();
224

225
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
226
   efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL);
227
   efl_gfx_entity_size_set(txt, EINA_SIZE2D(300, 300));
228
   efl_text_set(txt, "Hello");
229
   int i_changed = 0;
230
   efl_event_callback_add(txt, EFL_UI_TEXTBOX_EVENT_CHANGED, increment_int_changed, &i_changed);
231
   efl_gfx_entity_visible_set(txt, EINA_TRUE);
232
   Evas *e = evas_object_evas_get(txt);
233
   efl_ui_focus_util_focus(txt);
234
   evas_event_feed_key_down(e, "s", "s", "s", "s", time(NULL), NULL);
235
   ecore_main_loop_iterate();
236
   ck_assert_str_eq(efl_text_get(txt),"Hellos");
237
   ck_assert_int_eq(i_changed,1);
238
   ecore_main_loop_iterate();
239

240
   efl_del(txt);
241
   efl_del(win);
242
}
243
EFL_END_TEST
244

245
EFL_START_TEST(text_keys_handler)
246
{
247
   Eo *txt;
248
   Eo *win = win_add();
249

250
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
251
   efl_event_callback_priority_add(txt, EFL_UI_SELECTION_EVENT_WM_SELECTION_CHANGED, EFL_CALLBACK_PRIORITY_BEFORE, _stop_event_soon, NULL);
252
   efl_gfx_entity_size_set(txt, EINA_SIZE2D(300, 300));
253
   efl_text_set(txt, "Hello");
254

255
   efl_gfx_entity_visible_set(txt, EINA_TRUE);
256
   Evas *e = evas_object_evas_get(txt);
257
   efl_ui_focus_util_focus(txt);
258

259
   efl_text_cursor_object_move(efl_text_interactive_main_cursor_get(txt), EFL_TEXT_CURSOR_MOVE_TYPE_LAST);
260
   evas_key_modifier_on(e, "Control");
261
   evas_event_feed_key_down(e, "BackSpace", "BackSpace", "\b", "\b", time(NULL), NULL);
262
   ecore_main_loop_iterate();
263
   ck_assert_str_eq(efl_text_get(txt),"");
264
   ck_assert_int_eq(efl_text_cursor_object_position_get(efl_text_interactive_main_cursor_get(txt)), 0);
265
   evas_event_feed_key_up(e, "BackSpace", "BackSpace", "\b", "\b", time(NULL), NULL);
266
   ecore_main_loop_iterate();
267

268
   efl_text_set(txt, "Hello");
269
   efl_text_cursor_object_position_set(efl_text_interactive_main_cursor_get(txt), 0);
270
   evas_key_modifier_on(e, "Control");
271
   evas_event_feed_key_down(e, "Delete", "Delete", "\177", "\177", time(NULL), NULL);
272
   ecore_main_loop_iterate();
273
   ck_assert_str_eq(efl_text_get(txt),"");
274
   ck_assert_int_eq(efl_text_cursor_object_position_get(efl_text_interactive_main_cursor_get(txt)), 0);
275
   evas_event_feed_key_up(e, "Delete", "Delete", "\177", "\177", time(NULL), NULL);
276
   ecore_main_loop_iterate();
277

278
   efl_del(txt);
279
   efl_del(win);
280
}
281
EFL_END_TEST
282

283
EFL_START_TEST(text_editable)
284
{
285
   Eo *txt, *win;
286
   win = win_add();
287
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
288
   efl_text_font_size_set(txt, 100);
289
   efl_text_font_family_set(txt, "Arial");
290
   efl_text_interactive_editable_set(txt, !efl_text_interactive_editable_get(txt));
291
   ck_assert_int_eq(efl_text_font_size_get(txt), 100);
292
   ck_assert_str_eq(efl_text_font_family_get(txt), "Arial");
293

294
   efl_ui_widget_disabled_set(txt, EINA_TRUE);
295
   ck_assert_int_eq(efl_text_font_size_get(txt), 100);
296
   ck_assert_str_eq(efl_text_font_family_get(txt), "Arial");
297

298
   efl_del(txt);
299
   efl_del(win);
300
}
301
EFL_END_TEST
302

303
EFL_START_TEST(text_on_startup)
304
{
305
   Eo *txt, *win;
306
   win = win_add();
307
   unsigned char r,g,b,a;
308
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win,
309
               efl_text_color_set(efl_added, 0, 255, 0, 255),
310
               efl_text_font_size_set(efl_added, 50),
311
               efl_text_font_family_set(efl_added, "Arial"));
312

313
   ck_assert_int_eq(efl_text_font_size_get(txt), 50);
314
   ck_assert_str_eq(efl_text_font_family_get(txt), "Arial");
315
   efl_text_color_get(txt, &r, &g, &b, &a);
316
   ck_assert_int_eq(r, 0);
317
   ck_assert_int_eq(g, 255);
318
   ck_assert_int_eq(b, 0);
319
   ck_assert_int_eq(a, 255);
320

321
   efl_del(txt);
322
   efl_del(win);
323
}
324
EFL_END_TEST
325

326
EFL_START_TEST(text_multiline_selection)
327
{
328
   Eo *txt, *win;
329
   Eo *cursor1, *cursor2;
330
   Eina_Rect rc1, rc2;
331
   win = win_add();
332
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
333
   efl_text_markup_set(txt, "p1<ps/>p2<ps/>p3");
334
   efl_text_multiline_set(txt, EINA_FALSE);
335
   ecore_main_loop_iterate();
336
   efl_text_interactive_all_select(txt);
337
   efl_text_interactive_selection_cursors_get(txt, &cursor1, &cursor2);
338
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor1, EFL_TEXT_CURSOR_TYPE_BEFORE);
339
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor2, EFL_TEXT_CURSOR_TYPE_BEFORE);
340
   ck_assert_int_eq(rc1.y, rc2.y);
341
   ck_assert_int_ne(rc1.x, rc2.x);
342

343
   efl_del(txt);
344
   efl_del(win);
345
}
346
EFL_END_TEST
347

348
EFL_START_TEST(text_singleline_cursor_movement)
349
{
350
   Eo *txt, *win;
351
   Eo *cursor;
352
   Eina_Rect rc1, rc2;
353
   win = win_add();
354
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
355
   efl_text_markup_set(txt, "p1<ps>p<b>2</b>2<ps>p3");
356
   efl_text_multiline_set(txt, EINA_FALSE);
357
   ecore_main_loop_iterate();
358

359
   cursor = efl_text_interactive_main_cursor_get(txt);
360
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST);
361
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 0);
362
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
363

364
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LAST);
365
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 9);
366
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
367
   ck_assert_int_eq(rc1.y, rc2.y);
368
   ck_assert_int_ne(rc1.x, rc2.x);
369

370
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START);
371
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 0);
372
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
373

374
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END);
375
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 9);
376
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
377
   ck_assert_int_eq(rc1.y, rc2.y);
378
   ck_assert_int_ne(rc1.x, rc2.x);
379

380
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT);
381
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 9); //do not move
382
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
383

384
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS);
385
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 9); //do not move
386
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
387
   ck_assert_int_eq(rc1.y, rc2.y);
388
   ck_assert_int_eq(rc1.x, rc2.x);
389

390
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START);
391
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 0);
392
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
393

394
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END);
395
   ck_assert_int_eq(efl_text_cursor_object_position_get(cursor), 9);
396
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
397
   ck_assert_int_eq(rc1.y, rc2.y);
398
   ck_assert_int_ne(rc1.x, rc2.x);
399

400
   efl_del(txt);
401
   efl_del(win);
402
}
403
EFL_END_TEST
404

405
EFL_START_TEST(text_multiline_singleline_cursor_pos)
406
{
407
   Eo *txt, *win;
408
   Eo *cursor, *cursor1, *cursor2;
409
   Eina_Rect rc1, rc2;
410
   win = win_add();
411
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
412
   efl_text_markup_set(txt, "p1<ps>p<b>2</b>2<ps>p3<ps>");
413
   cursor = efl_text_interactive_main_cursor_get(txt);
414
   cursor1 = efl_ui_textbox_cursor_create(txt);
415
   efl_text_cursor_object_position_set(cursor1, 4);
416
   cursor2 = efl_ui_textbox_cursor_create(txt);
417
   efl_text_cursor_object_position_set(cursor2, 8);
418

419
   efl_text_multiline_set(txt, EINA_FALSE);
420
   ck_assert_uint_eq(efl_text_cursor_object_content_get(cursor1), '2');
421
   ck_assert_uint_eq(efl_text_cursor_object_content_get(cursor2), '3');
422

423
   efl_text_cursor_object_position_set(cursor, 0);
424
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
425
   efl_text_multiline_set(txt, EINA_TRUE);
426
   ck_assert_uint_eq(efl_text_cursor_object_content_get(cursor1), '2');
427
   ck_assert_uint_eq(efl_text_cursor_object_content_get(cursor2), '3');
428
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
429
   ck_assert_int_eq(rc1.y, rc2.y);
430
   ck_assert_int_eq(rc1.x, rc2.x);
431

432
   efl_text_multiline_set(txt, EINA_FALSE);
433
   efl_text_cursor_object_position_set(cursor, 2);
434
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
435
   efl_text_multiline_set(txt, EINA_TRUE);
436
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
437
   ck_assert_int_eq(rc1.y, rc2.y);
438
   ck_assert_int_eq(rc1.x, rc2.x);
439
   efl_text_multiline_set(txt, EINA_FALSE);
440
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
441
   ck_assert_int_eq(rc1.y, rc2.y);
442
   ck_assert_int_eq(rc1.x, rc2.x);
443

444
   efl_text_multiline_set(txt, EINA_FALSE);
445
   efl_text_cursor_object_position_set(cursor, 3);
446
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
447
   efl_text_multiline_set(txt, EINA_TRUE);
448
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
449
   ck_assert_int_ne(rc1.y, rc2.y);
450
   ck_assert_int_ne(rc1.x, rc2.x);
451
   efl_text_multiline_set(txt, EINA_FALSE);
452
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
453
   ck_assert_int_eq(rc1.y, rc2.y);
454
   ck_assert_int_eq(rc1.x, rc2.x);
455

456
   efl_text_multiline_set(txt, EINA_FALSE);
457
   efl_text_cursor_object_position_set(cursor, 4);
458
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
459
   efl_text_multiline_set(txt, EINA_TRUE);
460
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
461
   ck_assert_int_ne(rc1.y, rc2.y);
462
   ck_assert_int_ne(rc1.x, rc2.x);
463
   efl_text_multiline_set(txt, EINA_FALSE);
464
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
465
   ck_assert_int_eq(rc1.y, rc2.y);
466
   ck_assert_int_eq(rc1.x, rc2.x);
467

468
   efl_text_multiline_set(txt, EINA_FALSE);
469
   efl_text_cursor_object_position_set(cursor, 10);
470
   rc1 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
471
   efl_text_multiline_set(txt, EINA_TRUE);
472
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
473
   ck_assert_int_ne(rc1.y, rc2.y);
474
   ck_assert_int_ne(rc1.x, rc2.x);
475
   efl_text_multiline_set(txt, EINA_FALSE);
476
   rc2 = efl_text_cursor_object_cursor_geometry_get(cursor, EFL_TEXT_CURSOR_TYPE_BEFORE);
477
   ck_assert_int_eq(rc1.y, rc2.y);
478
   ck_assert_int_eq(rc1.x, rc2.x);
479

480

481
   efl_del(txt);
482
   efl_del(win);
483
}
484
EFL_END_TEST
485

486
/*
487
EFL_START_TEST(text_keyboard_mouse_cluster_cursor_movement)
488
{
489
   Eo *txt;
490
   Eo *cursor;
491
   Eo *win = win_add();
492
   Evas *e;
493
   Eina_Rect rc, rc2;
494

495
   txt = efl_add(EFL_UI_TEXTBOX_CLASS, win);
496

497
   efl_gfx_entity_size_set(win, EINA_SIZE2D(300, 300));
498
   efl_gfx_entity_size_set(txt, EINA_SIZE2D(300, 300));
499
   efl_ui_textbox_scrollable_set(txt, EINA_TRUE);
500
   get_me_to_those_events(txt);
501

502
   efl_text_markup_set(txt, "A\u1100\u1161\u11AA");
503
   cursor = efl_text_interactive_main_cursor_get(txt);
504
   efl_text_cursor_object_position_set(cursor, 1);
505

506
   e = evas_object_evas_get(txt);
507
   efl_ui_focus_util_focus(txt);
508
   evas_event_feed_key_down(e, "Right", "Right", "Right", "Right", time(NULL), NULL);
509

510
   ck_assert_int_eq(4, efl_text_cursor_object_position_get(cursor));
511

512
   efl_text_cursor_object_position_set(cursor, 1);
513
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT);
514
   efl_text_cursor_object_move(cursor, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT);
515
   rc = efl_text_cursor_object_content_geometry_get(cursor);
516
   rc2 = efl_ui_scrollable_viewport_geometry_get(txt);
517

518
   efl_text_cursor_object_position_set(cursor, 0);
519
   click_object_at(win, rc2.x + rc.x + (rc.w/2), rc2.y + rc.y + (rc.h/2));
520

521
   ck_assert_int_eq(4, efl_text_cursor_object_position_get(cursor));
522

523
   efl_del(txt);
524
   efl_del(win);
525
}
526
EFL_END_TEST
527
*/
528

529
void efl_ui_test_text(TCase *tc)
530
{
531
   tcase_add_test(tc, text_cnp);
532
   tcase_add_test(tc, text_all_select_all_unselect);
533
   tcase_add_test(tc, text_selection);
534
   tcase_add_test(tc, text_user_change);
535
   tcase_add_test(tc, text_scroll_mode);
536
   tcase_add_test(tc, text_change_event);
537
   tcase_add_test(tc, text_keys_handler);
538
   tcase_add_test(tc, text_editable);
539
   tcase_add_test(tc, text_multiline_selection);
540
   tcase_add_test(tc, text_singleline_cursor_movement);
541
   tcase_add_test(tc, text_multiline_singleline_cursor_pos);
542
   tcase_add_test(tc, text_on_startup);
543
// works on some systemd and not others - is suepct font or harfbuzz system
544
// dependency issue... for now - disable.
545
//   tcase_add_test(tc, text_keyboard_mouse_cluster_cursor_movement);
546
}
547

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.