summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2020-01-20 12:04:27 +0900
committerHermet Park <hermetpark@gmail.com>2020-01-20 12:04:27 +0900
commitfe4247ee13b9887649ac1811d7ff70c0ab451d02 (patch)
treef91e5b57d8335a64b3243dd60156fdcbc30008fe
parent1715761f3d2be0e1b1baf1f92f752f9221d3a1a8 (diff)
parentad633751997324274303176696cbfc14e1ecba5d (diff)
downloadefl-fe4247ee13b9887649ac1811d7ff70c0ab451d02.tar.gz
Merge branch 'master' into devs/hermet/lottie
-rw-r--r--data/elementary/themes/default.edc1
-rw-r--r--data/elementary/themes/edc/efl/separator.edc29
-rw-r--r--src/bin/elementary/meson.build1
-rw-r--r--src/bin/elementary/test.c5
-rw-r--r--src/bin/elementary/test_ui_separator.c26
-rw-r--r--src/lib/ecore_con/efl_net_server_unix.c77
-rw-r--r--src/lib/efl/interfaces/efl_ui_scrollbar.eo12
-rw-r--r--src/lib/elementary/Efl_Ui.h1
-rw-r--r--src/lib/elementary/efl_ui_internal_text_interactive.c23
-rw-r--r--src/lib/elementary/efl_ui_scroll_manager.c7
-rw-r--r--src/lib/elementary/efl_ui_scroll_manager.eo1
-rw-r--r--src/lib/elementary/efl_ui_scroll_util.c14
-rw-r--r--src/lib/elementary/efl_ui_separator.c46
-rw-r--r--src/lib/elementary/efl_ui_separator.eo20
-rw-r--r--src/lib/elementary/efl_ui_win.c264
-rw-r--r--src/lib/elementary/elc_fileselector_entry.c2
-rw-r--r--src/lib/elementary/meson.build4
-rw-r--r--src/lib/eolian_cxx/grammar/type_impl.hpp9
-rw-r--r--src/lib/evas/canvas/efl_text_cursor.c10
-rw-r--r--src/lib/evas/canvas/efl_text_cursor.eo30
-rw-r--r--src/lib/evas/canvas/evas_device.c6
-rw-r--r--src/lib/evas/canvas/evas_main.c8
-rw-r--r--src/lib/evas/include/evas_private.h2
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c58
-rw-r--r--src/modules/ecore_evas/engines/x/ecore_evas_x.c20
-rw-r--r--src/tests/elementary/efl_ui_suite.c2
-rw-r--r--src/tests/elementary/efl_ui_test_grid.c7
-rw-r--r--src/tests/elementary/efl_ui_test_list_collection.c4
-rw-r--r--src/tests/elementary/efl_ui_test_scroller.c51
-rw-r--r--src/tests/elementary/efl_ui_test_spotlight.c4
-rw-r--r--src/tests/elementary/spec/efl_test_basics.c3
-rw-r--r--src/tests/elementary/spec/efl_ui_spec_suite.c4
-rw-r--r--src/tests/evas/evas_test_textblock.c26
33 files changed, 584 insertions, 193 deletions
diff --git a/data/elementary/themes/default.edc b/data/elementary/themes/default.edc
index 5a0aaa6a4c..9f4ec449f8 100644
--- a/data/elementary/themes/default.edc
+++ b/data/elementary/themes/default.edc
@@ -212,4 +212,5 @@ collections {
#include "edc/efl/tab_page.edc"
#include "edc/efl/collection.edc"
#include "edc/efl/group_item.edc"
+#include "edc/efl/separator.edc"
}
diff --git a/data/elementary/themes/edc/efl/separator.edc b/data/elementary/themes/edc/efl/separator.edc
new file mode 100644
index 0000000000..5107bfabff
--- /dev/null
+++ b/data/elementary/themes/edc/efl/separator.edc
@@ -0,0 +1,29 @@
+group { name: "efl/separator/horizontal";
+ data.item: "version" "124";
+ images.image: "bevel_dark_in.png" COMP;
+ parts {
+ part { name: "base";
+ description { state: "default" 0.0;
+ min: 2 2;
+ max: 99999 2;
+ rel1.offset: 4 4;
+ rel2.offset: -5 -5;
+ image.normal: "bevel_dark_in.png";
+ image.border: 2 2 2 2;
+ fill.smooth: 0;
+ }
+ }
+ }
+}
+group { name: "efl/separator/vertical";
+ data.item: "version" "124";
+ inherit: "efl/separator/horizontal";
+ parts {
+ part { name: "base";
+ description { state: "default" 0.0;
+ max: 2 99999;
+ }
+ }
+ }
+}
+
diff --git a/src/bin/elementary/meson.build b/src/bin/elementary/meson.build
index 2195ded204..7eddf03b48 100644
--- a/src/bin/elementary/meson.build
+++ b/src/bin/elementary/meson.build
@@ -161,6 +161,7 @@ elementary_test_src = [
'test_ui_collection_view.c',
'test_ui_items.c',
'test_ui_frame.c',
+ 'test_ui_separator.c',
'test_efl_ui_vg_animation.c',
'test_efl_gfx_vg_value_provider.c',
'test.h'
diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c
index 94b4b3df91..d52240011b 100644
--- a/src/bin/elementary/test.c
+++ b/src/bin/elementary/test.c
@@ -409,6 +409,7 @@ void test_ui_frame(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e
void test_efl_ui_vg_animation(void *data, Evas_Object *obj, void *event_info);
void test_efl_gfx_vg_value_provider(void *data, Evas_Object *obj, void *event_info);
+void test_ui_separator(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, void *event_info EINA_UNUSED);
static void _list_udpate(void);
@@ -1151,7 +1152,7 @@ add_tests:
// FIXME: add frame test
ADD_TEST(NULL, "Boundaries", "Bubble", test_bubble);
ADD_TEST(NULL, "Boundaries", "Separator", test_separator);
-
+ ADD_TEST_EO(NULL, "Boundaries", "Separator", test_ui_separator);
//------------------------------//
ADD_TEST(NULL, "Range Values", "Spinner", test_spinner);
ADD_TEST_EO(NULL, "Range Values", "Efl.Ui.Spin", test_ui_spin);
@@ -1361,7 +1362,7 @@ add_tests:
}
/* set an initial window size */
- evas_object_resize(win, 480 * elm_config_scale_get(), 480 * elm_config_scale_get());
+ evas_object_resize(win, 480 * elm_config_scale_get(), 490 * elm_config_scale_get());
evas_object_show(win);
}
diff --git a/src/bin/elementary/test_ui_separator.c b/src/bin/elementary/test_ui_separator.c
new file mode 100644
index 0000000000..d30afd3a12
--- /dev/null
+++ b/src/bin/elementary/test_ui_separator.c
@@ -0,0 +1,26 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+#include <Efl_Ui.h>
+
+void
+test_ui_separator(void *data EINA_UNUSED, Eo *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Eo *win, *table, *sep;
+
+ win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
+ efl_text_set(efl_added, "Efl.Ui.Separator"),
+ efl_ui_win_autodel_set(efl_added, EINA_TRUE));
+
+ table = efl_add(EFL_UI_TABLE_CLASS, win);
+ efl_content_set(win, table);
+
+ sep = efl_add(EFL_UI_SEPARATOR_CLASS, win);
+ efl_pack_table(table, sep, 0, 0, 2, 1);
+
+ sep = efl_add(EFL_UI_SEPARATOR_CLASS, win,
+ efl_ui_layout_orientation_set(efl_added, EFL_UI_LAYOUT_ORIENTATION_VERTICAL));
+ efl_pack_table(table, sep, 0, 0, 2, 1);
+
+ efl_gfx_entity_size_set(win, EINA_SIZE2D(100, 120));
+}
diff --git a/src/lib/ecore_con/efl_net_server_unix.c b/src/lib/ecore_con/efl_net_server_unix.c
index ed8735fb0b..226d557c29 100644
--- a/src/lib/ecore_con/efl_net_server_unix.c
+++ b/src/lib/ecore_con/efl_net_server_unix.c
@@ -18,6 +18,26 @@
#include <sys/un.h>
#endif
+// BSD workaround - unable to reproduce.... but we seem to
+// get a blocking bind here if 2 processes fight over the same
+// socket where one of them loses out by sitting here and
+// blockign forever - as i can't reproduce in the freebsd vm
+// i have, so i'm limited in what to do so this is a
+// workaround to try mitigate this
+#if defined (__FreeBSD__)
+# define BIND_HANG_WORKAROUND 1
+#else
+// only need on freebsd
+//# define BIND_HANG_WORKAROUND 1
+#endif
+
+#ifdef BIND_HANG_WORKAROUND
+# include <sys/file.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <fcntl.h>
+#endif
+
/* no include EVIL as it's not supposed to be compiled on Windows */
#define MY_CLASS EFL_NET_SERVER_UNIX_CLASS
@@ -29,6 +49,52 @@ typedef struct _Efl_Net_Server_Unix_Data
Eina_Bool unlink_before_bind;
} Efl_Net_Server_Unix_Data;
+#ifdef BIND_HANG_WORKAROUND
+static Eina_Error
+_efl_net_server_unix_bind_hang_lock_workaround(const char *address, Eina_Bool lock)
+{
+ size_t addrlen;
+ char *lockfile;
+ int lockfile_fd, ret;
+ Eina_Error err = 0;
+
+ if (strncmp(address, "abstract:", strlen("abstract:")) == 0) return err;
+
+ addrlen = strlen(address);
+ lockfile = malloc(addrlen + 1 + 5);
+ if (!lockfile) return err;
+
+ strcpy(lockfile, address);
+ strncpy(lockfile + addrlen, ".lock", 6);
+#ifdef HAVE_OPEN_CLOEXEC
+ lockfile_fd = open(lockfile, O_RDWR | O_CREAT | O_TRUNC | O_CLOEXEC,
+ S_IRUSR | S_IWUSR);
+ if (lockfile_fd < 0) return err;
+#else
+ lockfile_fd = open(lockfile, O_RDWR | O_CREAT | O_TRUNC,
+ S_IRUSR | S_IWUSR);
+ if (lockfile_fd < 0) return err;
+ eina_file_close_on_exec(lockfile_fd, EINA_TRUE);
+#endif
+
+ errno = 0;
+ if (lock)
+ {
+ ret = flock(lockfile_fd, LOCK_EX | LOCK_NB);
+ if ((ret != 0) && (errno == EWOULDBLOCK))
+ err = EADDRINUSE;
+ }
+ else
+ {
+ flock(lockfile_fd, LOCK_UN | LOCK_NB);
+ unlink(lockfile);
+ }
+ close(lockfile_fd);
+ free(lockfile);
+ return err;
+}
+#endif
+
EOLIAN static void
_efl_net_server_unix_efl_object_destructor(Eo *o, Efl_Net_Server_Unix_Data *pd EINA_UNUSED)
{
@@ -38,7 +104,12 @@ _efl_net_server_unix_efl_object_destructor(Eo *o, Efl_Net_Server_Unix_Data *pd E
{
const char *address = efl_net_server_address_get(o);
if ((address) && (strncmp(address, "abstract:", strlen("abstract:")) != 0))
- unlink(address);
+ {
+ unlink(address);
+#ifdef BIND_HANG_WORKAROUND
+ _efl_net_server_unix_bind_hang_lock_workaround(address, EINA_FALSE);
+#endif
+ }
}
efl_destructor(efl_super(o, MY_CLASS));
@@ -101,6 +172,10 @@ _efl_net_server_unix_bind(Eo *o, Efl_Net_Server_Unix_Data *pd)
unlink(addr.sun_path);
}
+#ifdef BIND_HANG_WORKAROUND
+ if (_efl_net_server_unix_bind_hang_lock_workaround(address, EINA_TRUE))
+ goto error;
+#endif
r = bind(fd, (struct sockaddr *)&addr, addrlen);
if (r != 0)
{
diff --git a/src/lib/efl/interfaces/efl_ui_scrollbar.eo b/src/lib/efl/interfaces/efl_ui_scrollbar.eo
index 5741df6b8f..3b4696f00b 100644
--- a/src/lib/efl/interfaces/efl_ui_scrollbar.eo
+++ b/src/lib/efl/interfaces/efl_ui_scrollbar.eo
@@ -60,6 +60,18 @@ interface Efl.Ui.Scrollbar
and $[1.0] (the bottom side of the thumb is touching the bottom edge of the widget).]]
}
}
+ @property bar_visibility {
+ [[Current visibility state of the scrollbars.
+ This is useful in @Efl.Ui.Scrollbar_Mode.auto mode where EFL decides if the scrollbars
+ are shown or hidden. See also the @[.bar,show] and @[.bar,hide] events.
+ ]]
+ get {
+ }
+ values {
+ hbar: bool; [[Whether the horizontal scrollbar is currently visible.]]
+ vbar: bool; [[Whether the vertical scrollbar is currently visible.]]
+ }
+ }
bar_visibility_update @protected @beta{
[[Update bar visibility.
diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h
index 2fe6b95961..4ec831f2a2 100644
--- a/src/lib/elementary/Efl_Ui.h
+++ b/src/lib/elementary/Efl_Ui.h
@@ -328,6 +328,7 @@ typedef Eo Efl_Ui_Spotlight_Indicator;
# include <efl_ui_timepicker.eo.h>
# include <efl_ui_datepicker.eo.h>
# include <efl_ui_calendar.eo.h>
+# include <efl_ui_separator.eo.h>
/**
* Initialize Elementary
diff --git a/src/lib/elementary/efl_ui_internal_text_interactive.c b/src/lib/elementary/efl_ui_internal_text_interactive.c
index 8e1ad98c6a..829c952a65 100644
--- a/src/lib/elementary/efl_ui_internal_text_interactive.c
+++ b/src/lib/elementary/efl_ui_internal_text_interactive.c
@@ -540,7 +540,7 @@ _entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUS
for (i = 0; i < (preedit_end_pos - preedit_start_pos); i++)
{
- efl_text_cursor_move(en->preedit_start, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV);
+ efl_text_cursor_move(en->preedit_start, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS);
}
en->have_preedit = EINA_TRUE;
@@ -913,19 +913,19 @@ _delete_emit(Eo *obj, Efl_Text_Cursor *c, Efl_Ui_Internal_Text_Interactive_Data
Eo * cur = efl_duplicate(c);
if (backspace)
{
- if (!efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV))
+ if (!efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS))
{
return;
}
- efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT);
+ efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT);
}
else
{
- if (!efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT))
+ if (!efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT))
{
return;
}
- efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV);
+ efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS);
}
efl_del(cur);
cur = NULL;
@@ -1183,7 +1183,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void
#endif
if (efl_text_interactive_have_selection_get(obj))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- if (efl_text_cursor_move(cur,EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV))
+ if (efl_text_cursor_move(cur,EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
_key_down_sel_post(obj, cur, en, shift);
@@ -1202,7 +1202,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void
#endif
if (efl_text_interactive_have_selection_get(obj))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- if (efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT))
+ if (efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT))
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
_key_down_sel_post(obj, cur, en, shift);
@@ -1214,9 +1214,8 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void
{
// del to start of previous word
Efl_Text_Cursor *tc = efl_canvas_textblock_cursor_create(obj);
-
_cur_pos_copy(cur, tc);
- efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV);
+ efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS);
efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START);
_range_del_emit(obj, cur, tc);
@@ -1252,7 +1251,7 @@ _key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void
_cur_pos_copy(cur, tc);
efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END);
- efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT);
+ efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT);
_range_del_emit(obj, cur, tc);
@@ -1589,7 +1588,7 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN
else
{
efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END);
- efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT);
+ efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT);
}
_sel_extend(cur, obj, en);
}
@@ -1603,7 +1602,7 @@ _mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EIN
efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START);
_sel_init(cur, obj, en);
efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END);
- efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT);
+ efl_text_cursor_move(cur, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT);
_sel_extend(cur, obj, en);
}
goto end;
diff --git a/src/lib/elementary/efl_ui_scroll_manager.c b/src/lib/elementary/efl_ui_scroll_manager.c
index 3d332e94fb..650a726bc1 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.c
+++ b/src/lib/elementary/efl_ui_scroll_manager.c
@@ -2188,6 +2188,13 @@ _efl_ui_scrollbar_v_visibility_adjust(Eo *obj)
}
EOLIAN static void
+_efl_ui_scroll_manager_efl_ui_scrollbar_bar_visibility_get(const Eo *obj EINA_UNUSED, Efl_Ui_Scroll_Manager_Data *sd, Eina_Bool *hbar, Eina_Bool *vbar)
+{
+ if (hbar) *hbar = sd->hbar_visible;
+ if (vbar) *vbar = sd->vbar_visible;
+}
+
+EOLIAN static void
_efl_ui_scroll_manager_efl_ui_scrollbar_bar_visibility_update(Eo *obj, Efl_Ui_Scroll_Manager_Data *sd EINA_UNUSED)
{
_efl_ui_scrollbar_h_visibility_adjust(obj);
diff --git a/src/lib/elementary/efl_ui_scroll_manager.eo b/src/lib/elementary/efl_ui_scroll_manager.eo
index 957a4f4d4d..9dcd9f8a88 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.eo
+++ b/src/lib/elementary/efl_ui_scroll_manager.eo
@@ -39,6 +39,7 @@ class @beta Efl.Ui.Scroll.Manager extends Efl.Object implements
Efl.Ui.Scrollbar.bar_mode { get; set; }
Efl.Ui.Scrollbar.bar_size { get; }
Efl.Ui.Scrollbar.bar_position { get; set; }
+ Efl.Ui.Scrollbar.bar_visibility { get; }
Efl.Ui.Scrollbar.bar_visibility_update;
Efl.Ui.Scrollable.scroll;
}
diff --git a/src/lib/elementary/efl_ui_scroll_util.c b/src/lib/elementary/efl_ui_scroll_util.c
index 673cac2eae..6a7378e3b4 100644
--- a/src/lib/elementary/efl_ui_scroll_util.c
+++ b/src/lib/elementary/efl_ui_scroll_util.c
@@ -38,6 +38,20 @@ _scroll_connector_reload_cb(void *data,
const char *source EINA_UNUSED)
{
Scroll_Connector_Context *ctx = data;
+ ELM_WIDGET_DATA_GET_OR_RETURN(ctx->obj, wd);
+ Eina_Bool hbar_visible = EINA_FALSE, vbar_visible = EINA_FALSE;
+
+ efl_ui_scrollbar_bar_visibility_get(ctx->smanager, &hbar_visible, &vbar_visible);
+
+ if (hbar_visible)
+ efl_layout_signal_emit(wd->resize_obj, "efl,horizontal_bar,visible,on", "efl");
+ else
+ efl_layout_signal_emit(wd->resize_obj, "efl,horizontal_bar,visible,off", "efl");
+
+ if (vbar_visible)
+ efl_layout_signal_emit(wd->resize_obj, "efl,vertical_bar,visible,on", "efl");
+ else
+ efl_layout_signal_emit(wd->resize_obj, "efl,vertical_bar,visible,off", "efl");
efl_ui_scrollbar_bar_visibility_update(ctx->smanager);
}
diff --git a/src/lib/elementary/efl_ui_separator.c b/src/lib/elementary/efl_ui_separator.c
new file mode 100644
index 0000000000..887cfb3c40
--- /dev/null
+++ b/src/lib/elementary/efl_ui_separator.c
@@ -0,0 +1,46 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Efl_Ui.h>
+#include "elm_priv.h"
+
+typedef struct {
+ Efl_Ui_Layout_Orientation dir;
+} Efl_Ui_Separator_Data;
+
+#define MY_CLASS EFL_UI_SEPARATOR_CLASS
+
+
+EOLIAN static Efl_Object*
+_efl_ui_separator_efl_object_constructor(Eo *obj, Efl_Ui_Separator_Data *pd EINA_UNUSED)
+{
+ if (!elm_widget_theme_klass_get(obj))
+ elm_widget_theme_klass_set(obj, "separator");
+ return efl_constructor(efl_super(obj, MY_CLASS));
+}
+
+EOLIAN static void
+_efl_ui_separator_efl_ui_layout_orientable_orientation_set(Eo *obj EINA_UNUSED, Efl_Ui_Separator_Data *pd, Efl_Ui_Layout_Orientation dir)
+{
+ pd->dir = dir;
+}
+
+EOLIAN static Efl_Ui_Layout_Orientation
+_efl_ui_separator_efl_ui_layout_orientable_orientation_get(const Eo *ob EINA_UNUSED, Efl_Ui_Separator_Data *pd)
+{
+ return pd->dir;
+}
+
+EOLIAN static Eina_Error
+_efl_ui_separator_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Separator_Data *pd)
+{
+ if (efl_ui_layout_orientation_is_horizontal(pd->dir, EINA_TRUE))
+ elm_widget_theme_element_set(obj, "horizontal");
+ else
+ elm_widget_theme_element_set(obj, "vertical");
+ return efl_ui_widget_theme_apply(efl_super(obj, MY_CLASS));
+}
+
+
+#include "efl_ui_separator.eo.c"
diff --git a/src/lib/elementary/efl_ui_separator.eo b/src/lib/elementary/efl_ui_separator.eo
new file mode 100644
index 0000000000..9dd0ef4491
--- /dev/null
+++ b/src/lib/elementary/efl_ui_separator.eo
@@ -0,0 +1,20 @@
+class Efl.Ui.Separator extends Efl.Ui.Item implements Efl.Ui.Layout_Orientable
+{
+ [[Vertical or horizontal separator line.
+
+ Use it to separate groups of buttons in a toolbar, for example, or items on a list.
+ The length of the line adapts to the size of the container, and its width is
+ controlled by the theme.
+
+ @since 1.24
+ ]]
+
+ implements {
+ Efl.Object.constructor;
+ Efl.Ui.Widget.theme_apply;
+ Efl.Ui.Layout_Orientable.orientation { get; set; }
+ }
+ constructors {
+ Efl.Ui.Layout_Orientable.orientation;
+ }
+}
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index e6fb0191b4..2430b50638 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -210,6 +210,7 @@ struct _Efl_Ui_Win_Data
int norender;
int modal_count;
int response;
+ int ignore_frame_resize;
Eina_Bool req_wh : 1;
Eina_Bool req_xy : 1;
@@ -466,6 +467,69 @@ _elm_win_first_frame_do(void *data, Evas *e EINA_UNUSED, void *event_info EINA_U
evas_event_callback_del_full(e, EVAS_CALLBACK_RENDER_POST, _elm_win_first_frame_do, data);
}
+Ecore_X_Window
+_elm_ee_xwin_get(const Ecore_Evas *ee)
+{
+#ifdef HAVE_ELEMENTARY_X
+ const char *engine_name;
+ if (!ee) return 0;
+
+ engine_name = ecore_evas_engine_name_get(ee);
+ if (EINA_UNLIKELY(!engine_name)) return 0;
+
+ if (!strcmp(engine_name, ELM_SOFTWARE_X11))
+ {
+ return ecore_evas_software_x11_window_get(ee);
+ }
+ else if (!strcmp(engine_name, ELM_OPENGL_X11))
+ {
+ return ecore_evas_gl_x11_window_get(ee);
+ }
+#else
+ (void)ee;
+#endif
+ return 0;
+}
+
+#ifdef HAVE_ELEMENTARY_X
+static void
+_internal_elm_win_xwindow_get(Efl_Ui_Win_Data *sd)
+{
+ Ecore_X_Window pwin = sd->x.xwin;
+ sd->x.xwin = _elm_ee_xwin_get(sd->ee);
+ if (sd->x.xwin != pwin)
+ {
+ char buf[128];
+
+ snprintf(buf, sizeof(buf), "%x", sd->x.xwin);
+ eina_stringshare_del(sd->stack_id);
+ sd->stack_id = eina_stringshare_add(buf);
+ }
+}
+#endif
+
+Ecore_Wl2_Window *
+_elm_ee_wlwin_get(const Ecore_Evas *ee)
+{
+#ifdef HAVE_ELEMENTARY_WL2
+ const char *engine_name;
+
+ if (!ee) return NULL;
+
+ engine_name = ecore_evas_engine_name_get(ee);
+ if (EINA_UNLIKELY(!engine_name)) return NULL;
+
+ if ((!strcmp(engine_name, ELM_WAYLAND_SHM)) ||
+ (!strcmp(engine_name, ELM_WAYLAND_EGL)))
+ {
+ return ecore_evas_wayland2_window_get(ee);
+ }
+#else
+ (void)ee;
+#endif
+ return NULL;
+}
+
static void
_win_noblank_eval(void)
{
@@ -481,6 +545,7 @@ _win_noblank_eval(void)
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
if ((sd->noblank) && (!sd->minimized) && (!sd->withdrawn) &&
evas_object_visible_get(obj))
noblanks++;
@@ -525,6 +590,7 @@ _elm_win_apply_alpha(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
#ifdef HAVE_ELEMENTARY_X
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
enabled |= (sd->csd.need && !sd->fullscreen);
if (!ecore_x_screen_is_composited(0))
{
@@ -1082,7 +1148,10 @@ _elm_win_pre_render(Ecore_Evas *ee)
if (sd->pointer.obj) evas_object_show(sd->pointer.obj);
#ifdef ELEMENTARY_X
if (sd->type == ELM_WIN_TOOLTIP)
- ecore_x_window_shape_input_rectangle_set(sd->x.xwin, 0, 0, 0, 0);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_window_shape_input_rectangle_set(sd->x.xwin, 0, 0, 0, 0);
+ }
#endif
sd->first_draw = EINA_TRUE;
/* set this to handle ecore-evas engine code which incorrectly
@@ -1558,16 +1627,25 @@ _elm_win_frame_geometry_adjust(Efl_Ui_Win_Data *sd)
{
int fw, fh, ox, oy, ow, oh;
evas_object_geometry_get(sd->frame_obj, NULL, NULL, &fw, &fh);
+ sd->ignore_frame_resize++;
+ evas_object_resize(sd->frame_obj, 1000, 1000);
if (elm_widget_is_legacy(sd->obj))
edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.opaque",
&ox, &oy, &ow, &oh);
else
edje_object_part_geometry_get(sd->frame_obj, "efl.spacer.opaque",
&ox, &oy, &ow, &oh);
+ evas_object_resize(sd->frame_obj, fw, fh);
+ sd->ignore_frame_resize--;
+ fw = 1000; fh = 1000;
l = ox;
t = oy;
r = fw - ow - l;
b = fh - oh - t;
+ if (l < 0) l = 0;
+ if (r < 0) r = 0;
+ if (t < 0) t = 0;
+ if (b < 0) b = 0;
}
ecore_evas_shadow_geometry_set(sd->ee, l, r, t, b);
}
@@ -1590,24 +1668,31 @@ _elm_win_frame_obj_update(Efl_Ui_Win_Data *sd, Eina_Bool force)
int ox, oy, ow, oh;
int cx, cy, cw, ch;
int w, h;
+ int l, r, t, b;
if (!sd->frame_obj) return;
if (!sd->csd.need) return;
_elm_win_frame_geometry_adjust(sd);
+ ecore_evas_shadow_geometry_get(sd->ee, &l, &r, &t, &b);
+ sd->ignore_frame_resize++;
evas_object_geometry_get(sd->frame_obj, &ox, &oy, &ow, &oh);
+ evas_object_resize(sd->frame_obj, 1000, 1000);
if (elm_widget_is_legacy(sd->obj))
edje_object_part_geometry_get(sd->frame_obj, "elm.spacer.content", &cx, &cy, &cw, &ch);
else
edje_object_part_geometry_get(sd->frame_obj, "efl.spacer.content", &cx, &cy, &cw, &ch);
-
- if (!_elm_win_framespace_set(sd, cx, cy, ow - cw, oh - ch) && (!force)) return;
+ evas_object_resize(sd->frame_obj, ow, oh);
+ sd->ignore_frame_resize--;
+ if (!_elm_win_framespace_set(sd, cx, cy, 1000 - cw, 1000 - ch) && (!force)) return;
_elm_win_frame_geometry_adjust(sd);
if (!sd->first_draw) return;
evas_object_geometry_get(sd->obj, NULL, NULL, &w, &h);
if (w && h)
- TRAP(sd, resize, w, h);
+ {
+ TRAP(sd, resize, w, h);
+ }
}
static int
@@ -3208,7 +3293,7 @@ _efl_ui_win_efl_gfx_entity_size_set(Eo *obj, Efl_Ui_Win_Data *sd, Eina_Size2D sz
evas_object_image_size_set(sd->img_obj, sz.w, sz.h);
}
- _elm_win_frame_geometry_adjust(sd);
+ _elm_win_frame_obj_update(sd, 1);
if (!sd->response)
{
sd->req_wh = EINA_TRUE;
@@ -3253,69 +3338,6 @@ _elm_win_delete_request(Ecore_Evas *ee)
evas_object_unref(obj);
}
-Ecore_X_Window
-_elm_ee_xwin_get(const Ecore_Evas *ee)
-{
-#ifdef HAVE_ELEMENTARY_X
- const char *engine_name;
- if (!ee) return 0;
-
- engine_name = ecore_evas_engine_name_get(ee);
- if (EINA_UNLIKELY(!engine_name)) return 0;
-
- if (!strcmp(engine_name, ELM_SOFTWARE_X11))
- {
- return ecore_evas_software_x11_window_get(ee);
- }
- else if (!strcmp(engine_name, ELM_OPENGL_X11))
- {
- return ecore_evas_gl_x11_window_get(ee);
- }
-#else
- (void)ee;
-#endif
- return 0;
-}
-
-#ifdef HAVE_ELEMENTARY_X
-static void
-_internal_elm_win_xwindow_get(Efl_Ui_Win_Data *sd)
-{
- Ecore_X_Window pwin = sd->x.xwin;
- sd->x.xwin = _elm_ee_xwin_get(sd->ee);
- if (sd->x.xwin != pwin)
- {
- char buf[128];
-
- snprintf(buf, sizeof(buf), "%x", sd->x.xwin);
- eina_stringshare_del(sd->stack_id);
- sd->stack_id = eina_stringshare_add(buf);
- }
-}
-#endif
-
-Ecore_Wl2_Window *
-_elm_ee_wlwin_get(const Ecore_Evas *ee)
-{
-#ifdef HAVE_ELEMENTARY_WL2
- const char *engine_name;
-
- if (!ee) return NULL;
-
- engine_name = ecore_evas_engine_name_get(ee);
- if (EINA_UNLIKELY(!engine_name)) return NULL;
-
- if ((!strcmp(engine_name, ELM_WAYLAND_SHM)) ||
- (!strcmp(engine_name, ELM_WAYLAND_EGL)))
- {
- return ecore_evas_wayland2_window_get(ee);
- }
-#else
- (void)ee;
-#endif
- return NULL;
-}
-
#ifdef HAVE_ELEMENTARY_WL2
static void
_elm_win_wlwindow_get(Efl_Ui_Win_Data *sd)
@@ -3476,6 +3498,7 @@ _elm_win_xwin_update(Efl_Ui_Win_Data *sd)
_internal_elm_win_xwindow_get(sd);
if (!sd->x.xwin) return; /* nothing more to do */
+ _internal_elm_win_xwindow_get(sd);
if (sd->stack_master_id)
{
@@ -3494,6 +3517,7 @@ _elm_win_xwin_update(Efl_Ui_Win_Data *sd)
if (sd->parent)
{
ELM_WIN_DATA_GET(sd->parent, sdp);
+ _internal_elm_win_xwindow_get(sdp);
if (sdp) ecore_x_icccm_transient_for_set(sd->x.xwin, sdp->x.xwin);
}
}
@@ -3733,10 +3757,10 @@ _elm_win_resize_objects_eval(Evas_Object *obj, Eina_Bool force_resize)
int fw, fh;
evas_output_framespace_get(sd->evas, NULL, NULL, &fw, &fh);
- minw += fw;
- minh += fh;
- maxw += fw;
- maxh += fh;
+// minw += fw;
+// minh += fh;
+// maxw += fw;
+// maxh += fh;
}
sd->tmp_updating_hints = 1;
@@ -3881,6 +3905,7 @@ _elm_win_client_message(void *data,
Ecore_X_Event_Client_Message *e = event;
if (e->format != 32) return ECORE_CALLBACK_PASS_ON;
+ _internal_elm_win_xwindow_get(sd);
if (e->message_type == ECORE_X_ATOM_E_COMP_FLUSH)
{
if ((unsigned int)e->data.l[0] == sd->x.xwin)
@@ -3983,6 +4008,7 @@ _elm_win_property_change(void *data,
if (e->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE)
{
+ _internal_elm_win_xwindow_get(sd);
if (e->win == sd->x.xwin)
{
sd->legacy.indmode = (Elm_Win_Indicator_Mode)ecore_x_e_illume_indicator_state_get(e->win);
@@ -4215,6 +4241,7 @@ _elm_win_frame_obj_resize(void *data,
if (!(sd = data)) return;
if (!sd->legacy.edje) return;
+ if (sd->ignore_frame_resize > 0) return;
_elm_win_frame_obj_update(sd, 0);
}
@@ -4303,6 +4330,7 @@ _win_move_start(Efl_Ui_Win_Data *sd)
{
int x, y;
+ _internal_elm_win_xwindow_get(sd);
sd->resizing = EINA_TRUE;
ecore_x_pointer_ungrab();
ecore_x_pointer_root_xy_get(&x, &y);
@@ -4356,6 +4384,7 @@ _win_move_resize_start(Efl_Ui_Win_Data *sd, Efl_Ui_Win_Move_Resize_Mode mode)
if (sd->x.xwin)
{
int x, y;
+ _internal_elm_win_xwindow_get(sd);
ecore_x_pointer_ungrab();
ecore_x_pointer_root_xy_get(&x, &y);
ecore_x_netwm_moveresize_request_send(sd->x.xwin, x, y, ri->x_dir, 1);
@@ -4761,7 +4790,9 @@ _elm_win_frame_add(Efl_Ui_Win_Data *sd, const char *element, const char *style)
_elm_win_frame_geometry_adjust(sd);
ecore_evas_geometry_get(sd->ee, NULL, NULL, &w, &h);
if ((w > 1) && (h > 1))
- ecore_evas_resize(sd->ee, w, h);
+ {
+ ecore_evas_resize(sd->ee, w, h);
+ }
}
static void
@@ -6224,6 +6255,7 @@ _efl_ui_win_center(Eo *obj, Efl_Ui_Win_Data *sd, Eina_Bool h, Eina_Bool v)
static Ecore_X_Atom state = 0;
static Ecore_X_Atom centered = 0;
+ _internal_elm_win_xwindow_get(sd);
if (!centered) centered = ecore_x_atom_get
("__E_ATOM_WINDOW_STATE_CENTERED");
if (!state) state = ecore_x_atom_get
@@ -6908,8 +6940,11 @@ _efl_ui_win_keyboard_mode_set(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd, Efl_Ui_W
sd->kbdmode = mode;
#ifdef HAVE_ELEMENTARY_X
if (sd->x.xwin)
- ecore_x_e_virtual_keyboard_state_set
- (sd->x.xwin, (Ecore_X_Virtual_Keyboard_State)sd->kbdmode);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_e_virtual_keyboard_state_set
+ (sd->x.xwin, (Ecore_X_Virtual_Keyboard_State)sd->kbdmode);
+ }
#endif
}
@@ -7131,7 +7166,8 @@ _efl_ui_win_stack_master_id_set(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd, const
if (sd->shown) return;
eina_stringshare_replace(&(sd->stack_master_id), id);
#ifdef HAVE_ELEMENTARY_X
- if (sd->x.xwin) _elm_win_xwin_update(sd);
+ if (sd->x.xwin)
+ _elm_win_xwin_update(sd);
else
#endif
{
@@ -7214,6 +7250,7 @@ _efl_ui_win_stack_pop_to(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
int i, num = 0;
Eina_Bool del = EINA_FALSE;
+ _internal_elm_win_xwindow_get(sd);
ecore_x_grab();
_x_transients_for_list
(ecore_x_window_root_get(sd->x.xwin),
@@ -7269,6 +7306,7 @@ elm_win_floating_mode_set(Evas_Object *obj, Eina_Bool floating)
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
if (sd->floating)
ecore_x_e_illume_window_state_set
(sd->x.xwin, ECORE_X_ILLUME_WINDOW_STATE_FLOATING);
@@ -7884,6 +7922,7 @@ elm_win_xwindow_get(const Evas_Object *obj)
if (!sd) return 0;
#ifdef HAVE_ELEMENTARY_X
+ _internal_elm_win_xwindow_get(sd);
if (sd->x.xwin) return sd->x.xwin;
if (sd->parent) return elm_win_xwindow_get(sd->parent);
#endif
@@ -8007,6 +8046,7 @@ elm_win_quickpanel_set(Evas_Object *obj, Eina_Bool quickpanel)
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
ecore_x_e_illume_quickpanel_set(sd->x.xwin, quickpanel);
if (quickpanel)
{
@@ -8033,7 +8073,10 @@ elm_win_quickpanel_get(const Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- return ecore_x_e_illume_quickpanel_get(sd->x.xwin);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return ecore_x_e_illume_quickpanel_get(sd->x.xwin);
+ }
#else
(void)sd;
#endif
@@ -8050,7 +8093,10 @@ elm_win_quickpanel_priority_major_set(Evas_Object *obj, int priority)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- ecore_x_e_illume_quickpanel_priority_major_set(sd->x.xwin, priority);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_e_illume_quickpanel_priority_major_set(sd->x.xwin, priority);
+ }
#else
(void)sd;
(void)priority;
@@ -8066,7 +8112,10 @@ elm_win_quickpanel_priority_major_get(const Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- return ecore_x_e_illume_quickpanel_priority_major_get(sd->x.xwin);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return ecore_x_e_illume_quickpanel_priority_major_get(sd->x.xwin);
+ }
#else
(void)sd;
#endif
@@ -8083,7 +8132,10 @@ elm_win_quickpanel_priority_minor_set(Evas_Object *obj, int priority)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- ecore_x_e_illume_quickpanel_priority_minor_set(sd->x.xwin, priority);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_e_illume_quickpanel_priority_minor_set(sd->x.xwin, priority);
+ }
#else
(void)sd;
(void)priority;
@@ -8099,7 +8151,10 @@ elm_win_quickpanel_priority_minor_get(const Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- return ecore_x_e_illume_quickpanel_priority_minor_get(sd->x.xwin);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return ecore_x_e_illume_quickpanel_priority_minor_get(sd->x.xwin);
+ }
#else
(void)sd;
#endif
@@ -8116,7 +8171,10 @@ elm_win_quickpanel_zone_set(Evas_Object *obj, int zone)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- ecore_x_e_illume_quickpanel_zone_set(sd->x.xwin, zone);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_e_illume_quickpanel_zone_set(sd->x.xwin, zone);
+ }
#else
(void)sd;
(void)zone;
@@ -8132,7 +8190,10 @@ elm_win_quickpanel_zone_get(const Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- return ecore_x_e_illume_quickpanel_zone_get(sd->x.xwin);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return ecore_x_e_illume_quickpanel_zone_get(sd->x.xwin);
+ }
#else
(void)sd;
#endif
@@ -8160,6 +8221,7 @@ elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode)
#ifdef HAVE_ELEMENTARY_X
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
if (sd->legacy.indmode == ELM_WIN_INDICATOR_SHOW)
ecore_x_e_illume_indicator_state_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_ON);
@@ -8205,6 +8267,7 @@ elm_win_indicator_opacity_set(Evas_Object *obj, Elm_Win_Indicator_Opacity_Mode m
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
if (sd->legacy.ind_o_mode == ELM_WIN_INDICATOR_OPAQUE)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_OPAQUE);
@@ -8244,7 +8307,10 @@ elm_win_keyboard_win_set(Evas_Object *obj, Eina_Bool is_keyboard)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- ecore_x_e_virtual_keyboard_set(sd->x.xwin, is_keyboard);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_e_virtual_keyboard_set(sd->x.xwin, is_keyboard);
+ }
#else
(void)sd;
(void)is_keyboard;
@@ -8259,7 +8325,11 @@ elm_win_keyboard_win_get(const Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
- if (sd->x.xwin) return ecore_x_e_virtual_keyboard_get(sd->x.xwin);
+ if (sd->x.xwin)
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return ecore_x_e_virtual_keyboard_get(sd->x.xwin);
+ }
#else
(void)sd;
#endif
@@ -8275,7 +8345,10 @@ elm_win_conformant_set(Evas_Object *obj, Eina_Bool conformant)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- ecore_x_e_illume_conformant_set(sd->x.xwin, conformant);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ecore_x_e_illume_conformant_set(sd->x.xwin, conformant);
+ }
#else
(void)sd;
(void)conformant;
@@ -8291,7 +8364,10 @@ elm_win_conformant_get(const Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- return ecore_x_e_illume_conformant_get(sd->x.xwin);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return ecore_x_e_illume_conformant_get(sd->x.xwin);
+ }
#else
(void)sd;
#endif
@@ -8594,6 +8670,7 @@ elm_win_illume_command_send(Evas_Object *obj, Elm_Illume_Command command, void *
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
switch (command)
{
case ELM_ILLUME_COMMAND_FOCUS_BACK:
@@ -8703,7 +8780,11 @@ _elm_win_window_id_get(Efl_Ui_Win_Data *sd)
#endif
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
- if (sd->x.xwin) return (Ecore_Window)sd->x.xwin;
+ if (sd->x.xwin)
+ {
+ _internal_elm_win_xwindow_get(sd);
+ return (Ecore_Window)sd->x.xwin;
+ }
if (sd->parent)
{
Ecore_Window xwin = elm_win_xwindow_get(sd->parent);
@@ -8772,6 +8853,7 @@ elm_win_main_menu_get(Evas_Object *obj)
#ifdef HAVE_ELEMENTARY_X
if (use_dbus && _elm_dbus_menu_register(sd->main_menu))
{
+ _internal_elm_win_xwindow_get(sd);
_elm_dbus_menu_app_menu_register(sd->x.xwin, sd->main_menu,
_dbus_menu_set, obj);
}
@@ -8954,6 +9036,7 @@ elm_win_keygrab_set(Elm_Win *obj, const char *key,
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
+ _internal_elm_win_xwindow_get(sd);
Ecore_X_Win_Keygrab_Mode x_grab_mode;
switch (grab_mode)
{
@@ -8994,7 +9077,10 @@ elm_win_keygrab_unset(Elm_Win *obj, const char *key,
EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE);
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
- ret = ecore_x_window_keygrab_unset(sd->x.xwin, key, 0, 0);
+ {
+ _internal_elm_win_xwindow_get(sd);
+ ret = ecore_x_window_keygrab_unset(sd->x.xwin, key, 0, 0);
+ }
#else
(void)obj;
(void)key;
diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c
index 52d901ba9b..632f17385b 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -450,7 +450,7 @@ _elm_fileselector_entry_efl_ui_view_model_get(const Eo *obj, Elm_Fileselector_En
ret = efl_add_ref(efl_class_get(bmodel), (Eo*) obj,
efl_io_model_path_set(efl_added, sd->path),
efl_loop_model_volatile_make(efl_added));
- eina_freeq_ptr_add(postponed_fq, ret, EINA_FREE_CB(efl_unref), sizeof (void*));
+ eina_freeq_ptr_add(postponed_fq, ret, EINA_FREE_CB(efl_unref), 0);
return ret;
}
diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build
index b49053c9bf..99aa22469a 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -190,6 +190,7 @@ pub_eo_files = [
'efl_ui_grid_view.eo',
'efl_ui_pager.eo',
'efl_ui_stack.eo',
+ 'efl_ui_separator.eo'
]
foreach eo_file : pub_eo_files
@@ -946,7 +947,8 @@ elementary_src = [
'efl_ui_view_model.c',
'efl_ui_collection_view.c',
'efl_ui_pager.c',
- 'efl_ui_stack.c'
+ 'efl_ui_stack.c',
+ 'efl_ui_separator.c'
]
elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, efreet_mime, efreet_trash, eio, atspi, dl, intl]
diff --git a/src/lib/eolian_cxx/grammar/type_impl.hpp b/src/lib/eolian_cxx/grammar/type_impl.hpp
index 29d28857f9..b43641a052 100644
--- a/src/lib/eolian_cxx/grammar/type_impl.hpp
+++ b/src/lib/eolian_cxx/grammar/type_impl.hpp
@@ -283,7 +283,14 @@ struct visitor_generate
}
else
{
- if(as_generator
+ if(regular.type_type == attributes::typedecl_type::struct_
+ || regular.type_type == attributes::typedecl_type::struct_opaque)
+ {
+ std::copy (c_type.begin(), c_type.end(), sink);
+ return true;
+ }
+ else
+ if(as_generator
(
*(string << "_")
<< string
diff --git a/src/lib/evas/canvas/efl_text_cursor.c b/src/lib/evas/canvas/efl_text_cursor.c
index c0a6c627d9..c1e344136d 100644
--- a/src/lib/evas/canvas/efl_text_cursor.c
+++ b/src/lib/evas/canvas/efl_text_cursor.c
@@ -21,7 +21,7 @@ struct _Evas_Textblock_Selection_Iterator
typedef struct _Evas_Textblock_Selection_Iterator Evas_Textblock_Selection_Iterator;
-EFL_CLASS_SIMPLE_CLASS(efl_text_cursor, "efl_text_cursor", EFL_TEXT_CURSOR_CLASS)
+EFL_CLASS_SIMPLE_CLASS(efl_text_cursor, "Efl.Text.Cursor", EFL_TEXT_CURSOR_CLASS)
EOLIAN static void
_efl_text_cursor_position_set(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, int position)
@@ -140,16 +140,16 @@ _efl_text_cursor_move(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cu
int pos = evas_textblock_cursor_pos_get(pd->handle);
switch (type) {
- case EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT :
+ case EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT :
moved = evas_textblock_cursor_char_next(pd->handle);
break;
- case EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV :
+ case EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS :
moved = evas_textblock_cursor_char_prev(pd->handle);
break;
case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT :
moved = evas_textblock_cursor_cluster_next(pd->handle);
break;
- case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREV :
+ case EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS :
moved = evas_textblock_cursor_cluster_prev(pd->handle);
break;
case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START :
@@ -191,7 +191,7 @@ _efl_text_cursor_move(Eo *obj EINA_UNUSED, Efl_Text_Cursor_Data *pd, Efl_Text_Cu
case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT :
moved = evas_textblock_cursor_paragraph_next(pd->handle);
break;
- case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREV :
+ case EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS :
moved = evas_textblock_cursor_paragraph_prev(pd->handle);
break;
}
diff --git a/src/lib/evas/canvas/efl_text_cursor.eo b/src/lib/evas/canvas/efl_text_cursor.eo
index e63e080b78..2c77f84a14 100644
--- a/src/lib/evas/canvas/efl_text_cursor.eo
+++ b/src/lib/evas/canvas/efl_text_cursor.eo
@@ -10,22 +10,22 @@ enum @beta Efl.Text.Cursor_Type
enum @beta Efl.Text.Cursor_Move_Type
{
[[Text cursor movement types.]]
- char_next, [[Advances to the next character.]]
- char_prev, [[Advances to the previous character.]]
- cluster_next, [[Advances to the next grapheme cluster
+ character_next, [[Advances to the next character.]]
+ character_previous, [[Advances to the previous character.]]
+ cluster_next, [[Advances to the next grapheme cluster
(A character sequence rendered together. See https://unicode.org/reports/tr29/).]]
- cluster_prev, [[Advances to the previous grapheme cluster
+ cluster_previous, [[Advances to the previous grapheme cluster
(A character sequence rendered together. See https://unicode.org/reports/tr29/).]]
- paragraph_start, [[Advances to the first character in current paragraph.]]
- paragraph_end, [[Advances to the last character in current paragraph.]]
- word_start, [[Advance to current word start.]]
- word_end, [[Advance to current word end.]]
- line_start, [[Advance to current line first character.]]
- line_end, [[Advance to current line last character.]]
- first, [[Advance to first character in the first paragraph.]]
- last, [[Advance to last character in the last paragraph.]]
- paragraph_next, [[Advances to the start of the next paragraph.]]
- paragraph_prev [[Advances to the end of the previous paragraph.]]
+ paragraph_start, [[Advances to the first character in current paragraph.]]
+ paragraph_end, [[Advances to the last character in current paragraph.]]
+ word_start, [[Advance to current word start.]]
+ word_end, [[Advance to current word end.]]
+ line_start, [[Advance to current line first character.]]
+ line_end, [[Advance to current line last character.]]
+ first, [[Advance to first character in the first paragraph.]]
+ last, [[Advance to last character in the last paragraph.]]
+ paragraph_next, [[Advances to the start of the next paragraph.]]
+ paragraph_previous [[Advances to the end of the previous paragraph.]]
}
abstract @beta Efl.Text.Cursor extends Efl.Object implements Efl.Duplicate{
@@ -190,7 +190,7 @@ abstract @beta Efl.Text.Cursor extends Efl.Object implements Efl.Duplicate{
cur2: Efl.Text.Cursor; [[End of range.]]
}
return: iterator<Eina.Rect> @move; [[
- Iterator on all geoemtries of the given range.]]
+ Iterator on all geometries of the given range.]]
}
range_precise_geometry_get {
diff --git a/src/lib/evas/canvas/evas_device.c b/src/lib/evas/canvas/evas_device.c
index 112132574d..10e98fef44 100644
--- a/src/lib/evas/canvas/evas_device.c
+++ b/src/lib/evas/canvas/evas_device.c
@@ -108,7 +108,9 @@ _del_cb(void *data, const Efl_Event *ev)
}
if (devtype == EFL_INPUT_DEVICE_TYPE_MOUSE)
- _evas_pointer_data_remove(e, ev->object);
+ {
+ _evas_pointer_data_remove(e, ev->object, EINA_TRUE);
+ }
eina_hash_del_by_key(e->locks.masks, &ev->object);
eina_hash_del_by_key(e->modifiers.masks, &ev->object);
efl_event_callback_call(e->evas, EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED,
@@ -363,7 +365,7 @@ evas_device_class_set(Evas_Device *dev, Evas_Device_Class clas)
return;
if (_is_pointer(klass))
- _evas_pointer_data_remove(edata, dev);
+ _evas_pointer_data_remove(edata, dev, EINA_FALSE);
efl_input_device_type_set(dev, clas);
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 86a7881473..95d0f36bd0 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -1480,7 +1480,7 @@ _evas_pointer_data_add(Evas_Public_Data *edata, Evas_Device *pointer)
}
void
-_evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer)
+_evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer, Eina_Bool nofree)
{
Evas_Pointer_Data *pdata;
Evas_Pointer_Seat *pseat;
@@ -1492,16 +1492,16 @@ _evas_pointer_data_remove(Evas_Public_Data *edata, Evas_Device *pointer)
if (pdata->pointer == pointer)
{
pseat->pointers = eina_inlist_remove(pseat->pointers, EINA_INLIST_GET(pdata));
- free(pdata);
+ if (!nofree) free(pdata);
hit = pseat;
break;
}
}
EINA_SAFETY_ON_NULL_RETURN(hit);
if (hit->pointers) return;
- eina_list_free(hit->object.in);
+ hit->object.in = eina_list_free(hit->object.in);
edata->seats = eina_inlist_remove(edata->seats, EINA_INLIST_GET(hit));
- free(hit);
+ if (!nofree) free(hit);
}
Eina_List *
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index e57910f930..51f4ce22bd 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1935,7 +1935,7 @@ void _evas_focus_dispatch_event(Evas_Object_Protected_Data *obj,
Efl_Input_Device *seat, Eina_Bool in);
Evas_Pointer_Data *_evas_pointer_data_by_device_get(Evas_Public_Data *edata, Efl_Input_Device *pointer);
Evas_Pointer_Data *_evas_pointer_data_add(Evas_Public_Data *edata, Efl_Input_Device *pointer);
-void _evas_pointer_data_remove(Evas_Public_Data *edata, Efl_Input_Device *pointer);
+void _evas_pointer_data_remove(Evas_Public_Data *edata, Efl_Input_Device *pointer, Eina_Bool nofree);
Eina_List *_evas_pointer_list_in_rect_get(Evas_Public_Data *edata,
Evas_Object *obj,
Evas_Object_Protected_Data *obj_data,
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index ad922474cd..c14bdbcd33 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -313,7 +313,7 @@ static void
_ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
{
Ecore_Evas_Engine_Wl_Data *wdata;
- int ow, oh, ew, eh;
+ int ow, oh, ew, eh, fw, fh;
int diff = 0;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
@@ -326,6 +326,8 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
ee->req.w = w;
ee->req.h = h;
+ evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
+
/* TODO: wayland client can resize the ecore_evas directly.
* In the future, we will remove ee->req value in wayland backend */
ew = ee->w;
@@ -335,55 +337,52 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
if (wdata->win->xdg_set_min_size && wdata->win->xdg_toplevel && wdata->win->pending.min)
{
- wdata->win->xdg_set_min_size(wdata->win->xdg_toplevel, ee->prop.min.w, ee->prop.min.h);
+ wdata->win->xdg_set_min_size(wdata->win->xdg_toplevel, ee->prop.min.w + fw, ee->prop.min.h + fh);
wdata->win->pending.min = 0;
}
if (wdata->win->xdg_set_max_size && wdata->win->xdg_toplevel && wdata->win->pending.max)
{
- wdata->win->xdg_set_max_size(wdata->win->xdg_toplevel, ee->prop.max.w, ee->prop.max.h);
+ wdata->win->xdg_set_max_size(wdata->win->xdg_toplevel, ee->prop.max.w + fw, ee->prop.max.h + fh);
wdata->win->pending.max = 0;
}
if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel && wdata->win->pending.min)
{
- wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, ee->prop.min.w, ee->prop.min.h);
+ wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, ee->prop.min.w + fw, ee->prop.min.h + fh);
wdata->win->pending.min = 0;
}
if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel && wdata->win->pending.max)
{
- wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, ee->prop.max.w, ee->prop.max.h);
+ wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, ee->prop.max.w + fw, ee->prop.max.h + fh);
wdata->win->pending.max = 0;
}
if (!ee->prop.fullscreen)
{
- int fw = 0, fh = 0;
int maxw = 0, maxh = 0;
int minw = 0, minh = 0;
- evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
-
if (ECORE_EVAS_PORTRAIT(ee))
{
if (ee->prop.min.w > 0)
- minw = (ee->prop.min.w - fw);
+ minw = (ee->prop.min.w);
if (ee->prop.min.h > 0)
- minh = (ee->prop.min.h - fh);
+ minh = (ee->prop.min.h);
if (ee->prop.max.w > 0)
- maxw = (ee->prop.max.w + fw);
+ maxw = (ee->prop.max.w);
if (ee->prop.max.h > 0)
- maxh = (ee->prop.max.h + fh);
+ maxh = (ee->prop.max.h);
}
else
{
if (ee->prop.min.w > 0)
- minw = (ee->prop.min.w - fh);
+ minw = (ee->prop.min.w);
if (ee->prop.min.h > 0)
- minh = (ee->prop.min.h - fw);
+ minh = (ee->prop.min.h);
if (ee->prop.max.w > 0)
- maxw = (ee->prop.max.w + fh);
+ maxw = (ee->prop.max.w);
if (ee->prop.max.h > 0)
- maxh = (ee->prop.max.h + fw);
+ maxh = (ee->prop.max.h);
}
if ((maxw > 0) && (w > maxw))
@@ -401,13 +400,13 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
/* calc new size using base size & step size */
if (ee->prop.step.w > 1)
{
- int bw = ee->prop.base.w ?: minw;
+ int bw = ee->prop.base.w;
w = (bw + (((w - bw) / ee->prop.step.w) * ee->prop.step.w));
}
if (ee->prop.step.h > 1)
{
- int bh = ee->prop.base.h ?: minh;
+ int bh = ee->prop.base.h;
h = (bh + (((h - bh) / ee->prop.step.h) * ee->prop.step.h));
}
@@ -1671,6 +1670,7 @@ _ecore_evas_wl_common_name_class_set(Ecore_Evas *ee, const char *n, const char *
static void
_ecore_evas_wl_common_size_min_set(Ecore_Evas *ee, int w, int h)
{
+ int fw, fh;
Ecore_Evas_Engine_Wl_Data *wdata;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
@@ -1682,14 +1682,15 @@ _ecore_evas_wl_common_size_min_set(Ecore_Evas *ee, int w, int h)
ee->prop.min.w = w;
ee->prop.min.h = h;
wdata = ee->engine.data;
+ evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
if (wdata->win->xdg_set_min_size && wdata->win->xdg_toplevel)
{
- wdata->win->xdg_set_min_size(wdata->win->xdg_toplevel, w, h);
+ wdata->win->xdg_set_min_size(wdata->win->xdg_toplevel, w + fw, h + fh);
wdata->win->pending.min = 0;
}
if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel)
{
- wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, w, h);
+ wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, w + fw, h + fh);
wdata->win->pending.min = 0;
}
else
@@ -1700,6 +1701,7 @@ _ecore_evas_wl_common_size_min_set(Ecore_Evas *ee, int w, int h)
static void
_ecore_evas_wl_common_size_max_set(Ecore_Evas *ee, int w, int h)
{
+ int fw, fh;
Ecore_Evas_Engine_Wl_Data *wdata;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
@@ -1710,14 +1712,15 @@ _ecore_evas_wl_common_size_max_set(Ecore_Evas *ee, int w, int h)
ee->prop.max.w = w;
ee->prop.max.h = h;
wdata = ee->engine.data;
+ evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
if (wdata->win->xdg_set_max_size && wdata->win->xdg_toplevel)
{
- wdata->win->xdg_set_max_size(wdata->win->xdg_toplevel, w, h);
+ wdata->win->xdg_set_max_size(wdata->win->xdg_toplevel, w + fw, h + fh);
wdata->win->pending.max = 0;
}
if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel)
{
- wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, w, h);
+ wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, w + fw, h + fh);
wdata->win->pending.max = 0;
}
else
@@ -2153,31 +2156,30 @@ _ecore_evas_wl_common_show(Ecore_Evas *ee)
{
int fw, fh;
+ evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
if (wdata->win->xdg_set_min_size && wdata->win->xdg_toplevel && wdata->win->pending.min)
{
- wdata->win->xdg_set_min_size(wdata->win->xdg_toplevel, ee->prop.min.w, ee->prop.min.h);
+ wdata->win->xdg_set_min_size(wdata->win->xdg_toplevel, ee->prop.min.w + fw, ee->prop.min.h + fh);
wdata->win->pending.min = 0;
}
if (wdata->win->xdg_set_max_size && wdata->win->xdg_toplevel && wdata->win->pending.max)
{
- wdata->win->xdg_set_max_size(wdata->win->xdg_toplevel, ee->prop.max.w, ee->prop.max.h);
+ wdata->win->xdg_set_max_size(wdata->win->xdg_toplevel, ee->prop.max.w + fw, ee->prop.max.h + fh);
wdata->win->pending.max = 0;
}
if (wdata->win->zxdg_set_min_size && wdata->win->zxdg_toplevel && wdata->win->pending.min)
{
- wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, ee->prop.min.w, ee->prop.min.h);
+ wdata->win->zxdg_set_min_size(wdata->win->zxdg_toplevel, ee->prop.min.w + fw, ee->prop.min.h + fh);
wdata->win->pending.min = 0;
}
if (wdata->win->zxdg_set_max_size && wdata->win->zxdg_toplevel && wdata->win->pending.max)
{
- wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, ee->prop.max.w, ee->prop.max.h);
+ wdata->win->zxdg_set_max_size(wdata->win->zxdg_toplevel, ee->prop.max.w + fw, ee->prop.max.h + fh);
wdata->win->pending.max = 0;
}
_ecore_evas_wayland_window_update(ee, wdata, ee->alpha);
- evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
-
ecore_wl2_window_show(wdata->win);
einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas);
if (einfo)
diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
index 97e5fb2d10..abea314d33 100644
--- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c
+++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c
@@ -1534,6 +1534,8 @@ _ecore_evas_x_shadow_update(Ecore_Evas *ee)
ECORE_X_ATOM_CARDINAL, 32, shadow, 4);
}
+static void _ecore_evas_x_size_pos_hints_update(Ecore_Evas *ee);
+
static Eina_Bool
_ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
@@ -1672,6 +1674,8 @@ _ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSE
}
}
}
+ if (framespace_resized)
+ _ecore_evas_x_size_pos_hints_update(ee);
}
return ECORE_CALLBACK_PASS_ON;
}
@@ -1763,15 +1767,19 @@ _ecore_evas_x_event_window_hide(void *data EINA_UNUSED, int type EINA_UNUSED, vo
static void
_ecore_evas_x_size_pos_hints_update(Ecore_Evas *ee)
{
+ int fw, fh;
+
+ fw = ee->framespace.w;
+ fh = ee->framespace.h;
ecore_x_icccm_size_pos_hints_set(ee->prop.window,
ee->prop.request_pos /*request_pos */,
ECORE_X_GRAVITY_NW /* gravity */,
- ee->prop.min.w /* min_w */,
- ee->prop.min.h /* min_h */,
- ee->prop.max.w /* max_w */,
- ee->prop.max.h /* max_h */,
- ee->prop.base.w /* base_w */,
- ee->prop.base.h /* base_h */,
+ ee->prop.min.w + fw /* min_w */,
+ ee->prop.min.h + fh /* min_h */,
+ ee->prop.max.w + fw /* max_w */,
+ ee->prop.max.h + fh /* max_h */,
+ ee->prop.base.w + fw /* base_w */,
+ ee->prop.base.h + fh /* base_h */,
ee->prop.step.w /* step_x */,
ee->prop.step.h /* step_y */,
ee->prop.aspect /* min_aspect */,
diff --git a/src/tests/elementary/efl_ui_suite.c b/src/tests/elementary/efl_ui_suite.c
index 4eef980f92..b9d8e9bbff 100644
--- a/src/tests/elementary/efl_ui_suite.c
+++ b/src/tests/elementary/efl_ui_suite.c
@@ -49,7 +49,7 @@ static const Efl_Test_Case etc[] = {
{ NULL, NULL }
};
-EFL_CLASS_SIMPLE_CLASS(efl_ui_widget, "efl_ui_widget", EFL_UI_WIDGET_CLASS);
+EFL_CLASS_SIMPLE_CLASS(efl_ui_widget, "Efl.Ui.Widget", EFL_UI_WIDGET_CLASS);
int
main(int argc, char **argv)
diff --git a/src/tests/elementary/efl_ui_test_grid.c b/src/tests/elementary/efl_ui_test_grid.c
index 7ec1763545..db19e58d87 100644
--- a/src/tests/elementary/efl_ui_test_grid.c
+++ b/src/tests/elementary/efl_ui_test_grid.c
@@ -89,16 +89,15 @@ EFL_START_TEST(efl_ui_grid_unpack_all)
ck_assert(grid_item_pack(grid, count_before, NULL) != EINA_FALSE);
- itor = efl_content_iterate(grid);
efl_pack_unpack_all(grid);
count = efl_content_count(grid);
ck_assert(count == 0);
+ itor = efl_content_iterate(grid);
EINA_ITERATOR_FOREACH(itor, item)
- efl_del(item);
-
- free(itor);
+ ck_assert(EINA_FALSE);
+ eina_iterator_free(itor);
}
EFL_END_TEST
diff --git a/src/tests/elementary/efl_ui_test_list_collection.c b/src/tests/elementary/efl_ui_test_list_collection.c
index 1d4f913901..94bafbd010 100644
--- a/src/tests/elementary/efl_ui_test_list_collection.c
+++ b/src/tests/elementary/efl_ui_test_list_collection.c
@@ -161,7 +161,7 @@ EFL_START_TEST(placement_test_group)
r = efl_gfx_entity_geometry_get(core_item[i]);
ck_assert_int_eq(r.x, 1);
- ck_assert_int_eq(r.y, 21+(i - 1)*40);
+ ck_assert_int_eq(r.y, 22+(i - 1)*40);
ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar.
ck_assert_int_eq(r.h, 40);
}
@@ -181,7 +181,7 @@ EFL_START_TEST(placement_test_group)
r = efl_gfx_entity_geometry_get(core_item[i]);
ck_assert_int_eq(r.x, 1);
- ck_assert_int_eq(r.y, 1+(i-2)*40);
+ ck_assert_int_eq(r.y, 2+(i-2)*40);
ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar.
ck_assert_int_eq(r.h, 40);
}
diff --git a/src/tests/elementary/efl_ui_test_scroller.c b/src/tests/elementary/efl_ui_test_scroller.c
index e1aa4ef53b..78f8bfaf7f 100644
--- a/src/tests/elementary/efl_ui_test_scroller.c
+++ b/src/tests/elementary/efl_ui_test_scroller.c
@@ -144,7 +144,58 @@ EFL_START_TEST(efl_ui_test_scroller_events)
}
EFL_END_TEST
+EFL_START_TEST(efl_ui_test_scroller_scrollbar)
+{
+ Eo *sc;
+
+ Eo *win = win_add();
+ Eina_Bool hbar_visible = EINA_FALSE, vbar_visible = EINA_FALSE;
+ efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 500));
+
+ sc = efl_add(EFL_UI_SCROLLER_CLASS, win,
+ efl_ui_scrollbar_bar_mode_set(efl_added, EFL_UI_SCROLLBAR_MODE_AUTO, EFL_UI_SCROLLBAR_MODE_AUTO),
+ efl_content_set(win, efl_added));
+
+ /*Scrollbar auto mode test.*/
+ efl_loop_iterate(efl_main_loop_get());
+
+ efl_ui_scrollbar_bar_visibility_get(sc, &hbar_visible, &vbar_visible);
+ ck_assert(hbar_visible == EINA_FALSE);
+ ck_assert(vbar_visible == EINA_FALSE);
+
+ /*Scrollbar auto mode test.*/
+ efl_add(EFL_CANVAS_RECTANGLE_CLASS, evas_object_evas_get(sc),
+ efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(5000, 5000)),
+ efl_content_set(sc, efl_added));
+
+ efl_loop_iterate(efl_main_loop_get());
+
+ efl_ui_scrollbar_bar_visibility_get(sc, &hbar_visible, &vbar_visible);
+ ck_assert(hbar_visible == EINA_TRUE);
+ ck_assert(vbar_visible == EINA_TRUE);
+
+ /*Scrollbar off mode test.*/
+ efl_ui_scrollbar_bar_mode_set(sc, EFL_UI_SCROLLBAR_MODE_OFF, EFL_UI_SCROLLBAR_MODE_OFF);
+
+ efl_loop_iterate(efl_main_loop_get());
+
+ efl_ui_scrollbar_bar_visibility_get(sc, &hbar_visible, &vbar_visible);
+ ck_assert(hbar_visible == EINA_FALSE);
+ ck_assert(vbar_visible == EINA_FALSE);
+
+ /*Scrollbar on mode test.*/
+ efl_ui_scrollbar_bar_mode_set(sc, EFL_UI_SCROLLBAR_MODE_ON, EFL_UI_SCROLLBAR_MODE_ON);
+
+ efl_loop_iterate(efl_main_loop_get());
+
+ efl_ui_scrollbar_bar_visibility_get(sc, &hbar_visible, &vbar_visible);
+ ck_assert(hbar_visible == EINA_TRUE);
+ ck_assert(vbar_visible == EINA_TRUE);
+}
+EFL_END_TEST
+
void efl_ui_test_scroller(TCase *tc)
{
tcase_add_test(tc, efl_ui_test_scroller_events);
+ tcase_add_test(tc, efl_ui_test_scroller_scrollbar);
}
diff --git a/src/tests/elementary/efl_ui_test_spotlight.c b/src/tests/elementary/efl_ui_test_spotlight.c
index 9d5f433e44..f4e39ffdf0 100644
--- a/src/tests/elementary/efl_ui_test_spotlight.c
+++ b/src/tests/elementary/efl_ui_test_spotlight.c
@@ -6,8 +6,8 @@
#include "efl_ui_suite.h"
#include "eo_internal.h"
-EFL_CLASS_SIMPLE_CLASS(efl_ui_spotlight_manager, "efl_ui_spotlight_manager", EFL_UI_SPOTLIGHT_MANAGER_CLASS);
-EFL_CLASS_SIMPLE_CLASS(efl_ui_spotlight_indicator, "efl_ui_spotlight_indicator", EFL_UI_SPOTLIGHT_INDICATOR_CLASS);
+EFL_CLASS_SIMPLE_CLASS(efl_ui_spotlight_manager, "Efl.Ui.Spotlight.Manager", EFL_UI_SPOTLIGHT_MANAGER_CLASS);
+EFL_CLASS_SIMPLE_CLASS(efl_ui_spotlight_indicator, "Efl.Ui.Spotlight.Indicator", EFL_UI_SPOTLIGHT_INDICATOR_CLASS);
static Efl_Ui_Win *win;
static Efl_Ui_Spotlight_Container *container;
diff --git a/src/tests/elementary/spec/efl_test_basics.c b/src/tests/elementary/spec/efl_test_basics.c
index 81f134af33..2774b2ae8f 100644
--- a/src/tests/elementary/spec/efl_test_basics.c
+++ b/src/tests/elementary/spec/efl_test_basics.c
@@ -49,7 +49,8 @@
"Efl.Ui.Table",
"Efl.Ui.Flip",
"Efl.Ui.Stack",
- "Efl.Ui.Pager"
+ "Efl.Ui.Pager",
+ "Efl.Ui.Separator"
],
"custom-mapping" : {
"Efl.Ui.Grid" : "EFL_UI_GRID_DEFAULT_ITEM_CLASS",
diff --git a/src/tests/elementary/spec/efl_ui_spec_suite.c b/src/tests/elementary/spec/efl_ui_spec_suite.c
index d59072b51e..49ca5a993f 100644
--- a/src/tests/elementary/spec/efl_ui_spec_suite.c
+++ b/src/tests/elementary/spec/efl_ui_spec_suite.c
@@ -13,8 +13,8 @@ Evas_Object *widget = NULL;
Eo *collection_grid = NULL;
const Efl_Class *test_content_klass = NULL;
const Efl_Class *widget_klass = NULL;
-EFL_CLASS_SIMPLE_CLASS(efl_ui_widget, "efl_ui_widget", EFL_UI_WIDGET_CLASS);
-EFL_CLASS_SIMPLE_CLASS(efl_ui_item, "efl_ui_item", EFL_UI_ITEM_CLASS);
+EFL_CLASS_SIMPLE_CLASS(efl_ui_widget, "Efl.Ui.Widget", EFL_UI_WIDGET_CLASS);
+EFL_CLASS_SIMPLE_CLASS(efl_ui_item, "Efl.Ui.Item", EFL_UI_ITEM_CLASS);
#define EFL_UI_ITEM_REALIZED_CLASS efl_ui_item_realized_class_get()
diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c
index 8560e36e7c..1fee7eb5b1 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -4536,10 +4536,10 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
ck_assert_int_eq(changed_emit, 6);
efl_text_set(txt, "");
- ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
- ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
- ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREV));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
@@ -4547,7 +4547,7 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
- ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREV));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREVIOUS));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST));
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
@@ -4555,13 +4555,13 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
ck_assert_int_eq(changed_emit, 7);
efl_text_markup_set(txt, "Hello World<ps/>This is EFL<br/>Enlightenment");
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREV));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREVIOUS));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
efl_text_cursor_position_set(cur_obj, 0);
@@ -4575,11 +4575,11 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 10);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT));
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
ck_assert_int_ne(efl_text_cursor_position_get(cur_obj), 10);
@@ -4591,7 +4591,7 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 12);
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 12);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS));
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
@@ -4604,11 +4604,11 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 3);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_PREVIOUS));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5);
- ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHARACTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 6);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 7);