clouseau-focus: better displaying of the appearing focus managers
now with name and pointer
This commit is contained in:
parent
a5b70e6903
commit
1060bd4b23
|
@ -121,6 +121,14 @@ typedef struct {
|
||||||
Evas_Object *vis;
|
Evas_Object *vis;
|
||||||
} Clouseau_Focus_Relation;
|
} Clouseau_Focus_Relation;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uintptr_t ptr;
|
||||||
|
const char *helper_name;
|
||||||
|
} Clouseau_Focus_List_Item;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Eina_List *managers;
|
||||||
|
} Clouseau_Focus_Managers;
|
||||||
|
|
||||||
EAPI void *eo_debug_eoids_request_prepare(int *size, ...);
|
EAPI void *eo_debug_eoids_request_prepare(int *size, ...);
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ static int _focus_manager_detail_op = EINA_DEBUG_OPCODE_INVALID;
|
||||||
|
|
||||||
static Eolian_State *eos = NULL;
|
static Eolian_State *eos = NULL;
|
||||||
|
|
||||||
static Eet_Data_Descriptor *manager_details = NULL;
|
static Eet_Data_Descriptor *manager_details = NULL, *manager_list = NULL;
|
||||||
#include "clouseau_focus_serialization.x"
|
#include "clouseau_focus_serialization.x"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -1000,19 +1000,31 @@ static void
|
||||||
_main_loop_focus_manager_list_cb(Eina_Debug_Session *session, int srcid, void *buffer EINA_UNUSED, int size EINA_UNUSED)
|
_main_loop_focus_manager_list_cb(Eina_Debug_Session *session, int srcid, void *buffer EINA_UNUSED, int size EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Eina_Iterator *obj_iterator, *manager_iterator;
|
Eina_Iterator *obj_iterator, *manager_iterator;
|
||||||
Eina_Array *array;
|
Clouseau_Focus_Managers *managers;
|
||||||
Eo *obj;
|
Eo *obj;
|
||||||
|
|
||||||
array = eina_array_new(10);
|
if (!manager_list) _init_data_descriptors();
|
||||||
|
|
||||||
|
managers = alloca(sizeof(Clouseau_Focus_Managers));
|
||||||
|
managers->managers = NULL;
|
||||||
obj_iterator = eo_objects_iterator_new();
|
obj_iterator = eo_objects_iterator_new();
|
||||||
manager_iterator = eina_iterator_filter_new(obj_iterator, _only_manager, NULL, NULL);
|
manager_iterator = eina_iterator_filter_new(obj_iterator, _only_manager, NULL, NULL);
|
||||||
|
|
||||||
EINA_ITERATOR_FOREACH(manager_iterator, obj)
|
EINA_ITERATOR_FOREACH(manager_iterator, obj)
|
||||||
{
|
{
|
||||||
eina_array_push(array, obj);
|
Clouseau_Focus_List_Item *item = alloca(sizeof(Clouseau_Focus_List_Item));
|
||||||
|
|
||||||
|
item->ptr = (uintptr_t)(void*)obj;
|
||||||
|
item->helper_name = efl_class_name_get(efl_ui_focus_manager_root_get(obj));
|
||||||
|
|
||||||
|
managers->managers = eina_list_append(managers->managers, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
eina_debug_session_send(session, srcid, _focus_manager_list_op, array->data, array->count * sizeof(void*));
|
int blob_size;
|
||||||
|
void *blob = eet_data_descriptor_encode(manager_list, managers, &blob_size);
|
||||||
|
eina_debug_session_send(session, srcid, _focus_manager_list_op, blob, blob_size);
|
||||||
|
|
||||||
|
managers->managers = eina_list_free(managers->managers);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRAPPER_TO_XFER_MAIN_LOOP(_focus_manager_list_cb)
|
WRAPPER_TO_XFER_MAIN_LOOP(_focus_manager_list_cb)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_init_data_descriptors(void)
|
_init_manager_details_descriptors(void)
|
||||||
{
|
{
|
||||||
Eet_Data_Descriptor_Class klass;
|
Eet_Data_Descriptor_Class klass;
|
||||||
Eet_Data_Descriptor *relations_eed;
|
Eet_Data_Descriptor *relations_eed;
|
||||||
|
@ -35,4 +35,35 @@ _init_data_descriptors(void)
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC(manager_details, Clouseau_Focus_Manager_Data, "focused", focused, EET_T_UINT);
|
EET_DATA_DESCRIPTOR_ADD_BASIC(manager_details, Clouseau_Focus_Manager_Data, "focused", focused, EET_T_UINT);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC(manager_details, Clouseau_Focus_Manager_Data, "class_name", class_name, EET_T_STRING);
|
EET_DATA_DESCRIPTOR_ADD_BASIC(manager_details, Clouseau_Focus_Manager_Data, "class_name", class_name, EET_T_STRING);
|
||||||
EET_DATA_DESCRIPTOR_ADD_LIST(manager_details, Clouseau_Focus_Manager_Data, "relations", relations, relations_eed);
|
EET_DATA_DESCRIPTOR_ADD_LIST(manager_details, Clouseau_Focus_Manager_Data, "relations", relations, relations_eed);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_init_manager_list_descriptors(void)
|
||||||
|
{
|
||||||
|
Eet_Data_Descriptor_Class klass;
|
||||||
|
Eet_Data_Descriptor *detail_eed;
|
||||||
|
|
||||||
|
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&klass, Clouseau_Focus_List_Item);
|
||||||
|
detail_eed = eet_data_descriptor_file_new(&klass);
|
||||||
|
#define BASIC(field, type) EET_DATA_DESCRIPTOR_ADD_BASIC(detail_eed, Clouseau_Focus_List_Item, #field , field, type)
|
||||||
|
|
||||||
|
BASIC(helper_name, EET_T_STRING);
|
||||||
|
BASIC(ptr, EET_T_LONG_LONG);
|
||||||
|
|
||||||
|
#undef BASIC
|
||||||
|
|
||||||
|
|
||||||
|
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&klass, Clouseau_Focus_Managers);
|
||||||
|
manager_list = eet_data_descriptor_file_new(&klass);
|
||||||
|
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_LIST(manager_list, Clouseau_Focus_Managers, "managers", managers, detail_eed);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_init_data_descriptors(void)
|
||||||
|
{
|
||||||
|
_init_manager_list_descriptors();
|
||||||
|
_init_manager_details_descriptors();
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,10 +8,10 @@ static Elm_Genlist_Item_Class *itc;
|
||||||
static char*
|
static char*
|
||||||
_text_get(void *data, Elm_Genlist *list EINA_UNUSED, const char *part EINA_UNUSED)
|
_text_get(void *data, Elm_Genlist *list EINA_UNUSED, const char *part EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Efl_Ui_Focus_Manager *manager = data;
|
Clouseau_Focus_List_Item *it = data;
|
||||||
Eina_Strbuf *res = eina_strbuf_new();
|
Eina_Strbuf *res = eina_strbuf_new();
|
||||||
|
|
||||||
eina_strbuf_append_printf(res, "%p", manager);
|
eina_strbuf_append_printf(res, "%s - %p", it->helper_name, (void*)it->ptr);
|
||||||
return eina_strbuf_release(res);
|
return eina_strbuf_release(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,17 +97,21 @@ ui_create(Instance *inst, Evas_Object *obj)
|
||||||
static void
|
static void
|
||||||
_sel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
_sel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
{
|
{
|
||||||
com_defailt_manager(data, elm_object_item_data_get(event_info));
|
Clouseau_Focus_List_Item *it = elm_object_item_data_get(event_info);
|
||||||
|
com_defailt_manager(data, (void*)it->ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ui_managers_add(Instance *inst, Efl_Ui_Focus_Manager **manager, int size)
|
ui_managers_add(Instance *inst, Clouseau_Focus_Managers *clouseau_managers)
|
||||||
{
|
{
|
||||||
|
Clouseau_Focus_List_Item *it;
|
||||||
|
Eina_List *n;
|
||||||
|
|
||||||
elm_genlist_clear(managers);
|
elm_genlist_clear(managers);
|
||||||
|
|
||||||
for (int i = 0; i < size; ++i)
|
EINA_LIST_FOREACH(clouseau_managers->managers, n, it)
|
||||||
{
|
{
|
||||||
elm_genlist_item_append(managers, itc, manager[i], NULL, 0, _sel, inst);
|
elm_genlist_item_append(managers, itc, it, NULL, 0, _sel, inst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,7 @@ typedef enum {
|
||||||
|
|
||||||
EAPI void tree_view_update(Instance *inst, Evas_Object *scroller);
|
EAPI void tree_view_update(Instance *inst, Evas_Object *scroller);
|
||||||
EAPI void tree_view_relation_display(Instance *inst, Relations rel);
|
EAPI void tree_view_relation_display(Instance *inst, Relations rel);
|
||||||
|
EAPI void ui_managers_add(Instance *inst, Clouseau_Focus_Managers *clouseau_managers);
|
||||||
EAPI void ui_managers_add(Instance *inst, Efl_Ui_Focus_Manager **manager, int size);
|
|
||||||
EAPI void ui_manager_data_arrived(Instance *inst, Clouseau_Focus_Manager_Data *data);
|
EAPI void ui_manager_data_arrived(Instance *inst, Clouseau_Focus_Manager_Data *data);
|
||||||
EAPI Evas_Object* ui_create(Instance *inst, Evas_Object *obj);
|
EAPI Evas_Object* ui_create(Instance *inst, Evas_Object *obj);
|
||||||
|
|
||||||
|
|
|
@ -9,19 +9,19 @@ static Instance inst;
|
||||||
static int _focus_manager_list_op = EINA_DEBUG_OPCODE_INVALID;
|
static int _focus_manager_list_op = EINA_DEBUG_OPCODE_INVALID;
|
||||||
static int _focus_manager_detail_op = EINA_DEBUG_OPCODE_INVALID;
|
static int _focus_manager_detail_op = EINA_DEBUG_OPCODE_INVALID;
|
||||||
|
|
||||||
static Eet_Data_Descriptor *manager_details = NULL;
|
static Eet_Data_Descriptor *manager_details = NULL, *manager_list = NULL;
|
||||||
#include "../../clouseau_focus_serialization.x"
|
#include "../../clouseau_focus_serialization.x"
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_main_loop_focus_manager_list_cb(Eina_Debug_Session *session, int src EINA_UNUSED, void *buffer, int size)
|
_main_loop_focus_manager_list_cb(Eina_Debug_Session *session, int src EINA_UNUSED, void *buffer, int size)
|
||||||
{
|
{
|
||||||
int nb_managers = size / sizeof(Efl_Ui_Focus_Manager*);
|
|
||||||
Efl_Ui_Focus_Manager *manager_arr[nb_managers];
|
|
||||||
Clouseau_Extension *ext = eina_debug_session_data_get(session);
|
Clouseau_Extension *ext = eina_debug_session_data_get(session);
|
||||||
|
Clouseau_Focus_Managers *managers;
|
||||||
|
if (!manager_list) _init_manager_list_descriptors();
|
||||||
|
|
||||||
memcpy(manager_arr, buffer, size);
|
managers = eet_data_descriptor_decode(manager_list, buffer, size);
|
||||||
|
|
||||||
ui_managers_add(ext->data, manager_arr, nb_managers);
|
ui_managers_add(ext->data, managers);
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue