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
|
||||
_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*
|
||||
|
@ -110,7 +110,7 @@ _end_anim(Transit_Data *td)
|
|||
{
|
||||
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_popping = EINA_FALSE;
|
||||
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));
|
||||
td->cd = cd;
|
||||
td->freeze_events =
|
||||
efl_canvas_object_freeze_events_get(cd->content);
|
||||
pd->show_td = td;
|
||||
|
||||
/* 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));
|
||||
td->cd = cd;
|
||||
td->freeze_events = efl_canvas_object_freeze_events_get(cd->content);
|
||||
pd->hide_td = td;
|
||||
|
||||
efl_player_start(pd->hide);
|
||||
|
|
|
@ -17,7 +17,6 @@ typedef struct _Transit_Data Transit_Data;
|
|||
struct _Transit_Data
|
||||
{
|
||||
Content_Data *cd;
|
||||
Eina_Bool freeze_events;
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
/**
|
||||
* @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_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.]]
|
||||
}
|
||||
}
|
||||
@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 {
|
||||
set {
|
||||
[[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
|
||||
member. The default value is $true.
|
||||
|
||||
See also @.repeat_events.set, @.pass_events.set,
|
||||
@.freeze_events.set.
|
||||
See also @.repeat_events.set, @.pass_events.set.
|
||||
]]
|
||||
}
|
||||
get {
|
||||
[[Retrieve whether an Evas object is set to propagate events.
|
||||
|
||||
See also @.repeat_events.get, @.pass_events.get,
|
||||
@.freeze_events.get.
|
||||
See also @.repeat_events.get, @.pass_events.get.
|
||||
]]
|
||||
}
|
||||
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
|
||||
as normal.
|
||||
|
||||
See also @.repeat_events.set, @.propagate_events.set,
|
||||
@.freeze_events.set.
|
||||
See also @.repeat_events.set, @.propagate_events.set
|
||||
]]
|
||||
}
|
||||
get {
|
||||
[[Determine whether an object is set to pass (ignore) events.
|
||||
|
||||
See also @.repeat_events.get, @.propagate_events.get,
|
||||
@.freeze_events.get.
|
||||
See also @.repeat_events.get, @.propagate_events.get.
|
||||
]]
|
||||
/* FIXME-doc
|
||||
Example:
|
||||
|
@ -561,6 +527,8 @@ abstract @beta Efl.Canvas.Object extends Efl.Loop_Consumer implements Efl.Gfx.En
|
|||
Efl.Object.invalidate;
|
||||
Efl.Object.destructor;
|
||||
Efl.Object.provider_find;
|
||||
Efl.Object.event_freeze;
|
||||
Efl.Object.event_thaw;
|
||||
Efl.Object.debug_name_override;
|
||||
Efl.Gfx.Entity.visible { 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);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
if (obj->freeze_events == freeze) return;
|
||||
obj->freeze_events = freeze;
|
||||
evas_object_smart_member_cache_invalidate(eo_obj, EINA_FALSE, EINA_TRUE,
|
||||
EINA_FALSE);
|
||||
if (obj->freeze_events) return;
|
||||
_feed_mouse_move_eval_internal(eo_obj, obj);
|
||||
efl_event_freeze(efl_super(obj, EFL_CANVAS_OBJECT_CLASS));
|
||||
if (efl_event_freeze_count_get(obj) == 1)
|
||||
{
|
||||
pd->freeze_events = EINA_TRUE;
|
||||
evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE,
|
||||
EINA_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
EOLIAN Eina_Bool
|
||||
_efl_canvas_object_freeze_events_get(const Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
|
||||
EOLIAN void
|
||||
_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
|
||||
|
|
Loading…
Reference in New Issue