add and use new event for zone useful geometry changing

many times it's useful to have an event for actual zone geometry change
vs useful geomtry change, so split this out and use the right handler where appropriate
This commit is contained in:
Mike Blumenkrantz 2017-08-04 16:23:38 -04:00
parent fe95a5841f
commit 7a3876ffc9
5 changed files with 12 additions and 12 deletions

View File

@ -240,12 +240,8 @@ _e_comp_cb_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_
////////////////////////////////////
static Eina_Bool
_e_comp_cb_zone_change(void *d EINA_UNUSED, int t, E_Event_Zone_Move_Resize *ev)
_e_comp_cb_zone_change()
{
if (ev->zone->useful_geometry_dirty && (t == E_EVENT_ZONE_MOVE_RESIZE))
{
if (!e_zone_useful_geometry_get(ev->zone, NULL, NULL, NULL, NULL)) return ECORE_CALLBACK_RENEW;
}
e_comp_canvas_update();
return ECORE_CALLBACK_PASS_ON;
}

View File

@ -22,6 +22,7 @@ static void _e_zone_obstacle_free(E_Zone_Obstacle *obs);
E_API int E_EVENT_ZONE_DESK_COUNT_SET = 0;
E_API int E_EVENT_POINTER_WARP = 0;
E_API int E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED = 0;
E_API int E_EVENT_ZONE_MOVE_RESIZE = 0;
E_API int E_EVENT_ZONE_ADD = 0;
E_API int E_EVENT_ZONE_DEL = 0;
@ -44,6 +45,7 @@ e_zone_init(void)
E_EVENT_ZONE_DESK_COUNT_SET = ecore_event_type_new();
E_EVENT_POINTER_WARP = ecore_event_type_new();
E_EVENT_ZONE_MOVE_RESIZE = ecore_event_type_new();
E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED = ecore_event_type_new();
E_EVENT_ZONE_ADD = ecore_event_type_new();
E_EVENT_ZONE_DEL = ecore_event_type_new();
E_EVENT_ZONE_EDGE_IN = ecore_event_type_new();
@ -274,7 +276,7 @@ e_zone_name_set(E_Zone *zone,
}
static void
e_zone_reconfigure_clients(E_Zone *zone, int dx, int dy, int dw, int dh)
e_zone_reconfigure_clients(E_Zone *zone, int dx, int dy)
{
E_Client *ec;
@ -314,7 +316,7 @@ e_zone_move(E_Zone *zone,
_e_zone_edge_move_resize(zone);
e_zone_bg_reconfigure(zone);
e_zone_reconfigure_clients(zone, dx, dy, 0, 0);
e_zone_reconfigure_clients(zone, dx, dy);
}
E_API void
@ -343,7 +345,7 @@ e_zone_resize(E_Zone *zone,
_e_zone_edge_move_resize(zone);
e_zone_bg_reconfigure(zone);
e_zone_reconfigure_clients(zone, 0, 0, dw, dh);
e_zone_reconfigure_clients(zone, 0, 0);
}
E_API Eina_Bool
@ -384,7 +386,7 @@ e_zone_move_resize(E_Zone *zone,
_e_zone_edge_move_resize(zone);
e_zone_bg_reconfigure(zone);
e_zone_reconfigure_clients(zone, dx, dy, dw, dh);
e_zone_reconfigure_clients(zone, dx, dy);
return EINA_TRUE;
}
@ -1335,7 +1337,7 @@ e_zone_useful_geometry_dirty(E_Zone *zone)
ev = E_NEW(E_Event_Zone_Move_Resize, 1);
ev->zone = zone;
e_object_ref(E_OBJECT(ev->zone));
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_generic_free, NULL);
ecore_event_add(E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED, ev, _e_zone_event_generic_free, NULL);
zone->useful_geometry_dirty = 1;
}

View File

@ -172,6 +172,7 @@ E_API E_Zone *e_zone_for_id_get(const char *id);
extern E_API int E_EVENT_ZONE_DESK_COUNT_SET;
extern E_API int E_EVENT_ZONE_MOVE_RESIZE;
extern E_API int E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED;
extern E_API int E_EVENT_ZONE_ADD;
extern E_API int E_EVENT_ZONE_DEL;
extern E_API int E_EVENT_POINTER_WARP;

View File

@ -436,7 +436,7 @@ e_fwin_zone_new(E_Zone *zone, void *p)
/* Add Event Handler for zone move/resize & del */
fwin->zone_handler =
ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE,
ecore_event_handler_add(E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED,
_e_fwin_zone_move_resize, fwin);
fwin->zone_del_handler =
ecore_event_handler_add(E_EVENT_ZONE_DEL,

View File

@ -1585,6 +1585,7 @@ _e_gadman_handlers_add(void)
{
E_LIST_HANDLER_APPEND(_gadman_hdls, E_EVENT_ZONE_ADD, _e_gadman_cb_zone_change, NULL);
E_LIST_HANDLER_APPEND(_gadman_hdls, E_EVENT_ZONE_MOVE_RESIZE, _e_gadman_cb_zone_change, NULL);
E_LIST_HANDLER_APPEND(_gadman_hdls, E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED, _e_gadman_cb_zone_change, NULL);
E_LIST_HANDLER_APPEND(_gadman_hdls, E_EVENT_ZONE_DEL, _e_gadman_cb_zone_change, NULL);
E_LIST_HANDLER_APPEND(_gadman_hdls, E_EVENT_MODULE_UPDATE, _gadman_module_cb, NULL);
E_LIST_HANDLER_APPEND(_gadman_hdls, E_EVENT_MODULE_INIT_END, _gadman_module_init_end_cb, NULL);
@ -1637,7 +1638,7 @@ _e_gadman_cb_zone_change(void *data EINA_UNUSED, int type, void *event)
if (!Man) return ECORE_CALLBACK_RENEW;
if (gadman_locked) return ECORE_CALLBACK_RENEW;
if (type == E_EVENT_ZONE_MOVE_RESIZE)
if ((type == E_EVENT_ZONE_MOVE_RESIZE) || (type == E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED))
{
/* probably zone dirty being set */
EINA_LIST_FOREACH(Man->gadcons[GADMAN_LAYER_BG], l, gc)