efl_canvas_object: remove event_freeze
this is now done via Efl.Object.event_freeze / Efl.Object.event_thaw. ref T7555 Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Differential Revision: https://phab.enlightenment.org/D8011
This commit is contained in:
parent
a25444f0d5
commit
ddb3bd7d21
|
@ -102,7 +102,7 @@ _content_data_del(Content_Data *cd)
|
||||||
static void
|
static void
|
||||||
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
_anim_started_cb(void *data EINA_UNUSED, const Efl_Event *event)
|
||||||
{
|
{
|
||||||
efl_canvas_object_freeze_events_set(efl_animation_player_target_get(event->object), EINA_TRUE);
|
efl_event_freeze(efl_animation_player_target_get(event->object));
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Object*
|
static Evas_Object*
|
||||||
|
@ -110,7 +110,7 @@ _end_anim(Transit_Data *td)
|
||||||
{
|
{
|
||||||
Efl_Canvas_Object *content = td->cd->content;
|
Efl_Canvas_Object *content = td->cd->content;
|
||||||
|
|
||||||
efl_canvas_object_freeze_events_set(content, td->freeze_events);
|
efl_event_thaw(content);
|
||||||
td->cd->on_pushing = EINA_FALSE;
|
td->cd->on_pushing = EINA_FALSE;
|
||||||
td->cd->on_popping = EINA_FALSE;
|
td->cd->on_popping = EINA_FALSE;
|
||||||
free(td);
|
free(td);
|
||||||
|
@ -159,8 +159,6 @@ _show_content_with_anim(Efl_Ui_Stack *obj, Efl_Ui_Stack_Data *pd, Content_Data *
|
||||||
|
|
||||||
Transit_Data *td = calloc(1, sizeof(Transit_Data));
|
Transit_Data *td = calloc(1, sizeof(Transit_Data));
|
||||||
td->cd = cd;
|
td->cd = cd;
|
||||||
td->freeze_events =
|
|
||||||
efl_canvas_object_freeze_events_get(cd->content);
|
|
||||||
pd->show_td = td;
|
pd->show_td = td;
|
||||||
|
|
||||||
/* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set()
|
/* efl_ui_widget_resize_object_set() calls efl_gfx_entity_visible_set()
|
||||||
|
@ -184,7 +182,6 @@ _hide_content_with_anim(Efl_Ui_Stack *obj EINA_UNUSED, Efl_Ui_Stack_Data *pd, Co
|
||||||
|
|
||||||
Transit_Data *td = calloc(1, sizeof(Transit_Data));
|
Transit_Data *td = calloc(1, sizeof(Transit_Data));
|
||||||
td->cd = cd;
|
td->cd = cd;
|
||||||
td->freeze_events = efl_canvas_object_freeze_events_get(cd->content);
|
|
||||||
pd->hide_td = td;
|
pd->hide_td = td;
|
||||||
|
|
||||||
efl_player_start(pd->hide);
|
efl_player_start(pd->hide);
|
||||||
|
|
|
@ -17,7 +17,6 @@ typedef struct _Transit_Data Transit_Data;
|
||||||
struct _Transit_Data
|
struct _Transit_Data
|
||||||
{
|
{
|
||||||
Content_Data *cd;
|
Content_Data *cd;
|
||||||
Eina_Bool freeze_events;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _Efl_Ui_Stack_Data Efl_Ui_Stack_Data;
|
typedef struct _Efl_Ui_Stack_Data Efl_Ui_Stack_Data;
|
||||||
|
|
|
@ -8121,6 +8121,42 @@ EAPI void evas_object_is_frame_object_set(Efl_Canvas_Object *obj, Eina_Bool is_f
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool evas_object_is_frame_object_get(const Efl_Canvas_Object *obj);
|
EAPI Eina_Bool evas_object_is_frame_object_get(const Efl_Canvas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set whether an Evas object is to freeze (discard) events.
|
||||||
|
*
|
||||||
|
* If @c freeze is @c true, it will force events on @c obj to be discarded.
|
||||||
|
* Unlike @ref evas_object_pass_events_set, events will not be passed to next
|
||||||
|
* lower object. This API can be used for blocking events while @c obj is in
|
||||||
|
* transition.
|
||||||
|
*
|
||||||
|
* If @c freeze is @c false, events will be processed on that object as normal.
|
||||||
|
*
|
||||||
|
* @warning If you block only key/mouse up events with this API, you can't be
|
||||||
|
* sure of the state of any objects that have only key/mouse down events.
|
||||||
|
*
|
||||||
|
* @param[in] obj The object.
|
||||||
|
* @param[in] freeze Pass when @c obj is to freeze events ($true) or not
|
||||||
|
* ($false).
|
||||||
|
*
|
||||||
|
* @since 1.1
|
||||||
|
*
|
||||||
|
* @ingroup Evas_Object_Group
|
||||||
|
*/
|
||||||
|
EAPI void evas_object_freeze_events_set(Efl_Canvas_Object *obj, Eina_Bool freeze);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Determine whether an object is set to freeze (discard) events.
|
||||||
|
*
|
||||||
|
* @param[in] obj The object.
|
||||||
|
*
|
||||||
|
* @return Pass when @c obj is to freeze events ($true) or not ($false).
|
||||||
|
*
|
||||||
|
* @since 1.1
|
||||||
|
*
|
||||||
|
* @ingroup Evas_Object_Group
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool evas_object_freeze_events_get(const Efl_Canvas_Object *obj);
|
||||||
|
|
||||||
#include "canvas/efl_canvas_event_grabber.eo.legacy.h"
|
#include "canvas/efl_canvas_event_grabber.eo.legacy.h"
|
||||||
|
|
||||||
#include "canvas/efl_canvas_animation_alpha.eo.legacy.h"
|
#include "canvas/efl_canvas_animation_alpha.eo.legacy.h"
|
||||||
|
|
|
@ -86,36 +86,6 @@ abstract @beta Efl.Canvas.Object extends Efl.Loop_Consumer implements Efl.Gfx.En
|
||||||
render_op: Efl.Gfx.Render_Op; [[Blend or copy.]]
|
render_op: Efl.Gfx.Render_Op; [[Blend or copy.]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@property freeze_events {
|
|
||||||
set {
|
|
||||||
[[Set whether an Evas object is to freeze (discard) events.
|
|
||||||
|
|
||||||
If $freeze is $true, it will force events on $obj to be
|
|
||||||
discarded. Unlike @.pass_events.set, events will not be
|
|
||||||
passed to next lower object. This API can be used for
|
|
||||||
blocking events while $obj is in transition.
|
|
||||||
|
|
||||||
If $freeze is $false, events will be processed on that
|
|
||||||
object as normal.
|
|
||||||
|
|
||||||
Warning: If you block only key/mouse up events with this API,
|
|
||||||
you can't be sure of the state of any objects that have only
|
|
||||||
key/mouse down events.
|
|
||||||
|
|
||||||
@since 1.1
|
|
||||||
]]
|
|
||||||
}
|
|
||||||
get {
|
|
||||||
[[Determine whether an object is set to freeze (discard) events.
|
|
||||||
|
|
||||||
@since 1.1
|
|
||||||
]]
|
|
||||||
}
|
|
||||||
values {
|
|
||||||
freeze: bool; [[Pass when $obj is to freeze events ($true)
|
|
||||||
or not ($false).]]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@property clip {
|
@property clip {
|
||||||
set {
|
set {
|
||||||
[[Clip one object to another.
|
[[Clip one object to another.
|
||||||
|
@ -315,15 +285,13 @@ abstract @beta Efl.Canvas.Object extends Efl.Loop_Consumer implements Efl.Gfx.En
|
||||||
be propagated on to the smart object of which $obj is a
|
be propagated on to the smart object of which $obj is a
|
||||||
member. The default value is $true.
|
member. The default value is $true.
|
||||||
|
|
||||||
See also @.repeat_events.set, @.pass_events.set,
|
See also @.repeat_events.set, @.pass_events.set.
|
||||||
@.freeze_events.set.
|
|
||||||
]]
|
]]
|
||||||
}
|
}
|
||||||
get {
|
get {
|
||||||
[[Retrieve whether an Evas object is set to propagate events.
|
[[Retrieve whether an Evas object is set to propagate events.
|
||||||
|
|
||||||
See also @.repeat_events.get, @.pass_events.get,
|
See also @.repeat_events.get, @.pass_events.get.
|
||||||
@.freeze_events.get.
|
|
||||||
]]
|
]]
|
||||||
}
|
}
|
||||||
values {
|
values {
|
||||||
|
@ -342,15 +310,13 @@ abstract @beta Efl.Canvas.Object extends Efl.Loop_Consumer implements Efl.Gfx.En
|
||||||
If $pass is $false events will be processed on that object
|
If $pass is $false events will be processed on that object
|
||||||
as normal.
|
as normal.
|
||||||
|
|
||||||
See also @.repeat_events.set, @.propagate_events.set,
|
See also @.repeat_events.set, @.propagate_events.set
|
||||||
@.freeze_events.set.
|
|
||||||
]]
|
]]
|
||||||
}
|
}
|
||||||
get {
|
get {
|
||||||
[[Determine whether an object is set to pass (ignore) events.
|
[[Determine whether an object is set to pass (ignore) events.
|
||||||
|
|
||||||
See also @.repeat_events.get, @.propagate_events.get,
|
See also @.repeat_events.get, @.propagate_events.get.
|
||||||
@.freeze_events.get.
|
|
||||||
]]
|
]]
|
||||||
/* FIXME-doc
|
/* FIXME-doc
|
||||||
Example:
|
Example:
|
||||||
|
@ -561,6 +527,8 @@ abstract @beta Efl.Canvas.Object extends Efl.Loop_Consumer implements Efl.Gfx.En
|
||||||
Efl.Object.invalidate;
|
Efl.Object.invalidate;
|
||||||
Efl.Object.destructor;
|
Efl.Object.destructor;
|
||||||
Efl.Object.provider_find;
|
Efl.Object.provider_find;
|
||||||
|
Efl.Object.event_freeze;
|
||||||
|
Efl.Object.event_thaw;
|
||||||
Efl.Object.debug_name_override;
|
Efl.Object.debug_name_override;
|
||||||
Efl.Gfx.Entity.visible { get; set; }
|
Efl.Gfx.Entity.visible { get; set; }
|
||||||
Efl.Gfx.Color.color { get; set; }
|
Efl.Gfx.Color.color { get; set; }
|
||||||
|
|
|
@ -3715,23 +3715,47 @@ _feed_mouse_move_eval_internal(Eo *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
evas->last_timestamp, NULL);
|
evas->last_timestamp, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN void
|
EOLIAN void
|
||||||
_efl_canvas_object_freeze_events_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool freeze)
|
_efl_canvas_object_efl_object_event_freeze(Eo *obj, Evas_Object_Protected_Data *pd)
|
||||||
{
|
{
|
||||||
freeze = !!freeze;
|
efl_event_freeze(efl_super(obj, EFL_CANVAS_OBJECT_CLASS));
|
||||||
if (obj->freeze_events == freeze) return;
|
if (efl_event_freeze_count_get(obj) == 1)
|
||||||
obj->freeze_events = freeze;
|
{
|
||||||
evas_object_smart_member_cache_invalidate(eo_obj, EINA_FALSE, EINA_TRUE,
|
pd->freeze_events = EINA_TRUE;
|
||||||
EINA_FALSE);
|
evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE,
|
||||||
if (obj->freeze_events) return;
|
EINA_FALSE);
|
||||||
_feed_mouse_move_eval_internal(eo_obj, obj);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN Eina_Bool
|
EOLIAN void
|
||||||
_efl_canvas_object_freeze_events_get(const Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
|
_efl_canvas_object_efl_object_event_thaw(Eo *obj, Evas_Object_Protected_Data *pd)
|
||||||
{
|
{
|
||||||
return obj->freeze_events;
|
if (efl_event_freeze_count_get(obj) == 1)
|
||||||
|
{
|
||||||
|
pd->freeze_events = EINA_FALSE;
|
||||||
|
evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE,
|
||||||
|
EINA_FALSE);
|
||||||
|
_feed_mouse_move_eval_internal(obj, pd);
|
||||||
|
}
|
||||||
|
efl_event_thaw(efl_super(obj, EFL_CANVAS_OBJECT_CLASS));
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
evas_object_freeze_events_set(Eo *eo_obj, Eina_Bool freeze)
|
||||||
|
{
|
||||||
|
if (freeze)
|
||||||
|
efl_event_freeze(eo_obj);
|
||||||
|
else
|
||||||
|
// The following check is needed, as eo does not accept more thaw calls than freeze calls.
|
||||||
|
// However, evas legacy stuff accepted multiple flase sets
|
||||||
|
if (efl_event_freeze_count_get(eo_obj) > 0)
|
||||||
|
efl_event_thaw(eo_obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
evas_object_freeze_events_get(const Eo *eo_obj EINA_UNUSED)
|
||||||
|
{
|
||||||
|
return (efl_event_freeze_count_get(eo_obj) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN void
|
EOLIAN void
|
||||||
|
|
Loading…
Reference in New Issue