Commit Graph

4142 Commits

Author SHA1 Message Date
Vincent Torri a12bd0ad30 elementary: rename ELEMENTARY_BUILD to EFL_BUILD like all other libs
Test Plan: compilation

Reviewers: cedric, raster, zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8598
2019-04-11 17:58:56 +01:00
Jaehyun Cho b17e7fa95b efl_ui_list: fix to delete sub objects in efl_object_invalidate
widget's sub objects and callbacks should be deleted in
efl_object_invalidate instead of efl_object_destructor.

@fix
2019-04-11 20:20:50 +09:00
Xavi Artigas 8985bcd269 docs: Remove silly [[[ typos 2019-04-10 16:09:15 +02:00
Jaeun Choi 998e9a8f68 elm_panel/efl_ui_panel: disable scrolling when obj is disabled
panels were still scrollable while disabled.
this patch fixes it.
2019-04-08 18:48:34 +09:00
Hermet Park 31cf281bdd efl_ui_textpath : enable anti-alising for better quality.
Summary:
Current textpath on sw rendering is too jiggled,
quaility is very poor to use.

This option uses better quality texture mapping logic
in order to improve the image quality.

Depends on D8106

Reviewers: #committers

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8465
2019-04-08 13:16:25 +09:00
Cedric BAIL 9afd12324b elementary: fix error path during shutdown of fileselector.
During shutdown, sometimes, we can have an error generated on the object
while it is invalidating, but before it is invalidated. This lead to
properties on the object to change to an error state and trigger the
properties changed logic. At this point, the parent has already been
destroyed and we don't really have anything more to do. So let's not
do anything.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8502
2019-04-06 13:13:38 -07:00
Jaehyun Cho a6cc943211 elementary: fix not to call duplicate theme set
Theme is set during finalize in Efl.Ui.Layout_Base.
Therefore, it is not necessary to call theme set function if the widget
inherits Efl.Ui.Layout_Base and its klass is properly set.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8559
2019-04-06 12:52:57 -07:00
junsu choi 894c7af10a elm_entry: prevent from accessing null pointer
Summary: change ELM_ENTRY_DATA_GET to ELM_ENTRY_DATA_GET_OR_RETURN_VAL

Test Plan: elm_entry_file_set(NULL, ~~~);

Reviewers: YOhoho, Hermet, woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8544
2019-04-03 13:58:35 +09:00
Carsten Haitzler 96f1e29709 elm naviframe - remove duplicated func prototype in headers
one hade EAPI, one did not and there were 2 anyway, so remove one and
ensure the other has EAPI and the same docs. this should fix T7776
2019-04-02 13:59:01 +01:00
Xavi Artigas 413c987837 docs: Update refs to Efl.Ui.Theme.Apply_Error
Summary:
Proper refs to particular errors cannot be added until T7736 is resolved.

Ref T7717

Test Plan: Only docs updated

Reviewers: zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7717

Differential Revision: https://phab.enlightenment.org/D8495
2019-04-02 08:57:35 -04:00
Xavi Artigas 6c01d7177c docs: Format efl_file.h
Summary:
And polish a bit.

Ref T7717

Test Plan: Only docs updated

Reviewers: zmike

Reviewed By: zmike

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7717

Differential Revision: https://phab.enlightenment.org/D8498
2019-04-02 08:57:19 -04:00
Xavi Artigas 68c530080b docs: Fix common misspellings in H files
Fixed all appearances of words from this list in H files:
https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
2019-04-02 13:28:48 +02:00
Xavi Artigas 57da0bee3d docs: Fix common misspellings in EO files
Fixed all appearances of words from this list in EO files:
https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
2019-04-02 11:32:05 +02:00
Jaehyun Cho fe54a4dd1a elm_widget_item_eo.legacy: change @ingroup to Elm_General
Summary:
The @ingroup of elm_object_item APIs is Elm_General in elm_object_item.h.

Since legacy prefix of Elm_Widget_Item is elm_object_item,
the prefix of Elm_Widget_Item APIs is elm_object_item.

Consequently, to display the legacy Elm_Widget_Item APIs with
elm_object_item APIs, the @ingroup is changed from Elm_Object_Item_Group
to Elm_General.

Test Plan: make doc and check the documentation

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8529
2019-04-02 10:36:57 +02:00
Jaehyun Cho a10e1bc597 Revert "efl_ui_pager: implement unpack_at function"
This reverts commit 913a5bff66.

The commit is reverted because the commit implements features during
feature freeze period before release.

913a5bff66 will be restored after release.
2019-04-02 16:39:40 +09:00
Jaehyun Cho b28f1e034b Revert "efl_ui_pager: implement unpack_all/clear function"
This reverts commit 74c48f0296.

The commit is reverted because the commit implements features during
feature freeze period before release.

74c48f0296 will be restored after release.
2019-04-02 16:36:20 +09:00
Jaehyun Cho d2eebb6f5f Revert "elm - fix harmless warning for clean build"
This reverts commit e3d2a0cf12.

The commit is reverted to revert the following commit.
74c48f0296

The above commit will be restored after release and then
e3d2a0cf12 will be also restored.
2019-04-02 16:33:20 +09:00
Christopher Michael 83d4890c74 efl_ui_selection_manager: Don't leak malloc'd data
Summary:
Coverity reports that we potentially leak char *s here. If we do not
have 'data_ret', then the malloc'd 's' sould be freed as we are not
going to use it.

Fixes Coverity CID1396949

@fix

Reviewers: raster, cedric, bu5hm4n, zmike

Reviewed By: bu5hm4n

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8523
2019-04-01 10:02:57 -04:00
Carsten Haitzler e3d2a0cf12 elm - fix harmless warning for clean build 2019-03-30 16:51:33 +00:00
Yeongjong Lee e361b45ce1 efl_ui_table_layout: calculate cell size with colspan, rowspan property
We should consider occupied cells by colspan, rowspan property.

ref T7753

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8484
2019-03-30 12:38:27 +01:00
Ali Alzyod b8952604ce elm_entry: Speedup finding new line, prevent readind invalid memory
Summary:
1- Speed up detecting new lines.
```
if (!strncmp(text, "<br", 3) || !strncmp(text, "<ps", 3))
```
This will cause 6 comparisons (if one of conditions did not meet), or at least 3 comparisons.

this is changed to
```
if (!strncmp(text, "<", 1))
```

2- Speedup detecting lines

If this condition is true, we should increment the string for next iteration 3 times, not just one
```
if (!strncmp(text, "<br", 3) || !strncmp(text, "<ps", 3))
```

if '<' founded then 'pr' or 'br', we will skip 3 characters for next iteration.

```
if (!strncmp(text, "<", 1))
      {
         text++;
         len--;
         if (!strncmp(text, "br", 2) || !strncmp(text, "ps", 2))
         {
            text += 2;
            len -= 2;
```

3- Prevent reading invalid memory out of the string

```
if (text[3] == '>' || ((text[3] == '/') && (text[4] == '>')))
```
string could reach last char in string (original string ends with "<br")

but now we will check if remaining string length allow comparison :

```
if (text[0] == '>' || (len > 1 && ((text[0] == '/') && (text[1] == '>'))))
```

Test Plan:
```

static int

oldFunc(const char *text)
{
    if (!text)
        return 0;

    while (*text)
    {
        if (!strncmp(text, "<br", 3) || !strncmp(text, "<ps", 3))
        {
            if (text[3] == '>' || ((text[3] == '/') && (text[4] == '>')))
            {
                return 1;
            }
        }
        text++;
    }
    return 0;
}

static int
newFunc(const char *text)
{
    if (!text)
        return 0;
    char *pTemp = (char *)text;

    while (pTemp = strchr(pTemp, '<'))
    {
        pTemp++;
        if (!strncmp(pTemp, "br", 2) || !strncmp(pTemp, "ps", 2))
        {
            pTemp += 2;
            if (pTemp[0] != '\0' && (pTemp[0] == '>' || (pTemp[0] == '/' && pTemp[1] == '>')))
            {
                return 1;
            }
        }
    }

    return 0;
}

int main()
{

    int counter = 1000;
    srand(time(NULL));
    char pStr[50001] = {0};
    char AllChars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789<>";

    int AllCharsLen = strlen(AllChars);
    for (int i = 0; i < 50000; i++)
        pStr[i] = AllChars[rand() % AllCharsLen];

    clock_t start, end;
    double total_Time1 = 0;
    int i;

    for (int j = 0; j < 3; j++)
    {
        if (j == 0)
        {
            printf("random String\n");
        }
        else if (j == 1)
        {
            printf("With Random <br/>\n");
            int location = rand()%(5000 - 5);
            pStr[location++] = '<';
            pStr[location++] = 'b';
            pStr[location++] = 'r';
            pStr[location++] = '/';
            pStr[location++] = '>';
        }
        else if (j == 2)
        {
            printf("With Random <ps>\n");
            int location = rand()%(5000 - 4);
            pStr[location++] = '<';
            pStr[location++] = 'p';
            pStr[location++] = 's';
            pStr[location++] = '>';
        }

        start = clock();
        for (i = 0; i < counter; i++)
            oldFunc(pStr);
        end = clock();
        total_Time1 = ((double)(end - start)) / CLOCKS_PER_SEC;
        printf("original = %f has new Line = %i\n", total_Time1, oldFunc(pStr));

        start = clock();
        for (i = 0; i < counter; i++)
            newFunc(pStr);
        end = clock();
        total_Time1 = ((double)(end - start)) / CLOCKS_PER_SEC;
        printf("modified = %f has new line = %i\n\n", total_Time1, newFunc(pStr));
    }
}
```

output:

random String
original = 2.523000 has new Line = 0
modified = 0.090000 has new line = 0

With Random <br/>
original = 0.081000 has new Line = 1
modified = 0.003000 has new line = 1

With Random <ps>
original = 0.016000 has new Line = 1
modified = 0.001000 has new line = 1

Reviewers: zmike, woohyun, bowonryu

Reviewed By: zmike

Subscribers: bu5hm4n, segfaultxavi, zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8497
2019-03-29 09:58:53 -04:00
Marcel Hollerbach 1a5dde0b47 efl_ui_layout: ensure that resize_obj is present before emitting signals
otherwise there will be warnings because of calling api on NULL objects.

Differential Revision: https://phab.enlightenment.org/D8512
2019-03-29 14:02:36 +01:00
Marcel Hollerbach 0c0f47796b efl_ui_widget: move from elm_widget_top_get to provider_find
this resolves a lot of cases where focus_highlight API was called on a
object, which is not a efl_ui_win object. With this patch we ensure that
the object is always a window.

Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D8476
2019-03-29 14:02:32 +01:00
Marcel Hollerbach fce4d95596 efl_ui_widget: add implementation for finding the window
the problem with the previous implementation (just redirect the calls to
the widget_parent then to the efl_parent is that after invalidate its
impossible to find the window where the widget is in. However, there are
cases where we want to have access to the window of the widget, for
example, to invalidate focus highlight etc..
The window of a widget is always constant, and cannot be changed (as the
evas object cannot hop accross different evas)

Reviewed-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Differential Revision: https://phab.enlightenment.org/D8475
2019-03-29 14:02:31 +01:00
Xavi Artigas 291ab9a671 docs: Efl.Ui.Layout_Base update theme docs
If docs are present at property and set/get levels only one is used.

Ref T7717

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8494
2019-03-29 12:35:51 +01:00
Xavi Artigas 01fccf6a87 docs: Clarify Efl.Ui.Win exit_on_close methods
exit_on_close and exit_on_all_windows_closed deserve a bit of clarification
since they have very similar meanings.
Also, add proper Eina.Value doc references.
Ref T7717

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8511
2019-03-29 12:35:50 +01:00
Jaeun Choi 74c48f0296 efl_ui_pager: implement unpack_all/clear function 2019-03-29 20:14:09 +09:00
Jaeun Choi 0b2cf57bbc efl_ui_pager: return mouse_down function if cnt equals zero 2019-03-29 20:14:09 +09:00
Jaeun Choi 913a5bff66 efl_ui_pager: implement unpack_at function 2019-03-29 20:14:09 +09:00
Jaeun Choi f3a6bf613d efl_ui_pager: refactor unpack function 2019-03-29 20:14:09 +09:00
Jaeun Choi 2631528476 efl_ui_pager: add a missing condition 2019-03-29 20:14:09 +09:00
Jaeun Choi 103248d8f0 efl_ui_pager: fix pack function 2019-03-29 20:14:09 +09:00
Jaeun Choi 9126a47eaa elm_priv.h: remove unnecesary line 2019-03-29 20:14:09 +09:00
Jaeun Choi 20dfa5c487 efl_ui_pager: disable loop if items are not enough after unpacking 2019-03-29 20:14:09 +09:00
Marcel Hollerbach b54035213f efl_ui_widget: reintroduce legacy behaviour
before the refactoring of the disabled property, there was no way to
enable a widget which has a disabled tree. This here however enables
this to work again like this. The user will be told with an error
message. The integraty of the property is maintained accross reparents.

Reviewed-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Differential Revision: https://phab.enlightenment.org/D8459
2019-03-29 08:26:06 +01:00
Taehyub Kim 4e2003f741 efl_ui_alert_popup: add new feature for applying side button style of alert popup
Summary: This feature will apply side button style for each left and right button of alert popup

Reviewers: Jaehyun_Cho, cedric

Reviewed By: Jaehyun_Cho

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8492
2019-03-28 18:48:03 +09:00
Mike Blumenkrantz 1240232863 elm_entry: CRI if efl_file methods are called directly on this object
eo methods should not be called on legacy objects

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8487
2019-03-28 09:50:42 +01:00
Marcel Hollerbach 62b3759db5 efl_ui_slider: block scrolling when on slider
when a mouse cursor is over a slider, the mouse wheel should be used to
affect the state of the slider, not also the one of the slider.

ref T2529

Reviewed-by: Bowon Ryu <bowon.ryu@samsung.com>
Reviewed-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Differential Revision: https://phab.enlightenment.org/D8455
2019-03-28 09:39:39 +01:00
Cedric BAIL 37663b27df elementary: remove some asynchronous behavior from the fileselector.
Marcel notted that when using the LIST view of the fileselector on a
big directory, we end up having to wait for the entire genlist to be
populated to be able to switch to another directory. This is actually
a side effect of the populate code being triggered through an idler.
This idler was useful when the list was populated directly, but now
that we rely on Efl.Io.Model, we should be asynchronous enough that
it shouldn't be a problem to actually not be asynchronous here. By
removing the reliance on the idler, we are not queued after all the
idler and can properly short circuit all of that.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8491
2019-03-28 09:30:01 +01:00
Marcel Hollerbach 197210cde2 elc_filselector: solve the mysterium of sometimes failing tests
so after a phone call, two days of debugging, tears, crying etc. etc. we
finally came to a point of enlightenment! *Someone* (bu5hm4n) moved
gengrid and genlist events from eo back to smart events, so we can work
arround legacy borks and event-name collisions, at this point he did not
knew that some widgets (fileselector) already relied on those *lovely*
events. Hence this broke theoretically the testsuite, however, the
fileselector testsuite is ultimatily buggy, and the wait function does
not return false when it timeouts, (i don't know why not). So this break
was never discovered.

Additionally there is a second issue. it appears, that when we
immidiatly quit the mainloop after we have got the selected callback,
that then genlist decides to forget about the sd->selected pointer, and
NULLs that one out. Which then results in the fact that
elm_fileselector_selected_get ends up returning invalid paths.

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8488
2019-03-27 15:03:41 -07:00
Cedric BAIL 8ab3f3319e elementary: make sure that the model parent being used is always the fileselector.
Model provided by an item selection would have there parent being the current
model of the fileselector. Once that one is replaced by the item model, it would
automatically invalidate the model and break any further request. This lead to
a bug where you could only get into one directory before everything else
being empty.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8450
2019-03-27 15:03:39 -07:00
Cedric BAIL 1eb49b2e9b elementary: prevent asynchronous properties change to believe target is ready when it is not in fileselector.
In some case, the properties changed event would be triggered first on the object model
instead of the target model. This now enforce that the target will be the first model
to handle and react on the information.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8449
2019-03-27 15:03:37 -07:00
Cedric BAIL db618e179a elementary: fix fileselector entry support to define path manually.
There was no need in the first place to do all this asynchronous work here.
It is more robust to do it in sync.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8448
2019-03-27 15:03:35 -07:00
Cedric BAIL 3bbaf71b68 elementary: destroy fileselector children when they are not itemized yet.
As we now do everything asynchronously, we do have model representing child
of the main model that don't provide enough information to be displayed yet.
This are not tracked by a genlist item, nor are they a child of the
fileselector. To properly handle their lifecycle, it is necessary to unref
them manually explicitely.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8375
2019-03-27 15:03:24 -07:00
Cedric BAIL 9cadba3387 elementary: improve lifecycle of model object in the fileselector widget.
This is a minimal change and it would be best to refactor the code completely
using all the infrastructure we have now instead of the organically grown code,
but I am afraid of doing such a big change at this point of our release cycle.

Part of the improvement are use of efl_replace to make sure Eo object reference
are set to NULL once reference are dropped. Handling the case when a processed
child is actually pointing to an error. Also it is not supported by model to
get their parent stolen, so this has been fixed too. Finally setting the path
asynchronously was creating more trouble than needed, when it could be done in
a synchronous way.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8336
2019-03-27 15:03:20 -07:00
Cedric BAIL 2f4b581300 Revert "efl_ui_layout: call efl_del instead of efl_unref when text part does not exist"
This reverts commit cced5487c8.

This patch was pushed just to silence warning without fixing the problem and doing
something that was incorrect (coupling an efl_del with an efl_ref).

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8429
2019-03-27 15:03:14 -07:00
Cedric BAIL e05b8ae9ca elementary: only apply text when the object is not invalidated and dying.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8359
2019-03-27 15:03:12 -07:00
Cedric BAIL 791ca77a68 elementary: split the smart callback event name from the Eo name when needed.
This fix the borkage of the "selected" smart event not being triggered.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8332
2019-03-27 15:03:10 -07:00
Marcel Hollerbach f04cc5ceba elementary: embed standard config as fallback
Summary:
as you can see in T7620, there is quite some critics about how we are
handling configs in elm. This patch enables the compile-time standard
config to be used instead of some weak-wrong-usage hardcoded structure
defines somewhere in elm.

This means, that every update to the default theme will be also in the
next build embedded, without any config files installed at all, the
standard config for desktops will work, and a error will be printed, so
the user does have the possibility to interact with elm as he wishes,
while he sees this error.

fixes T7620

Reviewers: zmike, cedric, segfaultxavi, devilhorns

Reviewed By: zmike

Subscribers: devilhorns, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7620

Differential Revision: https://phab.enlightenment.org/D8481
2019-03-27 17:23:13 -04:00
Wonki Kim 8e8aa74751 entry: move a point to do 'auto_save' to another place
Summary:
By reworking on efl_file, logic flow for entry has been changed.
and it causes autosave making a file that is passed to elm_entry_file_set empty.

Test Plan:
1. call elm_entry_file_set for a file.
2. check the file is not empty after calling the function.

Reviewers: zmike, bu5hm4n

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8362
2019-03-27 10:58:30 -04:00