Merge branch 'master' into devs/hermet/lottie

This commit is contained in:
Hermet Park 2020-03-16 12:32:41 +09:00
commit 75f338b01c
8 changed files with 249 additions and 372 deletions

234
po/sr.po
View File

@ -4,23 +4,20 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
# Саша Петровић <salepetronije@gmail.com>, 2013, 2015.
#
#: src/lib/elementary/elm_config.c:4135
msgid ""
msgstr ""
"Project-Id-Version: а\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2019-04-15 12:03+0100\n"
"PO-Revision-Date: 2015-01-31 14:06+0100\n"
"Report-Msgid-Bugs-To: $MSGID_BUGS_ADDRESS\n"
"POT-Creation-Date: 2017-09-02 20:01+0200\n"
"PO-Revision-Date: 2020-03-08 19:04+0100\n"
"Last-Translator: Саша Петровић <salepetronije@gmail.com>\n"
"Language-Team: српски <xfce4@xfce4.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-06-14 05:42+0000\n"
"X-Generator: Gtranslator 2.91.6\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Launchpad-Export-Date: 2017-09-03 05:32+0000\n"
"X-Generator: Poedit 2.2.1\n"
"Language: sr\n"
#: src/lib/ecore/ecore_getopt.c:89
msgid "Version:"
@ -242,236 +239,220 @@ msgstr "Слике"
msgid "Videos"
msgstr "Видео снимци"
#: src/lib/elementary/elc_fileselector.c:1705
#: src/lib/elementary/elc_fileselector.c:1905
msgid "Up"
msgstr "Горе"
#: src/lib/elementary/elc_fileselector.c:1719
#: src/lib/elementary/elc_fileselector.c:1919
msgid "Home"
msgstr "Лична фасцикла"
#: src/lib/elementary/elc_fileselector.c:1738
#: src/lib/elementary/elc_fileselector.c:1938
msgid "Search"
msgstr "Тражи"
#: src/lib/elementary/elc_fileselector.c:2012
#: src/lib/elementary/elc_fileselector.c:2232
msgid "OK"
msgstr "У реду"
#: src/lib/elementary/elc_fileselector.c:2022
#: src/lib/elementary/elm_entry.c:1759 src/lib/elementary/elm_entry.c:1784
#: src/lib/elementary/elc_fileselector.c:2242
#: src/lib/elementary/elm_entry.c:1719 src/lib/elementary/elm_entry.c:1744
msgid "Cancel"
msgstr "Откажи"
#: src/lib/elementary/elc_hoversel.c:439 src/lib/elementary/efl_ui_button.c:208
#: src/lib/elementary/efl_ui_check.c:187 src/lib/elementary/elm_gengrid.c:1532
#: src/lib/elementary/elm_genlist.c:1769 src/lib/elementary/elm_list.c:2185
#: src/lib/elementary/efl_ui_radio.c:201
#: src/lib/elementary/elm_segment_control.c:525
#: src/lib/elementary/elm_spinner.c:1041 src/lib/elementary/elm_toolbar.c:2294
#: src/lib/elementary/elc_hoversel.c:436 src/lib/elementary/efl_ui_button.c:263
#: src/lib/elementary/efl_ui_check.c:197 src/lib/elementary/elm_gengrid.c:1470
#: src/lib/elementary/elm_genlist.c:1738 src/lib/elementary/elm_list.c:2155
#: src/lib/elementary/efl_ui_radio.c:199
#: src/lib/elementary/elm_segment_control.c:526
#: src/lib/elementary/efl_ui_spinner.c:1020
#: src/lib/elementary/elm_toolbar.c:2335
msgid "State: Disabled"
msgstr "Стање: онемогућено"
#: src/lib/elementary/elc_hoversel.c:652
#: src/lib/elementary/elc_hoversel.c:638
msgid "Hoversel"
msgstr ""
msgstr "Лебедна ћелија"
#: src/lib/elementary/elc_multibuttonentry.c:682
#: src/lib/elementary/elc_multibuttonentry.c:723
msgid "multi button entry label"
msgstr "ознака улаза са више дугмади"
#: src/lib/elementary/elc_multibuttonentry.c:704
#: src/lib/elementary/elc_multibuttonentry.c:745
msgid "multi button entry item"
msgstr "ставка улаза са више дугмади"
#: src/lib/elementary/elc_multibuttonentry.c:1586
#: src/lib/elementary/elc_multibuttonentry.c:1634
msgid "multi button entry"
msgstr "улаз са више дугмади"
#: src/lib/elementary/elc_naviframe.c:408
#: src/lib/elementary/elc_naviframe.c:436
#: src/lib/elementary/elc_naviframe.c:467
msgid "Title"
msgstr "Наслов"
#: src/lib/elementary/elc_naviframe.c:415
#, fuzzy
msgid "Subtitle"
msgstr "Наслов"
#: src/lib/elementary/elc_naviframe.c:968
#: src/lib/elementary/elc_naviframe.c:1186
#: src/lib/elementary/elc_naviframe.c:1026
#: src/lib/elementary/elc_naviframe.c:1244
msgid "Back"
msgstr "Назад"
#: src/lib/elementary/elc_naviframe.c:1358
#: src/lib/elementary/elc_naviframe.c:1342
msgid "Next"
msgstr "Следеће"
#: src/lib/elementary/elc_popup.c:320 src/lib/elementary/elc_popup.c:984
#: src/lib/elementary/elc_popup.c:308 src/lib/elementary/elc_popup.c:975
msgid "Popup Title"
msgstr "Искачући наслов"
#: src/lib/elementary/elc_popup.c:330 src/lib/elementary/elc_popup.c:1060
#: src/lib/elementary/elc_popup.c:318 src/lib/elementary/elc_popup.c:1051
msgid "Popup Body Text"
msgstr "Тело искачућег текста"
#: src/lib/elementary/elc_popup.c:1836
msgid "Alert"
msgstr ""
#: src/lib/elementary/elm_bubble.c:163
#: src/lib/elementary/elm_bubble.c:200
msgid "Bubble"
msgstr "Мехур"
#: src/lib/elementary/efl_ui_button.c:71
#: src/lib/elementary/efl_ui_button.c:70
msgid "Clicked"
msgstr "Кликнуто"
#: src/lib/elementary/efl_ui_button.c:250
#: src/lib/elementary/efl_ui_button.c:288
msgid "Button"
msgstr "Дугме"
#: src/lib/elementary/elm_calendar.c:225
#: src/lib/elementary/efl_ui_calendar.c:193
#: src/lib/elementary/elm_calendar.c:272
msgid "%B %Y"
msgstr "%B %Y"
#: src/lib/elementary/elm_calendar.c:231
#: src/lib/elementary/elm_calendar.c:278
msgid "%B"
msgstr "%B"
#: src/lib/elementary/elm_calendar.c:237
#: src/lib/elementary/elm_calendar.c:284
msgid "%Y"
msgstr "%Y"
#: src/lib/elementary/elm_calendar.c:363
#: src/lib/elementary/efl_ui_calendar.c:240
#: src/lib/elementary/elm_calendar.c:409
msgid "calendar item"
msgstr "ставка календара"
#: src/lib/elementary/elm_calendar.c:391
#: src/lib/elementary/efl_ui_calendar.c:267
#: src/lib/elementary/elm_calendar.c:436
msgid "calendar decrement month button"
msgstr "дугме померања месеца календара уназад"
#: src/lib/elementary/elm_calendar.c:397
#: src/lib/elementary/elm_calendar.c:442
msgid "calendar decrement year button"
msgstr "дугме померања година календара уназад"
#: src/lib/elementary/elm_calendar.c:403
#: src/lib/elementary/efl_ui_calendar.c:273
#: src/lib/elementary/elm_calendar.c:448
msgid "calendar increment month button"
msgstr "дугме померања месеца календара унапред"
#: src/lib/elementary/elm_calendar.c:409
#: src/lib/elementary/elm_calendar.c:454
msgid "calendar increment year button"
msgstr "дугме померања година календара унапред"
#: src/lib/elementary/elm_calendar.c:414
#: src/lib/elementary/efl_ui_calendar.c:278
#: src/lib/elementary/elm_calendar.c:459
msgid "calendar month"
msgstr "месец календара"
#: src/lib/elementary/elm_calendar.c:419
#: src/lib/elementary/elm_calendar.c:464
msgid "calendar year"
msgstr "година календара"
#: src/lib/elementary/efl_ui_check.c:76 src/lib/elementary/efl_ui_check.c:200
#: src/lib/elementary/efl_ui_radio.c:136 src/lib/elementary/efl_ui_radio.c:202
#: src/lib/elementary/efl_ui_check.c:65 src/lib/elementary/efl_ui_check.c:210
#: src/lib/elementary/efl_ui_radio.c:119 src/lib/elementary/efl_ui_radio.c:200
msgid "State: On"
msgstr "Стање : укључен"
#: src/lib/elementary/efl_ui_check.c:96 src/lib/elementary/efl_ui_check.c:212
#: src/lib/elementary/efl_ui_radio.c:204
#: src/lib/elementary/efl_ui_check.c:76 src/lib/elementary/efl_ui_check.c:222
#: src/lib/elementary/efl_ui_radio.c:202
msgid "State: Off"
msgstr "Стање: искључен"
#: src/lib/elementary/efl_ui_check.c:196 src/lib/elementary/efl_ui_check.c:209
#: src/lib/elementary/efl_ui_check.c:206 src/lib/elementary/efl_ui_check.c:219
msgid "State"
msgstr "Стање"
#: src/lib/elementary/efl_ui_check.c:348
#: src/lib/elementary/efl_ui_check.c:300
msgid "Check"
msgstr "Провера"
#: src/lib/elementary/elm_clock.c:309
#: src/lib/elementary/elm_clock.c:303
msgid "clock increment button for am,pm"
msgstr "дугме за увећање часовника са am,pm"
#: src/lib/elementary/elm_clock.c:317
#: src/lib/elementary/elm_clock.c:311
msgid "clock decrement button for am,pm"
msgstr "дугме за смањивање часовника са am,pm"
#: src/lib/elementary/elm_clock.c:714
#: src/lib/elementary/elm_clock.c:647
msgid "State: Editable"
msgstr "Стање: уредиво"
#: src/lib/elementary/elm_clock.c:749
#: src/lib/elementary/elm_clock.c:682
msgid "Clock"
msgstr "Сат"
#: src/lib/elementary/elm_colorselector.c:939
#: src/lib/elementary/elm_colorselector.c:914
msgid "Pick a color"
msgstr ""
msgstr "Изаберите боју"
#: src/lib/elementary/elm_colorselector.c:977
#: src/lib/elementary/elm_colorselector.c:952
msgid "R:"
msgstr ""
msgstr "Ц:"
#: src/lib/elementary/elm_colorselector.c:979
#: src/lib/elementary/elm_colorselector.c:954
msgid "G:"
msgstr ""
msgstr "З:"
#: src/lib/elementary/elm_colorselector.c:981
#: src/lib/elementary/elm_colorselector.c:956
msgid "B:"
msgstr ""
msgstr "М:"
#: src/lib/elementary/elm_colorselector.c:983
#: src/lib/elementary/elm_colorselector.c:958
msgid "A:"
msgstr ""
msgstr "П:"
#: src/lib/elementary/elm_colorselector.c:1707
#: src/lib/elementary/elm_colorselector.c:1681
msgid "color selector palette item"
msgstr "ставка избирача палете боја"
#. TRANSLATORS: This string is special and defines if the language
#. by default is a Left To Right or Right To Left language. Most
#. languages are LTR and thus the default string is "default:LTR"
#. but if this is a right-to-left language like arabic, Farsi,
#. Hebrew, etc. then change this string to be "default:RTL"
#.
#: src/lib/elementary/elm_config.c:4158
#: src/lib/elementary/elm_config.c:3808
msgid "default:LTR"
msgstr "default:LTR"
msgstr "задато:слева на десно"
#: src/lib/elementary/elm_dayselector.c:437
#: src/lib/elementary/elm_dayselector.c:401
msgid "day selector item"
msgstr "ставка одабирач дана"
#: src/lib/elementary/elm_diskselector.c:701
#: src/lib/elementary/elm_diskselector.c:700
msgid "diskselector item"
msgstr "ставка одабира диска"
#: src/lib/elementary/elm_entry.c:1749
#: src/lib/elementary/elm_entry.c:1709
msgid "Cut"
msgstr "Исеци"
#: src/lib/elementary/elm_entry.c:1752
#: src/lib/elementary/elm_entry.c:1712
msgid "Copy"
msgstr "Умножи"
#: src/lib/elementary/elm_entry.c:1756 src/lib/elementary/elm_entry.c:1778
#: src/lib/elementary/elm_entry.c:1716 src/lib/elementary/elm_entry.c:1738
msgid "Paste"
msgstr "Прилепи"
#: src/lib/elementary/elm_entry.c:1771
#: src/lib/elementary/elm_entry.c:1731
msgid "Select"
msgstr "Изаберите"
#: src/lib/elementary/elm_entry.c:3937
#: src/lib/elementary/elm_entry.c:3826
msgid "Entry"
msgstr "Улаз"
#: src/lib/elementary/elm_gengrid.c:1500
msgid "Gengrid Item"
msgstr "Ставка родне мреже"
#: src/lib/elementary/elm_index.c:95
msgid "Index"
msgstr "Садржина"
@ -480,99 +461,98 @@ msgstr "Садржина"
msgid "Index Item"
msgstr "Ставка садржине"
#: src/lib/elementary/elm_label.c:403
#: src/lib/elementary/elm_label.c:405
msgid "Label"
msgstr "Натпис"
#: src/lib/elementary/elm_panel.c:84
#: src/lib/elementary/elm_panel.c:82
msgid "state: opened"
msgstr "стање: отворено"
#: src/lib/elementary/elm_panel.c:85
#: src/lib/elementary/elm_panel.c:83
msgid "state: closed"
msgstr "стање: затворено"
#: src/lib/elementary/elm_panel.c:127
#: src/lib/elementary/elm_panel.c:123
msgid "A panel is open"
msgstr "Полица је отворена"
#: src/lib/elementary/elm_panel.c:129
#: src/lib/elementary/elm_panel.c:125
msgid "Double tap to close panel menu"
msgstr "Двапут додирните за затварање изборника полице"
#: src/lib/elementary/elm_panel.c:181
#: src/lib/elementary/elm_panel.c:177
msgid "panel button"
msgstr "дугме полице"
#: src/lib/elementary/efl_ui_progressbar.c:397
#: src/lib/elementary/efl_ui_progressbar.c:328
msgid "progressbar"
msgstr "трака напретка"
#: src/lib/elementary/efl_ui_radio.c:231
#: src/lib/elementary/efl_ui_radio.c:228
msgid "Radio"
msgstr "Искључујуће дугме"
#: src/lib/elementary/elm_segment_control.c:528
#: src/lib/elementary/elm_toolbar.c:2296
#: src/lib/elementary/elm_segment_control.c:529
#: src/lib/elementary/elm_toolbar.c:2337
msgid "State: Selected"
msgstr "Стање: означено"
#: src/lib/elementary/elm_segment_control.c:530
#: src/lib/elementary/elm_segment_control.c:531
msgid "State: Unselected"
msgstr "Стање: неозначено"
#: src/lib/elementary/elm_segment_control.c:544
#: src/lib/elementary/elm_segment_control.c:545
msgid "Segment Control Item"
msgstr "Ставка провере дела"
#: src/lib/elementary/efl_ui_slider.c:704
#: src/lib/elementary/efl_ui_slider.c:1189
msgid "slider"
msgstr "клизач"
#: src/lib/elementary/elm_spinner.c:1071
#: src/lib/elementary/efl_ui_spinner.c:1050
msgid "incremented"
msgstr ""
msgstr "растуће"
#: src/lib/elementary/elm_spinner.c:1077
#: src/lib/elementary/efl_ui_spinner.c:1056
msgid "decremented"
msgstr ""
msgstr "опадајуће"
#: src/lib/elementary/elm_spinner.c:1110 src/lib/elementary/elm_spinner.c:1177
#: src/lib/elementary/efl_ui_spinner.c:1089
#: src/lib/elementary/efl_ui_spinner.c:1156
msgid "spinner"
msgstr "избирач са стрелицама"
#: src/lib/elementary/elm_spinner.c:1119 src/lib/elementary/elm_spinner.c:1160
#: src/lib/elementary/efl_ui_spinner.c:1098
#: src/lib/elementary/efl_ui_spinner.c:1139
msgid "spinner increment button"
msgstr "стрелица избирача увећaња"
#: src/lib/elementary/elm_spinner.c:1122 src/lib/elementary/elm_spinner.c:1169
#: src/lib/elementary/efl_ui_spinner.c:1101
#: src/lib/elementary/efl_ui_spinner.c:1148
msgid "spinner decrement button"
msgstr "стрелица избирача смањења"
#: src/lib/elementary/elm_spinner.c:1124
#, fuzzy
#: src/lib/elementary/efl_ui_spinner.c:1103
msgid "spinner text"
msgstr "избирач са стрелицама"
msgstr "листајуће дугме"
#: src/lib/elementary/elm_toolbar.c:1753 src/lib/elementary/elm_toolbar.c:2355
#: src/lib/elementary/elm_toolbar.c:1792 src/lib/elementary/elm_toolbar.c:2399
msgid "Selected"
msgstr "Изабрано"
#: src/lib/elementary/elm_toolbar.c:2292
#: src/lib/elementary/elm_toolbar.c:2333
msgid "Separator"
msgstr "Одвајач"
#: src/lib/elementary/elm_toolbar.c:2298
#: src/lib/elementary/elm_toolbar.c:2339
msgid "Has menu"
msgstr "Има изборник"
#: src/lib/elementary/elm_toolbar.c:2350
#: src/lib/elementary/elm_toolbar.c:2394
msgid "Unselected"
msgstr "Неозначено"
#: src/lib/elementary/elm_toolbar.c:2367
#: src/lib/elementary/elm_toolbar.c:2411
msgid "Toolbar Item"
msgstr "Ставка траке алата"
#~ msgid "Gengrid Item"
#~ msgstr "Ставка родне мреже"

View File

@ -63,8 +63,8 @@ main(int argc, char *argv[])
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
o = efl_add(EFL_CANVAS_WL_CLASS, win);
efl_canvas_wl_aspect_set(o, 1);
efl_canvas_wl_minmax_set(o, 1);
efl_canvas_wl_aspect_propagate_set(o, 1);
efl_canvas_wl_minmax_propagate_set(o, 1);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, hints_changed, win);

View File

@ -44,164 +44,6 @@ typedef struct Efl_Canvas_Wl_Xkb_State Efl_Canvas_Wl_Xkb_State;
#endif
#include <efl_canvas_wl_surface.eo.h>
#include <efl_canvas_wl.eo.h>
/**
* @defgroup Efl_Wl_Group EFL Wayland
*
* A multiseat xdg-shell compliant Wayland compositor in an Evas object.
* All toplevel windows will be sized to the size of the compositor object.
* @since 1.20
* @{
*/
#if 0
/**
* Add a compositor widget to the given canvas.
*
* The following smart callbacks will trigger on the compositor object:
* "toplevel_added" - A toplevel surface has been added; event info is Evas_Object *surface @since 1.24
* "child_added" - A toplevel surface with a parent has been added; event info is Evas_Object *surface
* "popup_added" - A popup surface has been added; event info is Evas_Object *surface
* "seat_added" - A compositor seat has been added; event info is Eo *dev
*
* @param e The canvas
* @return The compositor object, @c NULL on failure
*/
EAPI Evas_Object *efl_canvas_wl_add(Evas *e);
/**
* Run a command in the compositor widget.
*
* @note If GL is available, the ELM_ACCEL environment variable will be
* set to "gl" while executing the command.
*
* @param obj The compositor widget
* @param cmd The command to run
* @return The Ecore_Exe from the executed process, @c NULL on failure
*/
EAPI Ecore_Exe *efl_canvas_wl_run(Evas_Object *obj, const char *cmd);
/**
* Run a command in the compositor widget with specified flags.
*
* @note If GL is available, the ELM_ACCEL environment variable will be
* set to "gl" while executing the command.
*
* @param obj The compositor widget
* @param cmd The command to run
* @param flags The flags to use
* @return The Ecore_Exe from the executed process, @c NULL on failure
*/
Ecore_Exe *efl_canvas_wl_flags_run(Evas_Object *obj, const char *cmd, Ecore_Exe_Flags flags);
/**
* Add a process to the list of allowed clients for the compositor widget
*
* @param obj The compositor widget
* @param pid The process to allow
* @since 1.21
*/
EAPI void efl_canvas_wl_pid_add(Evas_Object *obj, int32_t pid);
/**
* Remove a process from the list of allowed clients for the compositor widget
*
* @param obj The compositor widget
* @param pid The process to deny
* @since 1.21
*/
EAPI void efl_canvas_wl_pid_del(Evas_Object *obj, int32_t pid);
/**
* Put the bottom-most toplevel window on top and apply focus to it
*
* @param obj The compositor widget
* @return EINA_TRUE if the window stacking was changed
*/
EAPI Eina_Bool efl_canvas_wl_surface_next(Evas_Object *obj);
/**
* Put the second top-most toplevel window on top and apply focus to it
*
* @param obj The compositor widget
* @return EINA_TRUE if the window stacking was changed
*/
EAPI Eina_Bool efl_canvas_wl_surface_prev(Evas_Object *obj);
/**
* Set rotation and flip for the compositor's output
*
* @param obj The compositor widget
* @param rot The rotation to apply
* @param rtl If set, the output will apply a flip around the Y axis
* @note rtl is equivalent to WL_OUTPUT_TRANSFORM_FLIPPED and rotations are applied
* on top
*/
EAPI void efl_canvas_wl_rotate(Evas_Object *obj, Efl_Wl_Rotation rot, Eina_Bool rtl);
/**
* Set the scale factor for the compositor's output
*
* @param obj The compositor widget
* @param scale The scale factor to set
*/
EAPI void efl_canvas_wl_scale_set(Evas_Object *obj, double scale);
/**
* Transfer aspect hints from top-most surface onto the efl_canvas_wl object
*
* @param obj The compositor widget
* @param set Whether to enable aspect setting
* @since 1.21
*/
EAPI void efl_canvas_wl_aspect_set(Evas_Object *obj, Eina_Bool set);
/**
* Transfer min/max hints from top-most surface onto the efl_canvas_wl object
*
* @param obj The compositor widget
* @param set Whether to enable min/max setting
* @since 1.21
*/
EAPI void efl_canvas_wl_minmax_set(Evas_Object *obj, Eina_Bool set);
/**
* Add an externally-managed global to the compositor
* @note The external implementation is expected to restrict access to authorized
* clients
* @see wl_global_create() docs
*
* @param obj The compositor widget
* @param interface The Wayland protocol interface struct of the protocol's global
* @param version The version of the global to use
* @param data User data to use with this interface
* @param bind_cb The callback which should be triggered when the global is bound by a client
* @return The created global (struct wl_global), or NULL on failure
* @since 1.21
*/
EAPI void *efl_canvas_wl_global_add(Evas_Object *obj, const void *interface, uint32_t version, void *data, void *bind_cb);
/**
* Extract a child surface from the compositor
*
* An extracted surface can be freely manipulated by external code.
* @note size hints must be respected, and the extracted object must not be externally deleted
*
* @param surface The surface to extract
* @return True if the surface was successfully extracted
* @since 1.21
*/
EAPI Eina_Bool efl_canvas_wl_surface_extract(Evas_Object *surface);
/**
* Return the pid for the surface's client
*
* Get the pid of the underlying client that created the surface.
*
* @param surface The surface to extract
* @return The pid of the surface, or -1 on failure
* @since 1.24
*/
EAPI int32_t efl_canvas_wl_surface_pid_get(Evas_Object *surface);
#endif
/**
* Get the Evas_Object for an extracted wl_surface resource created by an efl_canvas_wl object
*
@ -209,47 +51,9 @@ EAPI int32_t efl_canvas_wl_surface_pid_get(Evas_Object *surface);
*
* @param surface_resource The wl_resource for a wl_surface
* @return The Evas_Object of the surface, NULL on failure
* @since 1.21
* @since 1.24
*/
EAPI Evas_Object *efl_canvas_wl_extracted_surface_object_find(void *surface_resource);
#if 0
/**
* Get the Evas_Object for an extracted surface's parent, or NULL if the parent is not extracted
*
* @note Passing anything other than a valid, extracted surface guarantees a crash.
*
* @param surface The extracted surface for a wl_surface
* @return The Evas_Object of the parent surface, NULL on failure or if there is no parent
* @since 1.21
*/
EAPI Evas_Object *efl_canvas_wl_extracted_surface_extracted_parent_get(Evas_Object *surface);
/**
* Set external xkbcommon resources to be used read-only by the compositor object
*
* Use this function if you have available the necessary xkbcommon objects which are used
* to handle keyboard states in a compositor. The passed objects will not be modified or copied,
* so this function must be called again in the case that the compositor widget outlives the
* lifetime of any of the passed pointers.
*
* @param obj The compositor widget
* @param seat The seat to set the keymap for, NULL to set the keymap for all seats
* @param keymap The xkb_keymap object to use
* @param state The xkb_state object to use
* @param str The string containing the keymap
* @param wl_key_array A pointer to the wl_array in which keys are stored
* @since 1.21
*/
EAPI void efl_canvas_wl_seat_keymap_set(Evas_Object *obj, Eo *seat, void *state, char *str, void *wl_key_array);
/**
* Set the key repeat rate for a seat in the compositor
*
* @param obj The compositor widget
* @since 1.21
*/
EAPI void efl_canvas_wl_seat_key_repeat_set(Evas_Object *obj, Eo *seat, int repeat_rate, int repeat_delay);
#endif
#undef EAPI
#define EAPI
#undef EAPI_WEAK

View File

@ -5690,13 +5690,13 @@ _efl_canvas_wl_efl_gfx_entity_scale_set(Eo *obj EINA_UNUSED, Comp *c, double sca
}
EOLIAN static Eina_Bool
_efl_canvas_wl_aspect_get(const Eo *obj EINA_UNUSED, Comp *c)
_efl_canvas_wl_aspect_propagate_get(const Eo *obj EINA_UNUSED, Comp *c)
{
return c->aspect;
}
EOLIAN static void
_efl_canvas_wl_aspect_set(Eo *obj, Comp *c, Eina_Bool set)
_efl_canvas_wl_aspect_propagate_set(Eo *obj, Comp *c, Eina_Bool set)
{
if (c->aspect == (!!set)) return;
c->aspect = !!set;
@ -5707,13 +5707,13 @@ _efl_canvas_wl_aspect_set(Eo *obj, Comp *c, Eina_Bool set)
}
EOLIAN static Eina_Bool
_efl_canvas_wl_minmax_get(const Eo *obj EINA_UNUSED, Comp *c)
_efl_canvas_wl_minmax_propagate_get(const Eo *obj EINA_UNUSED, Comp *c)
{
return c->minmax;
}
EOLIAN static void
_efl_canvas_wl_minmax_set(Eo *obj, Comp *c, Eina_Bool set)
_efl_canvas_wl_minmax_propagate_set(Eo *obj, Comp *c, Eina_Bool set)
{
if (c->minmax == (!!set)) return;
c->minmax = !!set;

View File

@ -23,87 +23,147 @@ enum @beta Efl.Canvas.Wl.Rotation
class @beta Efl.Canvas.Wl extends Efl.Canvas.Group
{
[[
[[A multiseat xdg-shell compliant Wayland compositor which runs in a canvas object.
All toplevel windows will be sized to the size of the compositor object unless extracted with
@Efl.Canvas.Wl_Surface.extract.
Only clients executed with @Efl.Canvas.Wl.run or added with @.allowed_pid_add will
be permitted to connect to this compositor.
If no surface is activated at the time of the first toplevel surface's first buffer commit, this
first surface will automatically be activated so long as its geometry is not externally modified
during this time. If regularly modifying geometry is necessary, surfaces should be manually activated
with the @.active_surface property.
@since 1.24
]]
data: Comp;
methods {
run {
[[This runs a command in the compositor using the @Efl.Exe_Flags.term_with_parent flag.
[[
Run a specified command in the compositor widget.
If GL is available, the ELM_ACCEL environment variable will be set to "gl" while executing the command.
]]
params {
cmd: string;
cmd: string; [[The command to execute.]]
}
return: Efl.Exe;
return: Efl.Exe; [[The exe object for the executed process. $NULL on failure.]]
}
@property exec_flags {
[[The flags to be used when running commands with @Efl.Canvas.Wl.run.
Changing this value will only affect commands run after this call.
The default is @Efl.Exe_Flags.term_with_parent.
]]
values {
flags: Efl.Exe_Flags;
flags: Efl.Exe_Flags; [[A bitmask of flags.]]
}
}
allowed_pid_add {
[[Add a process to the list of allowed clients for the compositor widget.
Once called, this client will be capable of connecting to the internal compositor
even if it was not executed by the widget.
]]
params {
pid: int;
pid: int; [[The pid to add.]]
}
}
allowed_pid_del {
[[Remove a process from the list of allowed clients for the compositor widget.
Once called, this client will be incapable of connecting to the internal compositor
even if it was executed by the widget.
]]
params {
pid: int;
pid: int; [[The pid to remove.]]
}
}
surface_next {
return: Efl.Canvas.Wl.Surface;
[[Activate and raise the bottom-most toplevel surface.]]
return: Efl.Canvas.Wl_Surface; [[The surface that was activated, or $NULL if no change was made.]]
}
surface_prev {
return: Efl.Canvas.Wl.Surface;
[[Activate and raise the second top-most toplevel surface.]]
return: Efl.Canvas.Wl_Surface; [[The surface that was activated, or $NULL if no change was made.]]
}
@property active_surface {
[[This is the currently activated surface in the compositor widget.
Only one surface can be activated at a time.
]]
get {}
set {
return: bool;
return: bool; [[Returns $true if a change was successfully made.]]
}
values {
surface: Efl.Canvas.Wl.Surface;
surface: Efl.Canvas.Wl_Surface; [[The activated surface.]]
}
}
@property aspect {
@property aspect_propagate {
[[When set to $true, the compositor will propagate the aspect ratio of the top-most
surface to the @Efl.Gfx.Hint.hint_aspect of the compositor widget.
]]
values {
set: bool;
set: bool; [[Whether to propagate the hint.]]
}
}
@property minmax {
@property minmax_propagate {
[[When set to $true, the compositor will propagate the min and max hints of the top-most
surface to the @Efl.Gfx.Hint.hint_size_min and @Efl.Gfx.Hint.hint_size_max of the compositor widget.
]]
values {
set: bool;
set: bool; [[Whether to propagate the hints.]]
}
}
@property rotation {
[[Set the rotation and flip for the compositor's internal output, which is passed to clients.
Note that the rotation provided here is counter-clockwise.
]]
values {
rotation: Efl.Canvas.Wl.Rotation;
rtl: bool;
rotation: Efl.Canvas.Wl.Rotation; [[The rotation to apply to the internal output.]]
rtl: bool; [[The horizontal flip to apply to the internal output.]]
}
}
global_add {
[[Add a new wl_global to the internal compositor.
Use this to add implementations of custom extensions for use in the compositor.
Globals are removed with wl_global_destroy in libwayland.
Read Wayland documentation for more info.
]]
params {
interface: const(Efl.Canvas.Wl_Wl_Interface) @by_ref;
version: uint;
data: Efl.Canvas.Wl_Wl_Interface_Data @by_ref;
bind_cb: Efl.Canvas.Wl_Wl_Interface_Bind_Cb @by_ref;
interface: const(Efl.Canvas.Wl_Wl_Interface) @by_ref; [[The wl_interface of callbacks for the protocol.]]
version: uint; [[The version of the protocol.]]
data: Efl.Canvas.Wl_Wl_Interface_Data @by_ref; [[The data to be passed to the callback functions.]]
bind_cb: Efl.Canvas.Wl_Wl_Interface_Bind_Cb @by_ref; [[The callback to trigger when a client has bound this global.]]
}
return: Efl.Canvas.Wl_Wl_Global @by_ref;
return: Efl.Canvas.Wl_Wl_Global @by_ref; [[The $wl_global or $NULL on failure.]]
}
seat_keymap_set {
[[Sets the keymap for the internal compositor's seat.
This is useful when nesting the compositor widget inside another compositor in order to reuse the existing keymap and state.
]]
params {
seat: Efl.Input.Device;
state: Efl.Canvas.Wl_Xkb_State @by_ref;
keymap_str: string;
key_array: Efl.Canvas.Wl_Wl_Array @by_ref;
seat: Efl.Input.Device; [[The seat to set the keymap of, or $NULL for all seats.]]
state: Efl.Canvas.Wl_Xkb_State @by_ref; [[The $xkb_state to apply.]]
keymap_str: string; [[The keymap type as a string, as reported by libxkbcommon.
The lifetime of the passed string must exceed the lifetime of the compositor widget.
]]
key_array: Efl.Canvas.Wl_Wl_Array @by_ref; [[The current $wl_array of keys.]]
}
}
seat_key_repeat_set {
[[Modify the key repeat rate and delay of the internal compositor for a given seat.
This is the value sent to clients.
]]
params {
seat: Efl.Input.Device;
repeat_rate: int;
repeat_delay: int;
seat: Efl.Input.Device; [[The seat to set the repeat rate and delay of, or $NULL for all seats.]]
repeat_rate: int; [[The repeat rate to set in number of times per second keys should repeat.]]
repeat_delay: int; [[The delay before repeating should begin in milliseconds.]]
}
}
}
@ -115,9 +175,9 @@ class @beta Efl.Canvas.Wl extends Efl.Canvas.Group
Efl.Gfx.Entity.scale { get; set; }
}
events {
toplevel,added: Efl.Canvas.Wl.Surface; [[]]
child,added: Efl.Canvas.Wl.Surface; [[]]
popup,added: Efl.Canvas.Wl.Surface; [[]]
seat,added: Efl.Input.Device; [[The seat object added.]]
toplevel,added: Efl.Canvas.Wl_Surface; [[Contains the toplevel surface which was added.]]
child,added: Efl.Canvas.Wl_Surface; [[Contains the toplevel child surface which was added.]]
popup,added: Efl.Canvas.Wl_Surface; [[Contains the popup surface which was added.]]
seat,added: Efl.Input.Device; [[Contains the seat object that was added.]]
}
}

View File

@ -1,27 +1,61 @@
class @beta Efl.Canvas.Wl.Surface extends Efl.Canvas.Group
class @beta Efl.Canvas.Wl_Surface extends Efl.Canvas.Group
{
[[@since 1.24]]
[[A canvas object representing a Wayland toplevel or popup surface.
This object's geometry properties reflect the properties of the underlying surface. If
the client is using a protocol to export its size hints, those hints will be directly
applied to this object any time they change in the application.
Changes to geometry and visibility of this object must not be made while @.extracted
is $false.
Changes to size of this object will be immediately propagated to the underlying application.
Hiding this object will have differing effects based on the surface's xdg-shell role.
If the surface is a popup, it will be sent the 'done' protocol event which will close it.
If the surface is a toplevel, it will be deactivated if it was active.
This object's lifetime is bound to the lifetime of the underlying surface or the compositor widget.
This object must not be manually deleted.
@since 1.24
]]
data: Comp_Surface;
methods {
extract {
return: bool;
[[Extract a surface from the compositor widget.
Call this prior to making any calls which directly modify the geometry of
the surface. Once extracted, the compositor will no longer attempt to automatically
apply geometry or stacking changes to the surface.
Once extracted, a surface cannot be un-extracted.
]]
return: bool; [[Returns $true if the surface was successfully extracted.]]
}
@property pid {
[[The process id of the surface's application.]]
get {}
values {
pid: int;
pid: int; [[The process id, or -1 if the surface has been asynchronously destroyed.]]
}
}
@property parent_surface {
[[The parent surface of the given surface. This value is $NULL for toplevel surfaces without a parent.
For popup surfaces, this may be another popup or a toplevel.
For toplevel surfaces, this will always be another toplevel or $NULL.
]]
get {}
values {
parent: Efl.Canvas.Wl.Surface;
parent: Efl.Canvas.Wl_Surface; [[The parent surface. $NULL if no parent exists or the surface was asynchronously destroyed.]]
}
}
@property extracted {
[[The extracted state of the surface.]]
get {}
values {
extracted: bool;
extracted: bool; [[$true if @.extract was successfully called previously.]]
}
}
}

View File

@ -25,7 +25,7 @@ void evas_common_convert_rgba_to_8bpp_gry_256_dith (DATA32 *src, DATA8 *dst,
b = (B_VAL(src_ptr));
// Y = 0.299 * R + 0.587 * G + 0.114 * B;
gry8 = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
gry8 = ((r * 19596) + (g * 38470) + (b * 7472)) >> 16;
*dst_ptr = gry8;
@ -54,7 +54,7 @@ void evas_common_convert_rgba_to_8bpp_gry_16_dith (DATA32 *src, DATA8 *dst,
b = (B_VAL(src_ptr));
// Y = 0.299 * R + 0.587 * G + 0.114 * B;
gry8 = ((r * 19595) + (g * 38469) + (b * 7471)) >> 16;
gry8 = ((r * 19596) + (g * 38470) + (b * 7472)) >> 16;
if (((gry8 - gry8 * 255 / 4) >= dith) && (gry8 < 0x07)) gry8++;

View File

@ -162,7 +162,6 @@ _efl_canvas_gesture_manager_efl_object_constructor(Eo *obj, Efl_Canvas_Gesture_M
efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_ROTATE_CLASS, obj));
efl_gesture_manager_recognizer_register(obj, efl_add(EFL_CANVAS_GESTURE_RECOGNIZER_ZOOM_CLASS, obj));
/* realistically this will never fail, but the whole gesture layer breaks if this is 0 */
finger_size = efl_config_int_get(config, "glayer_tap_finger_size");
if (!getenv("EFL_RUN_IN_TREE"))
finger_size = efl_config_int_get(config, "glayer_tap_finger_size");
if (finger_size < 1) finger_size = 10;