forked from enlightenment/efl
Merge branch 'master' into devs/hermet/lottie
This commit is contained in:
commit
fe4247ee13
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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'
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -2187,6 +2187,13 @@ _efl_ui_scrollbar_v_visibility_adjust(Eo *obj)
|
|||
if (scroll_v_vis_change) _efl_ui_scroll_manager_scrollbar_v_visibility_apply(sd);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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"
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue