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;
|
||||
} 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, ...);
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ static int _focus_manager_detail_op = EINA_DEBUG_OPCODE_INVALID;
|
|||
|
||||
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"
|
||||
|
||||
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)
|
||||
{
|
||||
Eina_Iterator *obj_iterator, *manager_iterator;
|
||||
Eina_Array *array;
|
||||
Clouseau_Focus_Managers *managers;
|
||||
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();
|
||||
manager_iterator = eina_iterator_filter_new(obj_iterator, _only_manager, NULL, NULL);
|
||||
|
||||
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)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
static void
|
||||
_init_data_descriptors(void)
|
||||
_init_manager_details_descriptors(void)
|
||||
{
|
||||
Eet_Data_Descriptor_Class klass;
|
||||
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, "class_name", class_name, EET_T_STRING);
|
||||
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*
|
||||
_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_append_printf(res, "%p", manager);
|
||||
eina_strbuf_append_printf(res, "%s - %p", it->helper_name, (void*)it->ptr);
|
||||
return eina_strbuf_release(res);
|
||||
}
|
||||
|
||||
|
@ -97,17 +97,21 @@ ui_create(Instance *inst, Evas_Object *obj)
|
|||
static void
|
||||
_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
|
||||
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);
|
||||
|
||||
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_relation_display(Instance *inst, Relations rel);
|
||||
|
||||
EAPI void ui_managers_add(Instance *inst, Efl_Ui_Focus_Manager **manager, int size);
|
||||
EAPI void ui_managers_add(Instance *inst, Clouseau_Focus_Managers *clouseau_managers);
|
||||
EAPI void ui_manager_data_arrived(Instance *inst, Clouseau_Focus_Manager_Data *data);
|
||||
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_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"
|
||||
|
||||
static Eina_Bool
|
||||
_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_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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue