1 /** 2 * Elementary Layout-based widgets may declare part proxies, i.e., aliases for 3 * real theme part names to expose to the API calls: 4 * - elm_layout_text_set() 5 * - elm_layout_text_get() 6 * - elm_layout_content_set() 7 * - elm_layout_content_get() 8 * - elm_layout_content_unset() 9 * and their equivalents. This list must be set on the "_smart_set_user()" 10 * function of inheriting widgets, so that part aliasing is handled 11 * automatically for them. 12 * 13 * @deprecated Should not be used outside of EFL internal code. 14 */ 15 16 struct _Elm_Layout_Part_Alias_Description 17 { 18 const char *alias; /**< Alternate name for a given (real) part. Calls 19 * receiving this string as a part name will be translated 20 * to the string at 21 * Efl.Ui.Layout_Part_Proxies_Description::real_part */ 22 const char *real_part; /**< Target part name for the alias set on 23 * Efl.Ui.Layout_Part_Proxies_Description::real_part. An 24 * example of usage would be "default" on that field, 25 * with "elm.content.swallow" on this one */ 26 }; 27 28 typedef Eo Elm_Layout; 29 30 typedef struct _Elm_Layout_Part_Alias_Description Elm_Layout_Part_Alias_Description; 31 32 /** 33 * Add a new layout to the parent 34 * 35 * @param parent The parent object 36 * @return The new object or NULL if it cannot be created 37 * 38 * @see elm_layout_file_set() 39 * @see elm_layout_theme_set() 40 * 41 * @ingroup Elm_Layout 42 */ 43 EAPI Evas_Object *elm_layout_add(Evas_Object *parent); 44 45 /** 46 * @brief Set the edje group from the elementary theme that will be used as 47 * layout. 48 * 49 * Note that @c style will be the new style of @c obj too, as in an @ref 50 * elm_object_style_set call. 51 * 52 * @param[in] klass The class of the group. 53 * @param[in] group The group. 54 * @param[in] style The style to used. 55 * 56 * @return @c true on success, @c false otherwise 57 * 58 * @ingroup Elm_Layout 59 */ 60 EAPI Eina_Bool elm_layout_theme_set(Evas_Object *obj, const char *klass, const char *group, const char *style); 61 62 /** 63 * @brief Get the edje data from the given layout. 64 * 65 * This function fetches data specified inside the edje theme of this layout. 66 * This function return NULL if data is not found. 67 * 68 * In EDC this comes from a data block within the group block that @c obj was 69 * loaded from. 70 * 71 * @param[in] key The data key. 72 * 73 * @return The edje data string. 74 */ 75 EAPI const char *elm_layout_data_get(const Evas_Object *obj, const char *key); 76 77 /** 78 * @brief Eval sizing. 79 * 80 * Manually forces a sizing re-evaluation. This is useful when the minimum size 81 * required by the edje theme of this layout has changed. The change on the 82 * minimum size required by the edje theme is not immediately reported to the 83 * elementary layout, so one needs to call this function in order to tell the 84 * widget (layout) that it needs to reevaluate its own size. 85 * 86 * The minimum size of the theme is calculated based on minimum size of parts, 87 * the size of elements inside containers like box and table, etc. All of this 88 * can change due to state changes, and that's when this function should be 89 * called. 90 * 91 * Also note that a standard signal of "size,eval" "elm" emitted from the edje 92 * object will cause this to happen too. 93 * 94 * @ingroup Elm_Layout 95 */ 96 EAPI void elm_layout_sizing_eval(Evas_Object *obj); 97 98 /** 99 * @brief Request sizing reevaluation, restricted to current width and/or 100 * height. 101 * 102 * Useful mostly when there are TEXTBLOCK parts defining the height of the 103 * object and nothing else restricting it to a minimum width. Calling this 104 * function will restrict the minimum size in the Edje calculation to whatever 105 * size it the layout has at the moment. 106 * 107 * @param[in] width Restrict minimum size to the current width. 108 * @param[in] height Restrict minimum size ot the current height. 109 * 110 * @since 1.8 111 * 112 * @ingroup Elm_Layout 113 */ 114 EAPI void elm_layout_sizing_restricted_eval(Evas_Object *obj, Eina_Bool width, Eina_Bool height); 115 116 /** 117 * @brief Add a callback for a (Edje) signal emitted by a layout widget's 118 * underlying Edje object. 119 * 120 * This function connects a callback function to a signal emitted by the 121 * underlying Edje object of @c obj. Globs are accepted in either the emission 122 * or source strings. 123 * 124 * @param[in] emission The signal's name string. 125 * @param[in] source The signal's source string. 126 * @param[in] func The callback function to be executed when the signal is 127 * emitted. 128 * @param[in] data A pointer to data to pass in to the callback function. 129 * 130 * @ingroup Elm_Layout 131 */ 132 EAPI void elm_layout_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); 133 134 /** 135 * @brief Remove a signal-triggered callback from a given layout widget. 136 * 137 * This function removes the last callback attached to a signal emitted by the 138 * underlying Edje object of @c obj, with parameters @c emission, @c source and 139 * @c func matching exactly those passed to a previous call to 140 * @ref elm_layout_signal_callback_add. The data pointer that was passed to 141 * this call will be returned. 142 * 143 * @param[in] emission The signal's name string. 144 * @param[in] source The signal's source string. 145 * @param[in] func The callback function being executed when the signal was 146 * emitted. 147 * 148 * @return The data pointer of the signal callback (passed on 149 * @ref elm_layout_signal_callback_add) or @c null on errors. 150 * 151 * @ingroup Elm_Layout 152 */ 153 EAPI void *elm_layout_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); 154 155 /** 156 * @brief Send a (Edje) signal to a given layout widget's underlying Edje 157 * object. 158 * 159 * This function sends a signal to the underlying Edje object of @c obj. An 160 * Edje program on that Edje object's definition can respond to a signal by 161 * specifying matching 'signal' and 'source' fields. 162 * 163 * @param[in] emission The signal's name string. 164 * @param[in] source The signal's source string. 165 * 166 * @ingroup Elm_Layout 167 */ 168 EAPI void elm_layout_signal_emit(Evas_Object *obj, const char *emission, const char *source); 169 170 /** 171 * @brief Get the edje layout 172 * 173 * This returns the edje object. It is not expected to be used to then swallow 174 * objects via @ref edje_object_part_swallow for example. Use @ref 175 * elm_layout_content_set instead so child object handling and sizing is done 176 * properly. 177 * 178 * @note This function should only be used if you really need to call some low 179 * level Edje function on this edje object. All the common stuff (setting text, 180 * emitting signals, hooking callbacks to signals, etc.) can be done with 181 * proper elementary functions. 182 * 183 * @return An Evas_Object with the edje layout settings loaded @ref 184 * elm_layout_file_set. 185 * 186 * @ingroup Elm_Layout 187 */ 188 EAPI Efl_Canvas_Object *elm_layout_edje_get(const Evas_Object *obj); 189 190 /** 191 * Get the list of swallow parts of a given container widget 192 * 193 * @param obj The layout object 194 * 195 * @return list of swallow parts which should be freed by the user program with elm_list_free() 196 * 197 * @since 1.9 198 * 199 * @ingroup Elm_Layout 200 */ 201 EAPI Eina_List *elm_layout_content_swallow_list_get(const Evas_Object *obj); 202 203 /** 204 * Set the layout content. 205 * 206 * @param obj The layout object 207 * @param swallow The swallow part name in the edje file 208 * @param content The child that will be added in this layout object 209 * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise 210 * 211 * Once the content object is set, a previously set one will be deleted. 212 * If you want to keep that old content object, use the 213 * elm_layout_content_unset() function. 214 * 215 * @note In an Edje theme, the part used as a content container is called 216 * @c SWALLOW. This is why the parameter name is called @p swallow, but it is 217 * expected to be a part name just like the second parameter of 218 * elm_layout_box_append(). 219 * 220 * @see elm_layout_box_append() 221 * @see elm_layout_content_get() 222 * @see elm_layout_content_unset() 223 * 224 * @see @ref secBox 225 * 226 * @ingroup Elm_Layout 227 */ 228 EAPI Eina_Bool elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content); 229 230 /** 231 * Get the child object in the given content part. 232 * 233 * @param obj The layout object 234 * @param swallow The SWALLOW part to get its content 235 * 236 * @return The swallowed object or NULL if none or an error occurred 237 * 238 * @ingroup Elm_Layout 239 */ 240 EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow); 241 242 /** 243 * Unset the layout content. 244 * 245 * @param obj The layout object 246 * @param swallow The swallow part name in the edje file 247 * @return The content that was being used 248 * 249 * Unparent and return the content object which was set for this part. 250 * 251 * @ingroup Elm_Layout 252 */ 253 EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow); 254 255 /** 256 * Set the file that will be used as layout 257 * 258 * @return (1 = success, 0 = error) 259 * 260 * @ingroup Elm_Layout 261 * 262 * @param[in] file The path to file (edj) that will be used as layout 263 * @param[in] group The group that the layout belongs in edje file 264 */ 265 EAPI Eina_Bool elm_layout_file_set(Eo *obj, const char *file, const char *group); 266 267 /** 268 * Get the loaded file 269 * 270 * 271 * @ingroup Elm_Layout 272 * 273 * @param file The path to file (edj) used as layout 274 * @param group The group that the layout belongs in edje file 275 * 276 * @since 1.14 277 */ 278 EAPI void elm_layout_file_get(Eo *obj, const char **file, const char **group); 279 280 /** 281 * Set the mmap file that will be used as layout 282 * 283 * @return (1 = success, 0 = error) 284 * 285 * @ingroup Elm_Layout 286 * 287 * @param[in] file Eina_File (edj) that will be used as layout 288 * @param[in] group The group that the layout belongs in edje file 289 * 290 * @since 1.19 291 */ 292 EAPI Eina_Bool elm_layout_mmap_set(Eo *obj, const Eina_File *file, const char *group); 293 294 /** 295 * Get the loaded mmap file 296 * 297 * @ingroup Elm_Layout 298 * 299 * @param file Eina_File (edj) used as layout 300 * @param group The group that the layout belongs in edje file 301 * 302 * @since 1.19 303 */ 304 EAPI void elm_layout_mmap_get(Eo *obj, const Eina_File **file, const char **group); 305 306 /** 307 * @brief Freezes the Elementary layout object. 308 * 309 * This function puts all changes on hold. Successive freezes will nest, 310 * requiring an equal number of thaws. 311 * 312 * See also @ref elm_layout_thaw. 313 * 314 * @return The frozen state or 0 on error. 315 */ 316 EAPI int elm_layout_freeze(Evas_Object *obj); 317 318 /** 319 * @brief Thaws the Elementary object. 320 * 321 * This function thaws the given Edje object and the Elementary sizing calc. 322 * 323 * @note If successive freezings were done, an equal number of thaws will be 324 * required. 325 * 326 * See also @ref elm_layout_freeze. 327 * 328 * @return The frozen state or 0 if the object is not frozen or on error. 329 */ 330 EAPI int elm_layout_thaw(Evas_Object *obj); 331 332 /** 333 * @brief Append child to layout box part. 334 * 335 * Once the object is appended, it will become child of the layout. Its 336 * lifetime will be bound to the layout, whenever the layout dies the child 337 * will be deleted automatically. One should use @ref elm_layout_box_remove to 338 * make this layout forget about the object. 339 * 340 * @param[in] child The child object to append to box. 341 * 342 * @ingroup Elm_Layout 343 */ 344 EAPI Eina_Bool elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child); 345 346 /** 347 * @brief Prepend child to layout box part. 348 * 349 * Once the object is prepended, it will become child of the layout. Its 350 * lifetime will be bound to the layout, whenever the layout dies the child 351 * will be deleted automatically. One should use @ref elm_layout_box_remove to 352 * make this layout forget about the object. 353 * 354 * @param[in] child The child object to prepend to box. 355 * 356 * @ingroup Elm_Layout 357 */ 358 EAPI Eina_Bool elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child); 359 360 /** 361 * @brief Insert child to layout box part before a reference object. 362 * 363 * Once the object is inserted, it will become child of the layout. Its 364 * lifetime will be bound to the layout, whenever the layout dies the child 365 * will be deleted automatically. One should use @ref elm_layout_box_remove to 366 * make this layout forget about the object. 367 * 368 * @param[in] child The child object to insert into box. 369 * @param[in] reference Another reference object to insert before in box. 370 * 371 * @ingroup Elm_Layout 372 */ 373 EAPI Eina_Bool elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference); 374 375 /** 376 * @brief Insert child to layout box part at a given position. 377 * 378 * Once the object is inserted, it will become child of the layout. Its 379 * lifetime will be bound to the layout, whenever the layout dies the child 380 * will be deleted automatically. One should use @ref elm_layout_box_remove to 381 * make this layout forget about the object. 382 * 383 * @param[in] child The child object to insert into box. 384 * @param[in] pos The numeric position >=0 to insert the child. 385 * 386 * @ingroup Elm_Layout 387 */ 388 EAPI Eina_Bool elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos); 389 390 /** 391 * @brief Remove a child of the given part box. 392 * 393 * The object will be removed from the box part and its lifetime will not be 394 * handled by the layout anymore. This is equivalent to @ref 395 * elm_layout_content_unset for box. 396 * 397 * @param[in] child The object to remove from box. 398 * 399 * @return The object that was being used, or @c null if not found. 400 * 401 * @ingroup Elm_Layout 402 */ 403 EAPI Evas_Object *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child); 404 405 /** 406 * @brief Remove all children of the given part box. 407 * 408 * The objects will be removed from the box part and their lifetime will not be 409 * handled by the layout anymore. This is equivalent to 410 * @ref elm_layout_box_remove for all box children. 411 * 412 * @param[in] clear If true, then all objects will be deleted as well, 413 * otherwise they will just be removed and will be dangling on the canvas. 414 * 415 * @ingroup Elm_Layout 416 */ 417 EAPI Eina_Bool elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear); 418 419 /** 420 * @brief Insert child to layout table part. 421 * 422 * Once the object is inserted, it will become child of the table. Its lifetime 423 * will be bound to the layout, and whenever the layout dies the child will be 424 * deleted automatically. One should use @ref elm_layout_table_unpack to make 425 * this layout forget about the object. 426 * 427 * If @c colspan or @c rowspan are bigger than 1, that object will occupy more 428 * space than a single cell. 429 * 430 * See also @ref elm_layout_table_unpack, @ref elm_layout_table_clear. 431 * 432 * @param[in] child The child object to pack into table. 433 * @param[in] col The column to which the child should be added. (>= 0) 434 * @param[in] row The row to which the child should be added. (>= 0) 435 * @param[in] colspan How many columns should be used to store this object. (>= 436 * 1) 437 * @param[in] rowspan How many rows should be used to store this object. (>= 1) 438 * 439 * @ingroup Elm_Layout 440 */ 441 EAPI Eina_Bool elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); 442 443 /** 444 * @brief Unpack (remove) a child of the given part table. 445 * 446 * The object will be unpacked from the table part and its lifetime will not be 447 * handled by the layout anymore. This is equivalent to @ref 448 * elm_layout_content_unset for table. 449 * 450 * @param[in] child The object to remove from table. 451 * 452 * @return The object that was being used, or @c null if not found. 453 * 454 * @ingroup Elm_Layout 455 */ 456 EAPI Evas_Object *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child); 457 458 /** 459 * @brief Remove all the child objects of the given part table. 460 * 461 * The objects will be removed from the table part and their lifetime will not 462 * be handled by the layout anymore. This is equivalent to 463 * @ref elm_layout_table_unpack for all table children. 464 * 465 * @param[in] clear If true, then all objects will be deleted as well, 466 * otherwise they will just be removed and will be dangling on the canvas. 467 * 468 * @ingroup Elm_Layout 469 */ 470 EAPI Eina_Bool elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear); 471 472 /** 473 * @brief Get the edje data from the given layout. 474 * 475 * This function fetches data specified inside the edje theme of this layout. 476 * This function return NULL if data is not found. 477 * 478 * In EDC this comes from a data block within the group block that @c obj was 479 * loaded from. 480 * 481 * @param[in] key The data key. 482 * 483 * @return The edje data string. 484 * 485 * @ingroup Elm_Layout 486 */ 487 EAPI const char *elm_layout_data_get(const Evas_Object *obj, const char *key); 488 489 /** 490 * @brief Send a (Edje) signal to a given layout widget's underlying Edje 491 * object. 492 * 493 * This function sends a signal to the underlying Edje object of @c obj. An 494 * Edje program on that Edje object's definition can respond to a signal by 495 * specifying matching 'signal' and 'source' fields. 496 * 497 * @param[in] emission The signal's name string. 498 * @param[in] source The signal's source string. 499 * 500 * @ingroup Elm_Layout 501 */ 502 EAPI void elm_layout_signal_emit(Evas_Object *obj, const char *emission, const char *source); 503 504 /** 505 * @brief Add a callback for a (Edje) signal emitted by a layout widget's 506 * underlying Edje object. 507 * 508 * This function connects a callback function to a signal emitted by the 509 * underlying Edje object of @c obj. Globs are accepted in either the emission 510 * or source strings. 511 * 512 * @param[in] emission The signal's name string. 513 * @param[in] source The signal's source string. 514 * @param[in] func The callback function to be executed when the signal is 515 * emitted. 516 * @param[in] data A pointer to data to pass in to the callback function. 517 * 518 * @ingroup Elm_Layout 519 */ 520 EAPI void elm_layout_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); 521 522 /** 523 * @brief Remove a signal-triggered callback from a given layout widget. 524 * 525 * This function removes the last callback attached to a signal emitted by the 526 * underlying Edje object of @c obj, with parameters @c emission, @c source and 527 * @c func matching exactly those passed to a previous call to 528 * @ref elm_layout_signal_callback_add. The data pointer that was passed to 529 * this call will be returned. 530 * 531 * @param[in] emission The signal's name string. 532 * @param[in] source The signal's source string. 533 * @param[in] func The callback function being executed when the signal was 534 * emitted. 535 * 536 * @return The data pointer of the signal callback (passed on 537 * @ref elm_layout_signal_callback_add) or @c null on errors. 538 * 539 * @ingroup Elm_Layout 540 */ 541 EAPI void *elm_layout_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); 542 543 /** 544 * @brief Freezes the Elementary layout object. 545 * 546 * This function puts all changes on hold. Successive freezes will nest, 547 * requiring an equal number of thaws. 548 * 549 * See also @ref elm_layout_thaw. 550 * 551 * @return The frozen state or 0 on error. 552 * 553 * @ingroup Elm_Layout 554 */ 555 EAPI int elm_layout_freeze(Evas_Object *obj); 556 557 /** 558 * @brief Thaws the Elementary object. 559 * 560 * This function thaws the given Edje object and the Elementary sizing calc. 561 * 562 * @note If successive freezings were done, an equal number of thaws will be 563 * required. 564 * 565 * See also @ref elm_layout_freeze. 566 * 567 * @return The frozen state or 0 if the object is not frozen or on error. 568 * 569 * @ingroup Elm_Layout 570 */ 571 EAPI int elm_layout_thaw(Evas_Object *obj); 572 573 /** 574 * @brief Set the text of the given part. 575 * 576 * @param[in] part The TEXT part where to set the text. 577 * @param[in] text The text to set. 578 * 579 * @return @c true on success, @c false otherwise 580 * 581 * @ingroup Elm_Layout 582 */ 583 EAPI Eina_Bool elm_layout_text_set(Evas_Object *obj, const char * part, const char *text); 584 585 /** 586 * @brief Get the text set in the given part. 587 * 588 * @param[in] part The TEXT part where to set the text. 589 * 590 * @return The text to set. 591 * 592 * @ingroup Elm_Layout 593 */ 594 EAPI const char *elm_layout_text_get(const Evas_Object *obj, const char * part); 595 596 /** 597 * @brief Set accessibility to all texblock(text) parts in the layout object. 598 * 599 * @param[in] can_access Makes all textblock(text) parts in the layout @c obj 600 * possible to have accessibility. @c true means textblock(text) parts can be 601 * accessible. 602 * 603 * @return @c true on success or @c false on failure. If @c obj is not a proper 604 * layout object, @c false is returned. 605 * 606 * @since 1.7 607 * 608 * @ingroup Elm_Layout 609 */ 610 EAPI Eina_Bool elm_layout_edje_object_can_access_set(Evas_Object *obj, Eina_Bool can_access); 611 612 /** 613 * @brief Get accessibility state of texblock(text) parts in the layout object 614 * 615 * @return Makes all textblock(text) parts in the layout @c obj possible to 616 * have accessibility. @c true means textblock(text) parts can be accessible. 617 * 618 * @since 1.7 619 * 620 * @ingroup Elm_Layout 621 */ 622 EAPI Eina_Bool elm_layout_edje_object_can_access_get(const Evas_Object *obj); 623 624 /** 625 * @brief Sets if the cursor set should be searched on the theme or should use 626 * the provided by the engine, only. 627 * 628 * @note Before you set if should look on theme you should define a cursor with 629 * @ref elm_layout_part_cursor_set. By default it will only look for cursors 630 * provided by the engine. 631 * 632 * @param[in] part_name A part from loaded edje group. 633 * @param[in] engine_only If cursors should be just provided by the engine 634 * ($true) or should also search on widget's theme as well ($false) 635 * 636 * @return @c true on success or @c false on failure, that may be part not 637 * exists or it did not had a cursor set. 638 * 639 * @ingroup Elm_Layout 640 */ 641 EAPI Eina_Bool elm_layout_part_cursor_engine_only_set(Evas_Object *obj, const char *part_name, Eina_Bool engine_only); 642 643 /** 644 * @brief Get a specific cursor engine_only for an edje part. 645 * 646 * @param[in] part_name A part from loaded edje group. 647 * 648 * @return Whenever the cursor is just provided by engine or also from theme. 649 * 650 * @ingroup Elm_Layout 651 */ 652 EAPI Eina_Bool elm_layout_part_cursor_engine_only_get(const Evas_Object *obj, const char *part_name); 653 654 /** 655 * @brief Sets a specific cursor for an edje part. 656 * 657 * @param[in] part_name A part from loaded edje group. 658 * @param[in] cursor Cursor name to use, see Elementary_Cursor.h. 659 * 660 * @return @c true on success or @c false on failure, that may be part not 661 * exists or it has "mouse_events: 0". 662 * 663 * @ingroup Elm_Layout 664 */ 665 EAPI Eina_Bool elm_layout_part_cursor_set(Evas_Object *obj, const char *part_name, const char *cursor); 666 667 /** 668 * @brief Get the cursor to be shown when mouse is over an edje part. 669 * 670 * @param[in] part_name A part from loaded edje group. 671 * 672 * @return Cursor name 673 * 674 * @ingroup Elm_Layout 675 */ 676 EAPI const char *elm_layout_part_cursor_get(const Evas_Object *obj, const char *part_name); 677 678 /** 679 * @brief Sets a specific cursor style for an edje part. 680 * 681 * @param[in] part_name A part from loaded edje group. 682 * @param[in] style The theme style to use (default, transparent, ...). 683 * 684 * @return @c true on success or @c false on failure, that may be part not 685 * exists or it did not had a cursor set. 686 * 687 * @ingroup Elm_Layout 688 */ 689 EAPI Eina_Bool elm_layout_part_cursor_style_set(Evas_Object *obj, const char *part_name, const char *style); 690 691 /** 692 * @brief Get a specific cursor style for an edje part. 693 * 694 * @param[in] part_name A part from loaded edje group. 695 * 696 * @return The theme style in use, defaults to "default". If the object does 697 * not have a cursor set, then @c null is returned. 698 * 699 * @ingroup Elm_Layout 700 */ 701 EAPI const char *elm_layout_part_cursor_style_get(const Evas_Object *obj, const char *part_name); 702 703 /** 704 * @brief Unsets a cursor previously set with @ref elm_layout_part_cursor_set. 705 * 706 * @param[in] part_name A part from loaded edje group, that had a cursor set 707 * wit @ref elm_layout_part_cursor_set. 708 * 709 * @return @c true on success, @c false otherwise 710 * 711 * @ingroup Elm_Layout 712 */ 713 EAPI Eina_Bool elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name); 714