cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c49880076c353202e1d7a19ac2841a01f5756d41

commit c49880076c353202e1d7a19ac2841a01f5756d41
Author: Marcel Hollerbach <[email protected]>
Date:   Tue Dec 17 10:07:14 2019 +0100

    efl_ui_item: use signals from the theme and not object
    
    the problem here is that when we are using the signals from the object,
    then the edje object itself will receive press/unpress events before
    any content that is swallowed into the edje object.
    
    This means, that no clickable content, added to a item could be clicked
    without selecting / unselecting the item. Which was a problem.
    
    With this commit the theme is sending signals which are then passed to
    the efl.input.clickable mixin, this way, the part is stacked below the
    added content, which means, clickable content will not select / unselect
    the item anymore.
    
    Reviewed-by: Cedric BAIL <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D10892
---
 data/elementary/themes/edc/efl/grid.edc        | 21 +++++++------
 data/elementary/themes/edc/efl/group_item.edc  |  2 +-
 data/elementary/themes/edc/efl/list.edc        | 42 ++++++++++++++------------
 src/lib/elementary/efl_ui_item.c               |  5 ++-
 src/tests/elementary/spec/efl_test_clickable.c |  6 +---
 5 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/data/elementary/themes/edc/efl/grid.edc 
b/data/elementary/themes/edc/efl/grid.edc
index 51c1bd941d..d312ee71db 100644
--- a/data/elementary/themes/edc/efl/grid.edc
+++ b/data/elementary/themes/edc/efl/grid.edc
@@ -41,7 +41,7 @@ group { "efl/view_grid";
    data.item: "version" "123";
 }
 
-group { "efl/grid_item"; data.item: "version" "123";
+group { "efl/grid_item"; data.item: "version" "124";
    data.item: "selectraise" "on";
    data.item: "focusraise" "on";
    images.image: "bevel_dark_out.png" COMP;
@@ -52,15 +52,6 @@ group { "efl/grid_item"; data.item: "version" "123";
    parts {
 
       // BASE PARTS //
-      rect { "event";
-         desc { "default";
-            color: 0 0 0 0;
-         }
-         desc { "disabled";
-            inherit: "default";
-            hid;
-         }
-      }
       rect { "base"; mouse;
          desc { "default";
          }
@@ -208,6 +199,15 @@ group { "efl/grid_item"; data.item: "version" "123";
             color: 255 255 255 64;
          }
       }
+      rect { "event";
+         desc { "default";
+            color: 0 0 0 0;
+         }
+         desc { "disabled";
+            inherit: "default";
+            hid;
+         }
+      }
       swallow { "efl.icon";
          clip_to: "icon_area";
          desc { "default";
@@ -258,6 +258,7 @@ group { "efl/grid_item"; data.item: "version" "123";
       // TOP PARTS //
    }
    programs {
+      EFL_UI_CLICKABLE_PART_BIND("event")
       program {
          signal: "efl,state,selected"; source: "efl";
          action: STATE_SET "selected";
diff --git a/data/elementary/themes/edc/efl/group_item.edc 
b/data/elementary/themes/edc/efl/group_item.edc
index a76ae36c8c..16d4c78b94 100644
--- a/data/elementary/themes/edc/efl/group_item.edc
+++ b/data/elementary/themes/edc/efl/group_item.edc
@@ -8,7 +8,7 @@ Group: efl/group_item (@since 1.23)
 
 */
 
-group { "efl/group_item"; data.item: "version" "123"; nomouse; program_source: 
"efl";
+group { "efl/group_item"; data.item: "version" "124"; nomouse; program_source: 
"efl";
    images.image: "shadow_square_tiny.png" COMP;
    images.image: "bevel_out.png" COMP;
    images.image: "horizontal_separated_bar_small_glow.png" COMP;
diff --git a/data/elementary/themes/edc/efl/list.edc 
b/data/elementary/themes/edc/efl/list.edc
index 71da7877f2..debbd77944 100644
--- a/data/elementary/themes/edc/efl/list.edc
+++ b/data/elementary/themes/edc/efl/list.edc
@@ -56,7 +56,7 @@ group { "efl/list_view";
    data.item: "version" "123";
 }
 
-group { "efl/list_item"; data.item: "version" "123";
+group { "efl/list_item"; data.item: "version" "124";
    data.item: "selectraise" "on";
    data.item: "focusraise" "on";
    images.image: "bevel_curved_horiz_out.png" COMP;
@@ -65,15 +65,6 @@ group { "efl/list_item"; data.item: "version" "123";
    images.image: "bevel_horiz_out.png" COMP;
    images.image: "shine.png" COMP;
    parts {
-      rect { "event";
-         desc { "default";
-            color: 0 0 0 0;
-         }
-         desc { "disabled";
-            inherit: "default";
-            hid;
-         }
-      }
       rect { "base"; nomouse;
          desc { "default";
             color: 64 64 64 255;
@@ -218,6 +209,15 @@ group { "efl/list_item"; data.item: "version" "123";
             hid;
          }
       }
+      rect { "event";
+         desc { "default";
+            color: 0 0 0 0;
+         }
+         desc { "disabled";
+            inherit: "default";
+            hid;
+         }
+      }
       //##//
       swallow { "efl.icon";
          desc { "default";
@@ -268,6 +268,7 @@ group { "efl/list_item"; data.item: "version" "123";
       }
    }
    programs {
+      EFL_UI_CLICKABLE_PART_BIND("event")
       program {
          signal: "efl,state,odd"; source: "efl";
          action: STATE_SET "odd";
@@ -343,7 +344,7 @@ group { "efl/list_item"; data.item: "version" "123";
    }
 }
 
-group { "efl/list_item:placeholder"; data.item: "version" "123";
+group { "efl/list_item:placeholder"; data.item: "version" "124";
    data.item: "selectraise" "on";
    data.item: "focusraise" "on";
    images.image: "bevel_curved_horiz_out.png" COMP;
@@ -352,15 +353,6 @@ group { "efl/list_item:placeholder"; data.item: "version" 
"123";
    images.image: "bevel_horiz_out.png" COMP;
    images.image: "shine.png" COMP;
    parts {
-      rect { "event";
-         desc { "default";
-            color: 0 0 0 0;
-         }
-         desc { "disabled";
-            inherit: "default";
-            hid;
-         }
-      }
       rect { "base"; nomouse;
          desc { "default";
             color: 64 64 64 255;
@@ -425,6 +417,15 @@ group { "efl/list_item:placeholder"; data.item: "version" 
"123";
             vis;
          }
       }
+      rect { "event";
+         desc { "default";
+            color: 0 0 0 0;
+         }
+         desc { "disabled";
+            inherit: "default";
+            hid;
+         }
+      }
       //##//
       swallow { "efl.content"; mouse;
          scale;
@@ -463,6 +464,7 @@ group { "efl/list_item:placeholder"; data.item: "version" 
"123";
       }
    }
    programs {
+      EFL_UI_CLICKABLE_PART_BIND("event")
       program {
          signal: "efl,state,odd"; source: "efl";
          action: STATE_SET "odd";
diff --git a/src/lib/elementary/efl_ui_item.c b/src/lib/elementary/efl_ui_item.c
index 349416ee8a..5d86dc934d 100644
--- a/src/lib/elementary/efl_ui_item.c
+++ b/src/lib/elementary/efl_ui_item.c
@@ -129,7 +129,10 @@ _efl_ui_item_efl_object_finalize(Eo *obj, Efl_Ui_Item_Data 
*pd EINA_UNUSED)
    /* Support Item Focus Feature */
    elm_widget_can_focus_set(obj, EINA_TRUE);
 
-   efl_ui_action_connector_bind_clickable_to_object(wd->resize_obj, obj);
+   if (efl_ui_layout_theme_version_get(obj) == 123)
+     efl_ui_action_connector_bind_clickable_to_object(wd->resize_obj, obj);
+   else
+     efl_ui_action_connector_bind_clickable_to_theme(wd->resize_obj, obj);
    return eo;
 }
 
diff --git a/src/tests/elementary/spec/efl_test_clickable.c 
b/src/tests/elementary/spec/efl_test_clickable.c
index e6991f851d..d297d299c1 100644
--- a/src/tests/elementary/spec/efl_test_clickable.c
+++ b/src/tests/elementary/spec/efl_test_clickable.c
@@ -12,7 +12,7 @@
 #include "elm_widget.h"
 /* spec-meta-start
       {"test-interface":"Efl.Ui.Clickable",
-       "test-widgets": ["Efl.Ui.Button", "Efl.Ui.Image", "Efl.Ui.Panes", 
"Efl.Ui.Frame", "Efl.Ui.Item.Realized", "Efl.Ui.Radio", "Efl.Ui.Check"]
+       "test-widgets": ["Efl.Ui.Button", "Efl.Ui.Image", "Efl.Ui.Panes", 
"Efl.Ui.Frame", "Efl.Ui.Grid_Default_Item", "Efl.Ui.List_Default_Item", 
"Efl.Ui.Radio", "Efl.Ui.Check"]
        }
    spec-meta-end
  */
@@ -64,10 +64,6 @@ prepare_window(void)
      }
    else if (efl_isa(widget, EFL_UI_ITEM_CLASS))
      {
-        elm_widget_theme_klass_set(widget, "grid_item");
-        elm_widget_theme_element_set(widget, NULL);
-        elm_widget_theme_style_set(widget, NULL);
-        efl_ui_widget_theme_apply(widget);
         pos->x = 30;
         pos->y = 30;
      }

-- 


Reply via email to