aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/edje/src/lib/edje_util.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/edje/src/lib/edje_util.c546
1 files changed, 479 insertions, 67 deletions
diff --git a/libraries/edje/src/lib/edje_util.c b/libraries/edje/src/lib/edje_util.c
index 2205ba3..4ce22b5 100644
--- a/libraries/edje/src/lib/edje_util.c
+++ b/libraries/edje/src/lib/edje_util.c
@@ -905,7 +905,7 @@ edje_object_part_exists(const Evas_Object *obj, const char *part)
905 905
906 ed = _edje_fetch(obj); 906 ed = _edje_fetch(obj);
907 if ((!ed) || (!part)) return EINA_FALSE; 907 if ((!ed) || (!part)) return EINA_FALSE;
908 rp = _edje_real_part_recursive_get(ed, (char *)part); 908 rp = _edje_real_part_recursive_get(ed, part);
909 if (!rp) return EINA_FALSE; 909 if (!rp) return EINA_FALSE;
910 return EINA_TRUE; 910 return EINA_TRUE;
911} 911}
@@ -922,7 +922,7 @@ edje_object_part_object_get(const Evas_Object *obj, const char *part)
922 /* Need to recalc before providing the object. */ 922 /* Need to recalc before providing the object. */
923 _edje_recalc_do(ed); 923 _edje_recalc_do(ed);
924 924
925 rp = _edje_real_part_recursive_get(ed, (char *)part); 925 rp = _edje_real_part_recursive_get(ed, part);
926 if (!rp) return NULL; 926 if (!rp) return NULL;
927 return rp->object; 927 return rp->object;
928} 928}
@@ -946,7 +946,7 @@ edje_object_part_geometry_get(const Evas_Object *obj, const char *part, Evas_Coo
946 /* Need to recalc before providing the object. */ 946 /* Need to recalc before providing the object. */
947 _edje_recalc_do(ed); 947 _edje_recalc_do(ed);
948 948
949 rp = _edje_real_part_recursive_get(ed, (char *)part); 949 rp = _edje_real_part_recursive_get(ed, part);
950 if (!rp) 950 if (!rp)
951 { 951 {
952 if (x) *x = 0; 952 if (x) *x = 0;
@@ -1014,6 +1014,7 @@ _edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char
1014 if (text) rp->text.text = eina_stringshare_add(text); 1014 if (text) rp->text.text = eina_stringshare_add(text);
1015 rp->edje->dirty = 1; 1015 rp->edje->dirty = 1;
1016 rp->edje->recalc_call = 1; 1016 rp->edje->recalc_call = 1;
1017 rp->edje->recalc_hints = 1;
1017#ifdef EDJE_CALC_CACHE 1018#ifdef EDJE_CALC_CACHE
1018 rp->invalidate = 1; 1019 rp->invalidate = 1;
1019#endif 1020#endif
@@ -1058,6 +1059,63 @@ _edje_object_part_text_raw_append(Evas_Object *obj, Edje_Real_Part *rp, const ch
1058 return EINA_TRUE; 1059 return EINA_TRUE;
1059} 1060}
1060 1061
1062EAPI void
1063edje_object_part_text_style_user_push(Evas_Object *obj, const char *part,
1064 const char *style)
1065{
1066 Edje *ed;
1067 Edje_Real_Part *rp;
1068 Evas_Textblock_Style *ts;
1069
1070 ed = _edje_fetch(obj);
1071 if ((!ed) || (!part) || (!style)) return;
1072 rp = _edje_real_part_recursive_get(ed, part);
1073 if (!rp) return;
1074 if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return;
1075
1076 ts = evas_textblock_style_new();
1077 evas_textblock_style_set(ts, style);
1078 evas_object_textblock_style_user_push(rp->object, ts);
1079 evas_textblock_style_free(ts);
1080 ed->recalc_hints = 1;
1081}
1082
1083EAPI void
1084edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part)
1085{
1086 Edje *ed;
1087 Edje_Real_Part *rp;
1088
1089 ed = _edje_fetch(obj);
1090 if ((!ed) || (!part)) return;
1091 rp = _edje_real_part_recursive_get(ed, part);
1092 if (!rp) return;
1093 if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return;
1094
1095 evas_object_textblock_style_user_pop(rp->object);
1096 ed->recalc_hints = 1;
1097}
1098
1099EAPI const char *
1100edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part)
1101{
1102 Edje *ed;
1103 Edje_Real_Part *rp;
1104 const Evas_Textblock_Style *ts;
1105
1106 ed = _edje_fetch(obj);
1107 if ((!ed) || (!part)) return NULL;
1108 rp = _edje_real_part_recursive_get(ed, part);
1109 if (!rp) return NULL;
1110 if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return NULL;
1111
1112 ts = evas_object_textblock_style_user_peek(rp->object);
1113 if (ts)
1114 return evas_textblock_style_get(ts);
1115 else
1116 return NULL;
1117}
1118
1061EAPI Eina_Bool 1119EAPI Eina_Bool
1062edje_object_part_text_set(Evas_Object *obj, const char *part, const char *text) 1120edje_object_part_text_set(Evas_Object *obj, const char *part, const char *text)
1063{ 1121{
@@ -1066,7 +1124,7 @@ edje_object_part_text_set(Evas_Object *obj, const char *part, const char *text)
1066 1124
1067 ed = _edje_fetch(obj); 1125 ed = _edje_fetch(obj);
1068 if ((!ed) || (!part)) return EINA_FALSE; 1126 if ((!ed) || (!part)) return EINA_FALSE;
1069 rp = _edje_real_part_recursive_get(ed, (char *)part); 1127 rp = _edje_real_part_recursive_get(ed, part);
1070 if (!rp) return EINA_FALSE; 1128 if (!rp) return EINA_FALSE;
1071 if ((rp->part->type != EDJE_PART_TYPE_TEXT) && 1129 if ((rp->part->type != EDJE_PART_TYPE_TEXT) &&
1072 (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return EINA_FALSE; 1130 (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return EINA_FALSE;
@@ -1085,7 +1143,7 @@ edje_object_part_text_get(const Evas_Object *obj, const char *part)
1085 /* Need to recalc before providing the object. */ 1143 /* Need to recalc before providing the object. */
1086 _edje_recalc_do(ed); 1144 _edje_recalc_do(ed);
1087 1145
1088 rp = _edje_real_part_recursive_get(ed, (char *)part); 1146 rp = _edje_real_part_recursive_get(ed, part);
1089 if (!rp) return NULL; 1147 if (!rp) return NULL;
1090 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1148 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1091 return _edje_entry_text_get(rp); 1149 return _edje_entry_text_get(rp);
@@ -1241,7 +1299,7 @@ edje_object_part_text_unescaped_get(const Evas_Object *obj, const char *part)
1241 /* Need to recalc before providing the object. */ 1299 /* Need to recalc before providing the object. */
1242 _edje_recalc_do(ed); 1300 _edje_recalc_do(ed);
1243 1301
1244 rp = _edje_real_part_recursive_get(ed, (char *)part); 1302 rp = _edje_real_part_recursive_get(ed, part);
1245 if (!rp) return NULL; 1303 if (!rp) return NULL;
1246 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1304 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1247 { 1305 {
@@ -1268,7 +1326,7 @@ edje_object_part_text_selection_get(const Evas_Object *obj, const char *part)
1268 1326
1269 ed = _edje_fetch(obj); 1327 ed = _edje_fetch(obj);
1270 if ((!ed) || (!part)) return NULL; 1328 if ((!ed) || (!part)) return NULL;
1271 rp = _edje_real_part_recursive_get(ed, (char *)part); 1329 rp = _edje_real_part_recursive_get(ed, part);
1272 if (!rp) return NULL; 1330 if (!rp) return NULL;
1273 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1331 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1274 return _edje_entry_selection_get(rp); 1332 return _edje_entry_selection_get(rp);
@@ -1283,7 +1341,7 @@ edje_object_part_text_select_none(const Evas_Object *obj, const char *part)
1283 1341
1284 ed = _edje_fetch(obj); 1342 ed = _edje_fetch(obj);
1285 if ((!ed) || (!part)) return; 1343 if ((!ed) || (!part)) return;
1286 rp = _edje_real_part_recursive_get(ed, (char *)part); 1344 rp = _edje_real_part_recursive_get(ed, part);
1287 if (!rp) return; 1345 if (!rp) return;
1288 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1346 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1289 _edje_entry_select_none(rp); 1347 _edje_entry_select_none(rp);
@@ -1297,7 +1355,7 @@ edje_object_part_text_select_all(const Evas_Object *obj, const char *part)
1297 1355
1298 ed = _edje_fetch(obj); 1356 ed = _edje_fetch(obj);
1299 if ((!ed) || (!part)) return; 1357 if ((!ed) || (!part)) return;
1300 rp = _edje_real_part_recursive_get(ed, (char *)part); 1358 rp = _edje_real_part_recursive_get(ed, part);
1301 if (!rp) return; 1359 if (!rp) return;
1302 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1360 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1303 _edje_entry_select_all(rp); 1361 _edje_entry_select_all(rp);
@@ -1311,13 +1369,14 @@ edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *tex
1311 1369
1312 ed = _edje_fetch(obj); 1370 ed = _edje_fetch(obj);
1313 if ((!ed) || (!part)) return; 1371 if ((!ed) || (!part)) return;
1314 rp = _edje_real_part_recursive_get(ed, (char *)part); 1372 rp = _edje_real_part_recursive_get(ed, part);
1315 if (!rp) return; 1373 if (!rp) return;
1316 if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return; 1374 if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return;
1317 if (rp->part->entry_mode <= EDJE_ENTRY_EDIT_MODE_NONE) return; 1375 if (rp->part->entry_mode <= EDJE_ENTRY_EDIT_MODE_NONE) return;
1318 _edje_entry_text_markup_insert(rp, text); 1376 _edje_entry_text_markup_insert(rp, text);
1319 rp->edje->dirty = 1; 1377 rp->edje->dirty = 1;
1320 rp->edje->recalc_call = 1; 1378 rp->edje->recalc_call = 1;
1379 rp->edje->recalc_hints = 1;
1321#ifdef EDJE_CALC_CACHE 1380#ifdef EDJE_CALC_CACHE
1322 rp->invalidate = 1; 1381 rp->invalidate = 1;
1323#endif 1382#endif
@@ -1334,12 +1393,13 @@ edje_object_part_text_append(Evas_Object *obj, const char *part, const char *tex
1334 1393
1335 ed = _edje_fetch(obj); 1394 ed = _edje_fetch(obj);
1336 if ((!ed) || (!part)) return; 1395 if ((!ed) || (!part)) return;
1337 rp = _edje_real_part_recursive_get(ed, (char *)part); 1396 rp = _edje_real_part_recursive_get(ed, part);
1338 if (!rp) return; 1397 if (!rp) return;
1339 if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return; 1398 if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return;
1340 _edje_object_part_text_raw_append(obj, rp, part, text); 1399 _edje_object_part_text_raw_append(obj, rp, part, text);
1341 rp->edje->dirty = 1; 1400 rp->edje->dirty = 1;
1342 rp->edje->recalc_call = 1; 1401 rp->edje->recalc_call = 1;
1402 rp->edje->recalc_hints = 1;
1343#ifdef EDJE_CALC_CACHE 1403#ifdef EDJE_CALC_CACHE
1344 rp->invalidate = 1; 1404 rp->invalidate = 1;
1345#endif 1405#endif
@@ -1356,7 +1416,7 @@ edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part)
1356 1416
1357 ed = _edje_fetch(obj); 1417 ed = _edje_fetch(obj);
1358 if ((!ed) || (!part)) return NULL; 1418 if ((!ed) || (!part)) return NULL;
1359 rp = _edje_real_part_recursive_get(ed, (char *)part); 1419 rp = _edje_real_part_recursive_get(ed, part);
1360 if (!rp) return NULL; 1420 if (!rp) return NULL;
1361 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1421 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1362 return _edje_entry_anchors_list(rp); 1422 return _edje_entry_anchors_list(rp);
@@ -1371,7 +1431,7 @@ edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *pa
1371 1431
1372 ed = _edje_fetch(obj); 1432 ed = _edje_fetch(obj);
1373 if ((!ed) || (!part)) return NULL; 1433 if ((!ed) || (!part)) return NULL;
1374 rp = _edje_real_part_recursive_get(ed, (char *)part); 1434 rp = _edje_real_part_recursive_get(ed, part);
1375 if (!rp) return NULL; 1435 if (!rp) return NULL;
1376 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1436 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1377 return _edje_entry_anchor_geometry_get(rp, anchor); 1437 return _edje_entry_anchor_geometry_get(rp, anchor);
@@ -1386,7 +1446,7 @@ edje_object_part_text_item_list_get(const Evas_Object *obj, const char *part)
1386 1446
1387 ed = _edje_fetch(obj); 1447 ed = _edje_fetch(obj);
1388 if ((!ed) || (!part)) return NULL; 1448 if ((!ed) || (!part)) return NULL;
1389 rp = _edje_real_part_recursive_get(ed, (char *)part); 1449 rp = _edje_real_part_recursive_get(ed, part);
1390 if (!rp) return NULL; 1450 if (!rp) return NULL;
1391 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1451 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1392 return _edje_entry_items_list(rp); 1452 return _edje_entry_items_list(rp);
@@ -1401,7 +1461,7 @@ edje_object_part_text_item_geometry_get(const Evas_Object *obj, const char *part
1401 1461
1402 ed = _edje_fetch(obj); 1462 ed = _edje_fetch(obj);
1403 if ((!ed) || (!part)) return EINA_FALSE; 1463 if ((!ed) || (!part)) return EINA_FALSE;
1404 rp = _edje_real_part_recursive_get(ed, (char *)part); 1464 rp = _edje_real_part_recursive_get(ed, part);
1405 if (!rp) return EINA_FALSE; 1465 if (!rp) return EINA_FALSE;
1406 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1466 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1407 return _edje_entry_item_geometry_get(rp, item, cx, cy, cw, ch); 1467 return _edje_entry_item_geometry_get(rp, item, cx, cy, cw, ch);
@@ -1420,7 +1480,7 @@ edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *pa
1420 if (w) *w = 0; 1480 if (w) *w = 0;
1421 if (h) *h = 0; 1481 if (h) *h = 0;
1422 if ((!ed) || (!part)) return; 1482 if ((!ed) || (!part)) return;
1423 rp = _edje_real_part_recursive_get(ed, (char *)part); 1483 rp = _edje_real_part_recursive_get(ed, part);
1424 if (!rp) return; 1484 if (!rp) return;
1425 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1485 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1426 { 1486 {
@@ -1432,6 +1492,20 @@ edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *pa
1432} 1492}
1433 1493
1434EAPI void 1494EAPI void
1495edje_object_part_text_user_insert(const Evas_Object *obj, const char *part, const char *text)
1496{
1497 Edje *ed;
1498 Edje_Real_Part *rp;
1499
1500 ed = _edje_fetch(obj);
1501 if ((!ed) || (!part)) return;
1502 rp = _edje_real_part_recursive_get(ed, part);
1503 if (!rp) return;
1504 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1505 _edje_entry_user_insert(rp, text);
1506}
1507
1508EAPI void
1435edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow) 1509edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow)
1436{ 1510{
1437 Edje *ed; 1511 Edje *ed;
@@ -1439,7 +1513,7 @@ edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part,
1439 1513
1440 ed = _edje_fetch(obj); 1514 ed = _edje_fetch(obj);
1441 if ((!ed) || (!part)) return; 1515 if ((!ed) || (!part)) return;
1442 rp = _edje_real_part_recursive_get(ed, (char *)part); 1516 rp = _edje_real_part_recursive_get(ed, part);
1443 if (!rp) return; 1517 if (!rp) return;
1444 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1518 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1445 _edje_entry_select_allow_set(rp, allow); 1519 _edje_entry_select_allow_set(rp, allow);
@@ -1453,7 +1527,7 @@ edje_object_part_text_select_abort(const Evas_Object *obj, const char *part)
1453 1527
1454 ed = _edje_fetch(obj); 1528 ed = _edje_fetch(obj);
1455 if ((!ed) || (!part)) return; 1529 if ((!ed) || (!part)) return;
1456 rp = _edje_real_part_recursive_get(ed, (char *)part); 1530 rp = _edje_real_part_recursive_get(ed, part);
1457 if (!rp) return; 1531 if (!rp) return;
1458 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1532 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1459 _edje_entry_select_abort(rp); 1533 _edje_entry_select_abort(rp);
@@ -1467,7 +1541,7 @@ edje_object_part_text_select_begin(const Evas_Object *obj, const char *part)
1467 1541
1468 ed = _edje_fetch(obj); 1542 ed = _edje_fetch(obj);
1469 if ((!ed) || (!part)) return; 1543 if ((!ed) || (!part)) return;
1470 rp = _edje_real_part_recursive_get(ed, (char *)part); 1544 rp = _edje_real_part_recursive_get(ed, part);
1471 if (!rp) return; 1545 if (!rp) return;
1472 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1546 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1473 _edje_entry_select_begin(rp); 1547 _edje_entry_select_begin(rp);
@@ -1481,12 +1555,30 @@ edje_object_part_text_select_extend(const Evas_Object *obj, const char *part)
1481 1555
1482 ed = _edje_fetch(obj); 1556 ed = _edje_fetch(obj);
1483 if ((!ed) || (!part)) return; 1557 if ((!ed) || (!part)) return;
1484 rp = _edje_real_part_recursive_get(ed, (char *)part); 1558 rp = _edje_real_part_recursive_get(ed, part);
1485 if (!rp) return; 1559 if (!rp) return;
1486 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1560 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1487 _edje_entry_select_extend(rp); 1561 _edje_entry_select_extend(rp);
1488} 1562}
1489 1563
1564EAPI void *
1565edje_object_part_text_imf_context_get(const Evas_Object *obj, const char *part)
1566{
1567 Edje *ed;
1568 Edje_Real_Part *rp;
1569
1570 ed = _edje_fetch(obj);
1571 if ((!ed) || (!part)) return NULL;
1572
1573 rp = _edje_real_part_recursive_get(ed, (char *)part);
1574 if (!rp) return NULL;
1575
1576 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1577 return _edje_entry_imf_context_get(rp);
1578 else
1579 return NULL;
1580}
1581
1490EAPI Eina_Bool 1582EAPI Eina_Bool
1491edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) 1583edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur)
1492{ 1584{
@@ -1495,7 +1587,7 @@ edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Curso
1495 1587
1496 ed = _edje_fetch(obj); 1588 ed = _edje_fetch(obj);
1497 if ((!ed) || (!part)) return EINA_FALSE; 1589 if ((!ed) || (!part)) return EINA_FALSE;
1498 rp = _edje_real_part_recursive_get(ed, (char *)part); 1590 rp = _edje_real_part_recursive_get(ed, part);
1499 if (!rp) return EINA_FALSE; 1591 if (!rp) return EINA_FALSE;
1500 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1592 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1501 { 1593 {
@@ -1512,7 +1604,7 @@ edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Curso
1512 1604
1513 ed = _edje_fetch(obj); 1605 ed = _edje_fetch(obj);
1514 if ((!ed) || (!part)) return EINA_FALSE; 1606 if ((!ed) || (!part)) return EINA_FALSE;
1515 rp = _edje_real_part_recursive_get(ed, (char *)part); 1607 rp = _edje_real_part_recursive_get(ed, part);
1516 if (!rp) return EINA_FALSE; 1608 if (!rp) return EINA_FALSE;
1517 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1609 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1518 { 1610 {
@@ -1529,7 +1621,7 @@ edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor
1529 1621
1530 ed = _edje_fetch(obj); 1622 ed = _edje_fetch(obj);
1531 if ((!ed) || (!part)) return EINA_FALSE; 1623 if ((!ed) || (!part)) return EINA_FALSE;
1532 rp = _edje_real_part_recursive_get(ed, (char *)part); 1624 rp = _edje_real_part_recursive_get(ed, part);
1533 if (!rp) return EINA_FALSE; 1625 if (!rp) return EINA_FALSE;
1534 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1626 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1535 { 1627 {
@@ -1546,7 +1638,7 @@ edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Curso
1546 1638
1547 ed = _edje_fetch(obj); 1639 ed = _edje_fetch(obj);
1548 if ((!ed) || (!part)) return EINA_FALSE; 1640 if ((!ed) || (!part)) return EINA_FALSE;
1549 rp = _edje_real_part_recursive_get(ed, (char *)part); 1641 rp = _edje_real_part_recursive_get(ed, part);
1550 if (!rp) return EINA_FALSE; 1642 if (!rp) return EINA_FALSE;
1551 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1643 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1552 { 1644 {
@@ -1563,7 +1655,7 @@ edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_
1563 1655
1564 ed = _edje_fetch(obj); 1656 ed = _edje_fetch(obj);
1565 if ((!ed) || (!part)) return; 1657 if ((!ed) || (!part)) return;
1566 rp = _edje_real_part_recursive_get(ed, (char *)part); 1658 rp = _edje_real_part_recursive_get(ed, part);
1567 if (!rp) return; 1659 if (!rp) return;
1568 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1660 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1569 { 1661 {
@@ -1579,7 +1671,7 @@ edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cu
1579 1671
1580 ed = _edje_fetch(obj); 1672 ed = _edje_fetch(obj);
1581 if ((!ed) || (!part)) return; 1673 if ((!ed) || (!part)) return;
1582 rp = _edje_real_part_recursive_get(ed, (char *)part); 1674 rp = _edje_real_part_recursive_get(ed, part);
1583 if (!rp) return; 1675 if (!rp) return;
1584 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1676 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1585 { 1677 {
@@ -1595,7 +1687,7 @@ edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Curso
1595 1687
1596 ed = _edje_fetch(obj); 1688 ed = _edje_fetch(obj);
1597 if ((!ed) || (!part)) return; 1689 if ((!ed) || (!part)) return;
1598 rp = _edje_real_part_recursive_get(ed, (char *)part); 1690 rp = _edje_real_part_recursive_get(ed, part);
1599 if (!rp) return; 1691 if (!rp) return;
1600 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1692 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1601 { 1693 {
@@ -1611,7 +1703,7 @@ edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part,
1611 1703
1612 ed = _edje_fetch(obj); 1704 ed = _edje_fetch(obj);
1613 if ((!ed) || (!part)) return; 1705 if ((!ed) || (!part)) return;
1614 rp = _edje_real_part_recursive_get(ed, (char *)part); 1706 rp = _edje_real_part_recursive_get(ed, part);
1615 if (!rp) return; 1707 if (!rp) return;
1616 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1708 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1617 { 1709 {
@@ -1627,7 +1719,7 @@ edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Ed
1627 1719
1628 ed = _edje_fetch(obj); 1720 ed = _edje_fetch(obj);
1629 if ((!ed) || (!part)) return; 1721 if ((!ed) || (!part)) return;
1630 rp = _edje_real_part_recursive_get(ed, (char *)part); 1722 rp = _edje_real_part_recursive_get(ed, part);
1631 if (!rp) return; 1723 if (!rp) return;
1632 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1724 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1633 { 1725 {
@@ -1644,7 +1736,7 @@ edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part,
1644 1736
1645 ed = _edje_fetch(obj); 1737 ed = _edje_fetch(obj);
1646 if ((!ed) || (!part)) return EINA_FALSE; 1738 if ((!ed) || (!part)) return EINA_FALSE;
1647 rp = _edje_real_part_recursive_get(ed, (char *)part); 1739 rp = _edje_real_part_recursive_get(ed, part);
1648 if (!rp) return EINA_FALSE; 1740 if (!rp) return EINA_FALSE;
1649 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1741 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1650 { 1742 {
@@ -1661,7 +1753,7 @@ edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *p
1661 1753
1662 ed = _edje_fetch(obj); 1754 ed = _edje_fetch(obj);
1663 if ((!ed) || (!part)) return EINA_FALSE; 1755 if ((!ed) || (!part)) return EINA_FALSE;
1664 rp = _edje_real_part_recursive_get(ed, (char *)part); 1756 rp = _edje_real_part_recursive_get(ed, part);
1665 if (!rp) return EINA_FALSE; 1757 if (!rp) return EINA_FALSE;
1666 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1758 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1667 { 1759 {
@@ -1678,7 +1770,7 @@ edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const
1678 1770
1679 ed = _edje_fetch(obj); 1771 ed = _edje_fetch(obj);
1680 if ((!ed) || (!part)) return 0; 1772 if ((!ed) || (!part)) return 0;
1681 rp = _edje_real_part_recursive_get(ed, (char *)part); 1773 rp = _edje_real_part_recursive_get(ed, part);
1682 if (!rp) return 0; 1774 if (!rp) return 0;
1683 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1775 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1684 { 1776 {
@@ -1738,7 +1830,7 @@ edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char *part, E
1738} 1830}
1739 1831
1740EAPI void 1832EAPI void
1741edje_object_part_text_input_panel_layout_set(const Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout) 1833edje_object_part_text_imf_context_reset(const Evas_Object *obj, const char *part)
1742{ 1834{
1743 Edje *ed; 1835 Edje *ed;
1744 Edje_Real_Part *rp; 1836 Edje_Real_Part *rp;
@@ -1749,7 +1841,23 @@ edje_object_part_text_input_panel_layout_set(const Evas_Object *obj, const char
1749 if (!rp) return; 1841 if (!rp) return;
1750 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1842 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1751 { 1843 {
1752 return _edje_entry_input_panel_layout_set(rp, layout); 1844 _edje_entry_imf_context_reset(rp);
1845 }
1846}
1847
1848EAPI void
1849edje_object_part_text_input_panel_layout_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout)
1850{
1851 Edje *ed;
1852 Edje_Real_Part *rp;
1853
1854 ed = _edje_fetch(obj);
1855 if ((!ed) || (!part)) return;
1856 rp = _edje_real_part_recursive_get(ed, part);
1857 if (!rp) return;
1858 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1859 {
1860 _edje_entry_input_panel_layout_set(rp, layout);
1753 } 1861 }
1754} 1862}
1755 1863
@@ -1771,14 +1879,14 @@ edje_object_part_text_input_panel_layout_get(const Evas_Object *obj, const char
1771} 1879}
1772 1880
1773EAPI void 1881EAPI void
1774edje_object_part_text_autocapital_type_set(const Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type) 1882edje_object_part_text_autocapital_type_set(Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type)
1775{ 1883{
1776 Edje *ed; 1884 Edje *ed;
1777 Edje_Real_Part *rp; 1885 Edje_Real_Part *rp;
1778 1886
1779 ed = _edje_fetch(obj); 1887 ed = _edje_fetch(obj);
1780 if ((!ed) || (!part)) return; 1888 if ((!ed) || (!part)) return;
1781 rp = _edje_real_part_recursive_get(ed, (char *)part); 1889 rp = _edje_real_part_recursive_get(ed, part);
1782 if (!rp) return; 1890 if (!rp) return;
1783 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1891 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1784 { 1892 {
@@ -1794,7 +1902,7 @@ edje_object_part_text_autocapital_type_get(const Evas_Object *obj, const char *p
1794 1902
1795 ed = _edje_fetch(obj); 1903 ed = _edje_fetch(obj);
1796 if ((!ed) || (!part)) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; 1904 if ((!ed) || (!part)) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE;
1797 rp = _edje_real_part_recursive_get(ed, (char *)part); 1905 rp = _edje_real_part_recursive_get(ed, part);
1798 if (!rp) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; 1906 if (!rp) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE;
1799 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1907 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1800 { 1908 {
@@ -1804,7 +1912,40 @@ edje_object_part_text_autocapital_type_get(const Evas_Object *obj, const char *p
1804} 1912}
1805 1913
1806EAPI void 1914EAPI void
1807edje_object_part_text_input_panel_enabled_set(const Evas_Object *obj, const char *part, Eina_Bool enabled) 1915edje_object_part_text_prediction_allow_set(Evas_Object *obj, const char *part, Eina_Bool prediction)
1916{
1917 Edje *ed;
1918 Edje_Real_Part *rp;
1919
1920 ed = _edje_fetch(obj);
1921 if ((!ed) || (!part)) return;
1922 rp = _edje_real_part_recursive_get(ed, part);
1923 if (!rp) return;
1924 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1925 {
1926 _edje_entry_prediction_allow_set(rp, prediction);
1927 }
1928}
1929
1930EAPI Eina_Bool
1931edje_object_part_text_prediction_allow_get(const Evas_Object *obj, const char *part)
1932{
1933 Edje *ed;
1934 Edje_Real_Part *rp;
1935
1936 ed = _edje_fetch(obj);
1937 if ((!ed) || (!part)) return EINA_FALSE;
1938 rp = _edje_real_part_recursive_get(ed, part);
1939 if (!rp) return EINA_FALSE;
1940 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1941 {
1942 return _edje_entry_prediction_allow_get(rp);
1943 }
1944 return EINA_FALSE;
1945}
1946
1947EAPI void
1948edje_object_part_text_input_panel_enabled_set(Evas_Object *obj, const char *part, Eina_Bool enabled)
1808{ 1949{
1809 Edje *ed; 1950 Edje *ed;
1810 Edje_Real_Part *rp; 1951 Edje_Real_Part *rp;
@@ -1815,7 +1956,7 @@ edje_object_part_text_input_panel_enabled_set(const Evas_Object *obj, const char
1815 if (!rp) return; 1956 if (!rp) return;
1816 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) 1957 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1817 { 1958 {
1818 return _edje_entry_input_panel_enabled_set(rp, enabled); 1959 _edje_entry_input_panel_enabled_set(rp, enabled);
1819 } 1960 }
1820} 1961}
1821 1962
@@ -1837,6 +1978,165 @@ edje_object_part_text_input_panel_enabled_get(const Evas_Object *obj, const char
1837} 1978}
1838 1979
1839EAPI void 1980EAPI void
1981edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part)
1982{
1983 Edje *ed;
1984 Edje_Real_Part *rp;
1985
1986 ed = _edje_fetch(obj);
1987 if ((!ed) || (!part)) return;
1988 rp = _edje_real_part_recursive_get(ed, part);
1989 if (!rp) return;
1990 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
1991 _edje_entry_input_panel_show(rp);
1992}
1993
1994EAPI void
1995edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part)
1996{
1997 Edje *ed;
1998 Edje_Real_Part *rp;
1999
2000 ed = _edje_fetch(obj);
2001 if ((!ed) || (!part)) return;
2002 rp = _edje_real_part_recursive_get(ed, part);
2003 if (!rp) return;
2004 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2005 _edje_entry_input_panel_hide(rp);
2006}
2007
2008EAPI void
2009edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang)
2010{
2011 Edje *ed;
2012 Edje_Real_Part *rp;
2013
2014 ed = _edje_fetch(obj);
2015 if ((!ed) || (!part)) return;
2016 rp = _edje_real_part_recursive_get(ed, part);
2017 if (!rp) return;
2018 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2019 {
2020 _edje_entry_input_panel_language_set(rp, lang);
2021 }
2022}
2023
2024EAPI Edje_Input_Panel_Lang
2025edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part)
2026{
2027 Edje *ed;
2028 Edje_Real_Part *rp;
2029
2030 ed = _edje_fetch(obj);
2031 if ((!ed) || (!part)) return EDJE_INPUT_PANEL_LANG_AUTOMATIC;
2032 rp = _edje_real_part_recursive_get(ed, part);
2033 if (!rp) return EDJE_INPUT_PANEL_LANG_AUTOMATIC;
2034 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2035 {
2036 return _edje_entry_input_panel_language_get(rp);
2037 }
2038 return EDJE_INPUT_PANEL_LANG_AUTOMATIC;
2039}
2040
2041EAPI void
2042edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len)
2043{
2044 Edje *ed;
2045 Edje_Real_Part *rp;
2046
2047 ed = _edje_fetch(obj);
2048 if ((!ed) || (!part)) return;
2049 rp = _edje_real_part_recursive_get(ed, part);
2050 if (!rp) return;
2051 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2052 {
2053 _edje_entry_input_panel_imdata_set(rp, data, len);
2054 }
2055}
2056
2057EAPI void
2058edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len)
2059{
2060 Edje *ed;
2061 Edje_Real_Part *rp;
2062
2063 ed = _edje_fetch(obj);
2064 if ((!ed) || (!part)) return;
2065 rp = _edje_real_part_recursive_get(ed, part);
2066 if (!rp) return;
2067 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2068 {
2069 _edje_entry_input_panel_imdata_get(rp, data, len);
2070 }
2071}
2072
2073EAPI void
2074edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type)
2075{
2076 Edje *ed;
2077 Edje_Real_Part *rp;
2078
2079 ed = _edje_fetch(obj);
2080 if ((!ed) || (!part)) return;
2081 rp = _edje_real_part_recursive_get(ed, part);
2082 if (!rp) return;
2083 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2084 {
2085 _edje_entry_input_panel_return_key_type_set(rp, return_key_type);
2086 }
2087}
2088
2089EAPI Edje_Input_Panel_Return_Key_Type
2090edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part)
2091{
2092 Edje *ed;
2093 Edje_Real_Part *rp;
2094
2095 ed = _edje_fetch(obj);
2096 if ((!ed) || (!part)) return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT;
2097 rp = _edje_real_part_recursive_get(ed, part);
2098 if (!rp) return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT;
2099 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2100 {
2101 return _edje_entry_input_panel_return_key_type_get(rp);
2102 }
2103 return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT;
2104}
2105
2106EAPI void
2107edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled)
2108{
2109 Edje *ed;
2110 Edje_Real_Part *rp;
2111
2112 ed = _edje_fetch(obj);
2113 if ((!ed) || (!part)) return;
2114 rp = _edje_real_part_recursive_get(ed, part);
2115 if (!rp) return;
2116 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2117 {
2118 _edje_entry_input_panel_return_key_disabled_set(rp, disabled);
2119 }
2120}
2121
2122EAPI Eina_Bool
2123edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part)
2124{
2125 Edje *ed;
2126 Edje_Real_Part *rp;
2127
2128 ed = _edje_fetch(obj);
2129 if ((!ed) || (!part)) return EINA_FALSE;
2130 rp = _edje_real_part_recursive_get(ed, part);
2131 if (!rp) return EINA_FALSE;
2132 if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
2133 {
2134 return _edje_entry_input_panel_return_key_disabled_get(rp);
2135 }
2136 return EINA_FALSE;
2137}
2138
2139EAPI void
1840edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data) 2140edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data)
1841{ 2141{
1842 Edje *ed; 2142 Edje *ed;
@@ -1901,6 +2201,71 @@ edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, const char *p
1901 return NULL; 2201 return NULL;
1902} 2202}
1903 2203
2204EAPI void
2205edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data)
2206{
2207 Edje *ed;
2208 Edje_Markup_Filter_Callback *cb;
2209
2210 ed = _edje_fetch(obj);
2211 if ((!ed) || (!part)) return;
2212 cb = calloc(1, sizeof(Edje_Markup_Filter_Callback));
2213 cb->part = eina_stringshare_add(part);
2214 cb->func = func;
2215 cb->data = (void *)data;
2216 ed->markup_filter_callbacks =
2217 eina_list_append(ed->markup_filter_callbacks, cb);
2218}
2219
2220EAPI void *
2221edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func)
2222{
2223 Edje *ed;
2224 Edje_Markup_Filter_Callback *cb;
2225 Eina_List *l;
2226
2227 ed = _edje_fetch(obj);
2228 if ((!ed) || (!part)) return NULL;
2229 EINA_LIST_FOREACH(ed->markup_filter_callbacks, l, cb)
2230 {
2231 if ((!strcmp(cb->part, part)) && (cb->func == func))
2232 {
2233 void *data = cb->data;
2234 ed->markup_filter_callbacks =
2235 eina_list_remove_list(ed->markup_filter_callbacks, l);
2236 eina_stringshare_del(cb->part);
2237 free(cb);
2238 return data;
2239 }
2240 }
2241 return NULL;
2242}
2243
2244EAPI void *
2245edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data)
2246{
2247 Edje *ed;
2248 Edje_Markup_Filter_Callback *cb;
2249 Eina_List *l;
2250
2251 ed = _edje_fetch(obj);
2252 if ((!ed) || (!part)) return NULL;
2253 EINA_LIST_FOREACH(ed->markup_filter_callbacks, l, cb)
2254 {
2255 if ((!strcmp(cb->part, part)) && (cb->func == func) &&
2256 (cb->data == data))
2257 {
2258 void *tmp = cb->data;
2259 ed->markup_filter_callbacks =
2260 eina_list_remove_list(ed->markup_filter_callbacks, l);
2261 eina_stringshare_del(cb->part);
2262 free(cb);
2263 return tmp;
2264 }
2265 }
2266 return NULL;
2267}
2268
1904EAPI Eina_Bool 2269EAPI Eina_Bool
1905edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_swallow) 2270edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_swallow)
1906{ 2271{
@@ -1927,8 +2292,12 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw
1927 edje_object_part_unswallow(rp->edje->obj, obj_swallow); 2292 edje_object_part_unswallow(rp->edje->obj, obj_swallow);
1928 } 2293 }
1929 2294
1930 rp = _edje_real_part_recursive_get(ed, (char *)part); 2295 rp = _edje_real_part_recursive_get(ed, part);
1931 if (!rp) return EINA_FALSE; 2296 if (!rp)
2297 {
2298 DBG("cannot swallow part %s: part not exist!", part);
2299 return EINA_FALSE;
2300 }
1932 if (rp->part->type != EDJE_PART_TYPE_SWALLOW) 2301 if (rp->part->type != EDJE_PART_TYPE_SWALLOW)
1933 { 2302 {
1934 ERR("cannot swallow part %s: not swallow type!", rp->part->name); 2303 ERR("cannot swallow part %s: not swallow type!", rp->part->name);
@@ -2261,7 +2630,7 @@ edje_object_part_swallow_get(const Evas_Object *obj, const char *part)
2261 /* Need to recalc before providing the object. */ 2630 /* Need to recalc before providing the object. */
2262 _edje_recalc_do(ed); 2631 _edje_recalc_do(ed);
2263 2632
2264 rp = _edje_real_part_recursive_get(ed, (char *)part); 2633 rp = _edje_real_part_recursive_get(ed, part);
2265 if (!rp) return NULL; 2634 if (!rp) return NULL;
2266 return rp->swallowed_object; 2635 return rp->swallowed_object;
2267} 2636}
@@ -2353,8 +2722,8 @@ EAPI Eina_Bool
2353edje_object_parts_extends_calc(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) 2722edje_object_parts_extends_calc(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
2354{ 2723{
2355 Edje *ed; 2724 Edje *ed;
2356 Evas_Coord x1 = INT_MAX, y1 = INT_MAX; 2725 Evas_Coord xx1 = INT_MAX, yy1 = INT_MAX;
2357 Evas_Coord x2 = 0, y2 = 0; 2726 Evas_Coord xx2 = 0, yy2 = 0;
2358 unsigned int i; 2727 unsigned int i;
2359 2728
2360 ed = _edje_fetch(obj); 2729 ed = _edje_fetch(obj);
@@ -2386,18 +2755,18 @@ edje_object_parts_extends_calc(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, E
2386 rpx2 = rpx1 + rp->w; 2755 rpx2 = rpx1 + rp->w;
2387 rpy2 = rpy1 + rp->h; 2756 rpy2 = rpy1 + rp->h;
2388 2757
2389 if (x1 > rpx1) x1 = rpx1; 2758 if (xx1 > rpx1) xx1 = rpx1;
2390 if (y1 > rpy1) y1 = rpy1; 2759 if (yy1 > rpy1) yy1 = rpy1;
2391 if (x2 < rpx2) x2 = rpx2; 2760 if (xx2 < rpx2) xx2 = rpx2;
2392 if (y2 < rpy2) y2 = rpy2; 2761 if (yy2 < rpy2) yy2 = rpy2;
2393 } 2762 }
2394 2763
2395 ed->calc_only = 0; 2764 ed->calc_only = 0;
2396 2765
2397 if (x) *x = x1; 2766 if (x) *x = xx1;
2398 if (y) *y = y1; 2767 if (y) *y = yy1;
2399 if (w) *w = x2 - x1; 2768 if (w) *w = xx2 - xx1;
2400 if (h) *h = y2 - y1; 2769 if (h) *h = yy2 - yy1;
2401 2770
2402 return EINA_TRUE; 2771 return EINA_TRUE;
2403} 2772}
@@ -2448,6 +2817,7 @@ edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Co
2448 maxh = 0; 2817 maxh = 0;
2449 } 2818 }
2450 pep = NULL; 2819 pep = NULL;
2820 has_non_fixed_tb = EINA_FALSE;
2451 for (i = 0; i < ed->table_parts_size; i++) 2821 for (i = 0; i < ed->table_parts_size; i++)
2452 { 2822 {
2453 Edje_Real_Part *ep; 2823 Edje_Real_Part *ep;
@@ -2569,7 +2939,7 @@ edje_object_part_state_get(const Evas_Object *obj, const char *part, double *val
2569 /* Need to recalc before providing the object. */ 2939 /* Need to recalc before providing the object. */
2570 _edje_recalc_do(ed); 2940 _edje_recalc_do(ed);
2571 2941
2572 rp = _edje_real_part_recursive_get(ed, (char *)part); 2942 rp = _edje_real_part_recursive_get(ed, part);
2573 if (!rp) 2943 if (!rp)
2574 { 2944 {
2575 if (val_ret) *val_ret = 0; 2945 if (val_ret) *val_ret = 0;
@@ -2609,7 +2979,7 @@ edje_object_part_drag_dir_get(const Evas_Object *obj, const char *part)
2609 /* Need to recalc before providing the object. */ 2979 /* Need to recalc before providing the object. */
2610 _edje_recalc_do(ed); 2980 _edje_recalc_do(ed);
2611 2981
2612 rp = _edje_real_part_recursive_get(ed, (char *)part); 2982 rp = _edje_real_part_recursive_get(ed, part);
2613 if (!rp) return EDJE_DRAG_DIR_NONE; 2983 if (!rp) return EDJE_DRAG_DIR_NONE;
2614 if ((rp->part->dragable.x) && (rp->part->dragable.y)) return EDJE_DRAG_DIR_XY; 2984 if ((rp->part->dragable.x) && (rp->part->dragable.y)) return EDJE_DRAG_DIR_XY;
2615 else if (rp->part->dragable.x) return EDJE_DRAG_DIR_X; 2985 else if (rp->part->dragable.x) return EDJE_DRAG_DIR_X;
@@ -2625,7 +2995,7 @@ edje_object_part_drag_value_set(Evas_Object *obj, const char *part, double dx, d
2625 2995
2626 ed = _edje_fetch(obj); 2996 ed = _edje_fetch(obj);
2627 if ((!ed) || (!part)) return EINA_FALSE; 2997 if ((!ed) || (!part)) return EINA_FALSE;
2628 rp = _edje_real_part_recursive_get(ed, (char *)part); 2998 rp = _edje_real_part_recursive_get(ed, part);
2629 if (!rp) return EINA_FALSE; 2999 if (!rp) return EINA_FALSE;
2630 if (!rp->drag) return EINA_FALSE; 3000 if (!rp->drag) return EINA_FALSE;
2631 if (rp->drag->down.count > 0) return EINA_FALSE; 3001 if (rp->drag->down.count > 0) return EINA_FALSE;
@@ -2666,7 +3036,7 @@ edje_object_part_drag_value_get(const Evas_Object *obj, const char *part, double
2666 /* Need to recalc before providing the object. */ 3036 /* Need to recalc before providing the object. */
2667 _edje_recalc_do(ed); 3037 _edje_recalc_do(ed);
2668 3038
2669 rp = _edje_real_part_recursive_get(ed, (char *)part); 3039 rp = _edje_real_part_recursive_get(ed, part);
2670 if (!rp || !rp->drag) 3040 if (!rp || !rp->drag)
2671 { 3041 {
2672 if (dx) *dx = 0; 3042 if (dx) *dx = 0;
@@ -2690,7 +3060,7 @@ edje_object_part_drag_size_set(Evas_Object *obj, const char *part, double dw, do
2690 3060
2691 ed = _edje_fetch(obj); 3061 ed = _edje_fetch(obj);
2692 if ((!ed) || (!part)) return EINA_FALSE; 3062 if ((!ed) || (!part)) return EINA_FALSE;
2693 rp = _edje_real_part_recursive_get(ed, (char *)part); 3063 rp = _edje_real_part_recursive_get(ed, part);
2694 if (!rp) return EINA_FALSE; 3064 if (!rp) return EINA_FALSE;
2695 if (!rp->drag) return EINA_FALSE; 3065 if (!rp->drag) return EINA_FALSE;
2696 if (dw < 0.0) dw = 0.0; 3066 if (dw < 0.0) dw = 0.0;
@@ -2726,7 +3096,7 @@ edje_object_part_drag_size_get(const Evas_Object *obj, const char *part, double
2726 /* Need to recalc before providing the object. */ 3096 /* Need to recalc before providing the object. */
2727 _edje_recalc_do(ed); 3097 _edje_recalc_do(ed);
2728 3098
2729 rp = _edje_real_part_recursive_get(ed, (char *)part); 3099 rp = _edje_real_part_recursive_get(ed, part);
2730 if (!rp || !rp->drag) 3100 if (!rp || !rp->drag)
2731 { 3101 {
2732 if (dw) *dw = 0; 3102 if (dw) *dw = 0;
@@ -2746,7 +3116,7 @@ edje_object_part_drag_step_set(Evas_Object *obj, const char *part, double dx, do
2746 3116
2747 ed = _edje_fetch(obj); 3117 ed = _edje_fetch(obj);
2748 if ((!ed) || (!part)) return EINA_FALSE; 3118 if ((!ed) || (!part)) return EINA_FALSE;
2749 rp = _edje_real_part_recursive_get(ed, (char *)part); 3119 rp = _edje_real_part_recursive_get(ed, part);
2750 if (!rp) return EINA_FALSE; 3120 if (!rp) return EINA_FALSE;
2751 if (!rp->drag) return EINA_FALSE; 3121 if (!rp->drag) return EINA_FALSE;
2752 if (dx < 0.0) dx = 0.0; 3122 if (dx < 0.0) dx = 0.0;
@@ -2778,7 +3148,7 @@ edje_object_part_drag_step_get(const Evas_Object *obj, const char *part, double
2778 /* Need to recalc before providing the object. */ 3148 /* Need to recalc before providing the object. */
2779 _edje_recalc_do(ed); 3149 _edje_recalc_do(ed);
2780 3150
2781 rp = _edje_real_part_recursive_get(ed, (char *)part); 3151 rp = _edje_real_part_recursive_get(ed, part);
2782 if (!rp || !rp->drag) 3152 if (!rp || !rp->drag)
2783 { 3153 {
2784 if (dx) *dx = 0; 3154 if (dx) *dx = 0;
@@ -2798,7 +3168,7 @@ edje_object_part_drag_page_set(Evas_Object *obj, const char *part, double dx, do
2798 3168
2799 ed = _edje_fetch(obj); 3169 ed = _edje_fetch(obj);
2800 if ((!ed) || (!part)) return EINA_FALSE; 3170 if ((!ed) || (!part)) return EINA_FALSE;
2801 rp = _edje_real_part_recursive_get(ed, (char *)part); 3171 rp = _edje_real_part_recursive_get(ed, part);
2802 if (!rp) return EINA_FALSE; 3172 if (!rp) return EINA_FALSE;
2803 if (!rp->drag) return EINA_FALSE; 3173 if (!rp->drag) return EINA_FALSE;
2804 if (dx < 0.0) dx = 0.0; 3174 if (dx < 0.0) dx = 0.0;
@@ -2830,7 +3200,7 @@ edje_object_part_drag_page_get(const Evas_Object *obj, const char *part, double
2830 /* Need to recalc before providing the object. */ 3200 /* Need to recalc before providing the object. */
2831 _edje_recalc_do(ed); 3201 _edje_recalc_do(ed);
2832 3202
2833 rp = _edje_real_part_recursive_get(ed, (char *)part); 3203 rp = _edje_real_part_recursive_get(ed, part);
2834 if (!rp || !rp->drag) 3204 if (!rp || !rp->drag)
2835 { 3205 {
2836 if (dx) *dx = 0; 3206 if (dx) *dx = 0;
@@ -2851,7 +3221,7 @@ edje_object_part_drag_step(Evas_Object *obj, const char *part, double dx, double
2851 3221
2852 ed = _edje_fetch(obj); 3222 ed = _edje_fetch(obj);
2853 if ((!ed) || (!part)) return EINA_FALSE; 3223 if ((!ed) || (!part)) return EINA_FALSE;
2854 rp = _edje_real_part_recursive_get(ed, (char *)part); 3224 rp = _edje_real_part_recursive_get(ed, part);
2855 if (!rp) return EINA_FALSE; 3225 if (!rp) return EINA_FALSE;
2856 if (!rp->drag) return EINA_FALSE; 3226 if (!rp->drag) return EINA_FALSE;
2857 if (rp->drag->down.count > 0) return EINA_FALSE; 3227 if (rp->drag->down.count > 0) return EINA_FALSE;
@@ -2881,7 +3251,7 @@ edje_object_part_drag_page(Evas_Object *obj, const char *part, double dx, double
2881 3251
2882 ed = _edje_fetch(obj); 3252 ed = _edje_fetch(obj);
2883 if ((!ed) || (!part)) return EINA_FALSE; 3253 if ((!ed) || (!part)) return EINA_FALSE;
2884 rp = _edje_real_part_recursive_get(ed, (char *)part); 3254 rp = _edje_real_part_recursive_get(ed, part);
2885 if (!rp) return EINA_FALSE; 3255 if (!rp) return EINA_FALSE;
2886 if (!rp->drag) return EINA_FALSE; 3256 if (!rp->drag) return EINA_FALSE;
2887 if (rp->drag->down.count > 0) return EINA_FALSE; 3257 if (rp->drag->down.count > 0) return EINA_FALSE;
@@ -3557,9 +3927,21 @@ edje_object_preload(Evas_Object *obj, Eina_Bool cancel)
3557 else if (ep->type == EDJE_PART_TYPE_GROUP) 3927 else if (ep->type == EDJE_PART_TYPE_GROUP)
3558 { 3928 {
3559 if (rp->swallowed_object) { 3929 if (rp->swallowed_object) {
3560 edje_object_signal_callback_del(rp->swallowed_object, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE, _edje_object_signal_preload_cb); 3930 char *tmp;
3561 edje_object_signal_callback_add(rp->swallowed_object, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE, _edje_object_signal_preload_cb, ed); 3931
3562 edje_object_preload(rp->swallowed_object, cancel); 3932 if (rp->part->name)
3933 {
3934 tmp = alloca(strlen(rp->part->name) + 2);
3935 sprintf(tmp, "%s:", rp->part->name);
3936
3937 edje_object_signal_callback_del(obj, EDJE_PRELOAD_EMISSION, tmp, _edje_object_signal_preload_cb);
3938 edje_object_signal_callback_add(obj, EDJE_PRELOAD_EMISSION, tmp, _edje_object_signal_preload_cb, ed);
3939 edje_object_preload(rp->swallowed_object, cancel);
3940 }
3941 else
3942 {
3943 ed->preload_count--;
3944 }
3563 3945
3564 count--; 3946 count--;
3565 } 3947 }
@@ -3574,6 +3956,30 @@ edje_object_preload(Evas_Object *obj, Eina_Bool cancel)
3574 return EINA_TRUE; 3956 return EINA_TRUE;
3575} 3957}
3576 3958
3959EAPI void
3960edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update)
3961{
3962 Edje *ed;
3963
3964 ed = _edje_fetch(obj);
3965 if (!ed) return ;
3966 if (ed->update_hints == !!update) return ;
3967
3968 ed->update_hints = !!update;
3969 if (update) ed->recalc_hints = 1;
3970}
3971
3972EAPI Eina_Bool
3973edje_object_update_hints_get(Evas_Object *obj)
3974{
3975 Edje *ed;
3976
3977 ed = _edje_fetch(obj);
3978 if (!ed) return EINA_FALSE;
3979
3980 return ed->update_hints;
3981}
3982
3577Eina_Bool 3983Eina_Bool
3578_edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) 3984_edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan)
3579{ 3985{
@@ -4037,9 +4443,11 @@ _edje_real_part_swallow_hints_update(Edje_Real_Part *rp)
4037 { 4443 {
4038 Evas_Coord w, h; 4444 Evas_Coord w, h;
4039 4445
4446#if 0
4040 edje_object_size_min_get(rp->swallowed_object, &w, &h); 4447 edje_object_size_min_get(rp->swallowed_object, &w, &h);
4041 rp->swallow_params.min.w = w; 4448 rp->swallow_params.min.w = w;
4042 rp->swallow_params.min.h = h; 4449 rp->swallow_params.min.h = h;
4450#endif
4043 edje_object_size_max_get(rp->swallowed_object, &w, &h); 4451 edje_object_size_max_get(rp->swallowed_object, &w, &h);
4044 rp->swallow_params.max.w = w; 4452 rp->swallow_params.max.w = w;
4045 rp->swallow_params.max.h = h; 4453 rp->swallow_params.max.h = h;
@@ -4050,8 +4458,10 @@ _edje_real_part_swallow_hints_update(Edje_Real_Part *rp)
4050 Evas_Coord w, h; 4458 Evas_Coord w, h;
4051 4459
4052 evas_object_geometry_get(rp->swallowed_object, NULL, NULL, &w, &h); 4460 evas_object_geometry_get(rp->swallowed_object, NULL, NULL, &w, &h);
4461#if 0
4053 rp->swallow_params.min.w = w; 4462 rp->swallow_params.min.w = w;
4054 rp->swallow_params.min.h = h; 4463 rp->swallow_params.min.h = h;
4464#endif
4055 rp->swallow_params.max.w = w; 4465 rp->swallow_params.max.w = w;
4056 rp->swallow_params.max.h = h; 4466 rp->swallow_params.max.h = h;
4057 } 4467 }
@@ -4127,6 +4537,7 @@ _edje_real_part_swallow(Edje_Real_Part *rp,
4127 _edje_real_part_swallow_hints_update(rp); 4537 _edje_real_part_swallow_hints_update(rp);
4128 rp->edje->dirty = 1; 4538 rp->edje->dirty = 1;
4129 rp->edje->recalc_call = 1; 4539 rp->edje->recalc_call = 1;
4540 rp->edje->recalc_hints = 1;
4130 _edje_recalc(rp->edje); 4541 _edje_recalc(rp->edje);
4131 return; 4542 return;
4132 } 4543 }
@@ -4171,6 +4582,7 @@ _edje_real_part_swallow(Edje_Real_Part *rp,
4171 4582
4172 rp->edje->dirty = 1; 4583 rp->edje->dirty = 1;
4173 rp->edje->recalc_call = 1; 4584 rp->edje->recalc_call = 1;
4585 rp->edje->recalc_hints = 1;
4174 _edje_recalc(rp->edje); 4586 _edje_recalc(rp->edje);
4175} 4587}
4176 4588