eina_list_free(pd->current_border);
pd->current_border = selection;
+ pd->self_dirty = EINA_FALSE;
}
static void
{
MY_DATA(data, pd);
- //if (!pd->self_dirty) return; //we are not interested
+ if (!pd->self_dirty) return; //we are not interested
_border_flush(data, pd);
}
//if (efl_ui_focus_manager_redirect_get(ev->object) != data) return;
MY_DATA(data, pd);
+
_border_flush(data, pd);
}
+static void
+_freeze_changed_cb(void *data, const Efl_Event *ev EINA_UNUSED)
+{
+ if (ev->info)
+ {
+ efl_ui_focus_manager_dirty_logic_freeze(data);
+ }
+ else
+ {
+ efl_ui_focus_manager_dirty_logic_unfreeze(data);
+ }
+}
+
EFL_CALLBACKS_ARRAY_DEFINE(parent_manager,
{EFL_UI_FOCUS_MANAGER_EVENT_FLUSH_PRE, _parent_manager_pre_flush},
- {EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, _redirect_changed_cb}
+ {EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, _redirect_changed_cb},
+ {EFL_UI_FOCUS_MANAGER_EVENT_DIRTY_LOGIC_FREEZE_CHANGED, _freeze_changed_cb}
);
static void
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_event_callback_array_add(obj, self_manager(), obj);
+
+ pd->self_dirty = EINA_TRUE;
+
return obj;
}
Efl_Ui_Focus_Manager_Calc *subm = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, focus_main,
efl_ui_focus_manager_root_set(efl_added, root)
);
+ efl_event_callback_forwarder_add(subm, EFL_UI_FOCUS_MANAGER_EVENT_FLUSH_PRE, focus_main);
+ efl_event_callback_forwarder_add(subm, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, focus_main);
+ efl_event_callback_forwarder_add(subm, EFL_UI_FOCUS_MANAGER_EVENT_FOCUS_CHANGED , focus_main);
+ efl_event_callback_forwarder_add(subm, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, focus_main);
+ efl_event_callback_forwarder_add(subm, EFL_UI_FOCUS_MANAGER_EVENT_DIRTY_LOGIC_FREEZE_CHANGED, focus_main);
+
efl_composite_attach(focus_main, subm);