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
devs/derekf/for_derbyw
Mike Blumenkrantz 6 years ago
parent fe95a5841f
commit 7a3876ffc9
  1. 6
      src/bin/e_comp_canvas.c
  2. 12
      src/bin/e_zone.c
  3. 1
      src/bin/e_zone.h
  4. 2
      src/modules/fileman/e_fwin.c
  5. 3
      src/modules/gadman/e_mod_gadman.c

@ -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;
}

@ -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;
}

@ -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;

@ -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,

@ -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)

Loading…
Cancel
Save